public override void Update(float deltaTime) { if (!AngularSpeed.NearZero()) { Quaternion rotation = Owner.Rotation; float angle = AngularSpeed * deltaTime; // Create quaternion for incremental rotation // (Rotate about up axis) Quaternion inc = new Quaternion(Vector3.UnitZ, angle); rotation = Quaternion.Concatenate(rotation, inc); // Concatenate old and new quaternion Owner.Rotation = rotation; } // Updating position based on forward speed stays the same if (!ForwardSpeed.NearZero()) { Vector3 position = Owner.Position; position += Owner.Forward * ForwardSpeed * deltaTime; Owner.Position = position; } }
public void GreaterThan_ShouldReturnFalse_WhenComparingLesserValueWithGreaterValue() { var lesser = new AngularSpeed(50d); var greater = new AngularSpeed(70d); var result = lesser > greater; result.Should().BeFalse(); }
public void GreaterThan_ShouldReturnTrue_WhenComparingGreaterValueWithLesserValue() { var lesser = new AngularSpeed(50d); var greater = new AngularSpeed(70d); var result = greater > lesser; result.Should().BeTrue(); }
public void Accelerate_ShouldNotCallAccelerateOnBaseMode_WhenCurrentAngularSpeedIsGreaterThanCutOffAngularSpeed() { var currentAngularSpeed = new AngularSpeed(60d); _externalSystems.GetAngularSpeed().Returns(currentAngularSpeed); var threshold = new Threshold(0.6d); Sut().Accelerate(threshold); _baseMode.DidNotReceive().Accelerate(threshold); }
public override void Update(float deltaTime) { if (!AngularSpeed.NearZero()) { float rotation = Owner.Rotation; rotation += AngularSpeed * deltaTime; Owner.Rotation = rotation; } if (!ForwardSpeed.NearZero()) { Vector2 position = Owner.Position; position += Owner.Forward * ForwardSpeed * deltaTime; // Screen wrapping (for asteroids) var halfScreenWidth = Owner.Game.Renderer.Window.Width / 2; if (position.X < -halfScreenWidth) { position.X = halfScreenWidth - 2; } else if (position.X > halfScreenWidth) { position.X = -(halfScreenWidth - 2); } var halfScreenHeight = Owner.Game.Renderer.Window.Height / 2; if (position.Y < -halfScreenHeight) { position.Y = halfScreenHeight - 2; } else if (position.Y > halfScreenHeight) { position.Y = -(halfScreenHeight - 2); } Owner.Position = position; } }
static void Main(string[] args) { Console.WriteLine("You are runnning the Measurements example."); Console.WriteLine("=========================================="); Console.WriteLine(); #region Specific Measurement Type Examples #region Angle Angle <double> angle1 = (90, Degrees); Angle <double> angle2 = (0.5, Revolutions); Console.WriteLine(" Angle--------------------------------------"); Console.WriteLine(); Console.WriteLine(" angle1 = " + angle1); Console.WriteLine(" angle2 = " + angle2); Console.WriteLine(" angle1 + angle2 = " + (angle1 + angle2)); Console.WriteLine(" angle2 - angle1 = " + (angle2 - angle1)); Console.WriteLine(" angle1 * 2 = " + (angle1 * 2)); Console.WriteLine(" angle1 / 2 = " + (angle1 / 2)); Console.WriteLine(" angle1 > angle2 = " + (angle1 > angle2)); Console.WriteLine(" angle1 == angle2 = " + (angle1 == angle2)); Console.WriteLine(" angle1 * 2 == angle2 = " + (angle1 * 2 == angle2)); Console.WriteLine(" angle1 != angle2 = " + (angle1 != angle2)); Console.WriteLine(); #endregion #region Length Length <double> length1 = (1d, Meters); Length <double> length2 = (2d, Yards); Console.WriteLine(" Length--------------------------------------"); Console.WriteLine(); Console.WriteLine(" length1 = " + length1); Console.WriteLine(" length2 = " + length2); Console.WriteLine(" length1 + length2 = " + (length1 + length2)); Console.WriteLine(" length2 - length1 = " + (length2 - length1)); Console.WriteLine(" length1 * 2 = " + (length1 * 2)); Console.WriteLine(" length1 / 2 = " + (length1 / 2)); Console.WriteLine(" length1 > length2 = " + (length1 > length2)); Console.WriteLine(" length1 == length2 = " + (length1 == length2)); Console.WriteLine(" length1 * 2 == length2 = " + (length1 * 2 == length2)); Console.WriteLine(" length1 != length2 = " + (length1 != length2)); Console.WriteLine(); //object result = angle1 + length1; // WILL NOT COMPILE (this is a good thing) :) #endregion #region Mass Mass <double> mass1 = (1d, Grams); Mass <double> mass2 = (2d, Kilograms); Console.WriteLine(" Mass--------------------------------------"); Console.WriteLine(); Console.WriteLine(" mass1 = " + mass1); Console.WriteLine(" mass2 = " + mass2); Console.WriteLine(" mass1 + mass2 = " + (mass1 + mass2)); Console.WriteLine(" mass2 - mass1 = " + (mass2 - mass1)); Console.WriteLine(" mass1 * 2 = " + (mass1 * 2)); Console.WriteLine(" mass1 / 2 = " + (mass1 / 2)); Console.WriteLine(" mass1 > mass2 = " + (mass1 > mass2)); Console.WriteLine(" mass1 == mass2 = " + (mass1 == mass2)); Console.WriteLine(" mass1 * 2 == mass2 = " + (mass1 * 2 == mass2)); Console.WriteLine(" mass1 != mass2 = " + (mass1 != mass2)); Console.WriteLine(); #endregion #region Time Time <double> time1 = (1d, Seconds); Time <double> time2 = (2d, Minutes); Console.WriteLine(" Time--------------------------------------"); Console.WriteLine(); Console.WriteLine(" time1 = " + time1); Console.WriteLine(" time2 = " + time2); Console.WriteLine(" time1 + time2 = " + (time1 + time2)); Console.WriteLine(" time2 - time1 = " + (time2 - time1)); Console.WriteLine(" time1 * 2 = " + (time1 * 2)); Console.WriteLine(" time1 / 2 = " + (time1 / 2)); Console.WriteLine(" time1 > time2 = " + (time1 > time2)); Console.WriteLine(" time1 == time2 = " + (time1 == time2)); Console.WriteLine(" time1 * 2 == time2 = " + (time1 * 2 == time2)); Console.WriteLine(" time1 != time2 = " + (time1 != time2)); Console.WriteLine(); #endregion #region Area Area <double> area1 = (1d, Meters *Meters); Area <double> area2 = (2d, Yards *Yards); Console.WriteLine(" Area--------------------------------------"); Console.WriteLine(); Console.WriteLine(" area1 = " + area1); Console.WriteLine(" area2 = " + area2); Console.WriteLine(" area1 + area2 = " + (area1 + area2)); Console.WriteLine(" area2 - area1 = " + (area2 - area1)); Console.WriteLine(" area1 * 2 = " + (area1 * 2)); Console.WriteLine(" area1 / 2 = " + (area1 / 2)); Console.WriteLine(" area1 > area2 = " + (area1 > area2)); Console.WriteLine(" area1 == area2 = " + (area1 == area2)); Console.WriteLine(" area1 * 2 == area2 = " + (area1 * 2 == area2)); Console.WriteLine(" area1 != area2 = " + (area1 != area2)); Console.WriteLine(); #endregion #region Volume Volume <double> volume1 = (1d, Meters *Meters *Meters); Volume <double> volume2 = (2d, Yards *Yards *Yards); Console.WriteLine(" Volume--------------------------------------"); Console.WriteLine(); Console.WriteLine(" volume1 = " + volume1); Console.WriteLine(" volume2 = " + volume2); Console.WriteLine(" volume1 + volume2 = " + (volume1 + volume2)); Console.WriteLine(" volume2 - volume1 = " + (volume2 - volume1)); Console.WriteLine(" volume1 * 2 = " + (volume1 * 2)); Console.WriteLine(" volume1 / 2 = " + (volume1 / 2)); Console.WriteLine(" volume1 > volume2 = " + (volume1 > volume2)); Console.WriteLine(" volume1 == volume2 = " + (volume1 == volume2)); Console.WriteLine(" volume1 * 2 == volume2 = " + (volume1 * 2 == volume2)); Console.WriteLine(" volume1 != volume2 = " + (volume1 != volume2)); Area <double> area3 = volume1 / length1; Console.WriteLine(" volume1 / length1 = " + area3); Console.WriteLine(); #endregion #region Speed Speed <double> speed1 = (1d, Meters / Seconds); Speed <double> speed2 = (2d, Inches / Milliseconds); Console.WriteLine(" Speed--------------------------------------"); Console.WriteLine(); Console.WriteLine(" speed1 = " + speed1); Console.WriteLine(" speed2 = " + speed2); Console.WriteLine(" speed1 + speed2 = " + (speed1 + speed2)); Console.WriteLine(" speed2 - speed1 = " + (speed2 - speed1)); Console.WriteLine(" speed1 * 2 = " + (speed1 * 2)); Console.WriteLine(" speed1 / 2 = " + (speed1 / 2)); Console.WriteLine(" speed1 > speed2 = " + (speed1 > speed2)); Console.WriteLine(" speed1 == speed2 = " + (speed1 == speed2)); Console.WriteLine(" speed1 * 2 == speed2 = " + (speed1 * 2 == speed2)); Console.WriteLine(" speed1 != speed2 = " + (speed1 != speed2)); Console.WriteLine(" speed1 * time2 = " + (speed1 * time2)); Speed <double> speed3 = (6d, Knots); Console.WriteLine(" speed3 = " + speed3); Console.WriteLine(" speed1 + speed3 = " + (speed1 + speed3)); Console.WriteLine(); #endregion #region Acceleration Acceleration <double> acceleration1 = (5d, Meters / Seconds / Seconds); Acceleration <double> acceleration2 = (4d, Inches / Milliseconds / Milliseconds); Console.WriteLine(" Acceleration--------------------------------------"); Console.WriteLine(); Console.WriteLine(" acceleration1 = " + acceleration1); Console.WriteLine(" acceleration2 = " + acceleration2); Console.WriteLine(" acceleration1 + acceleration2 = " + (acceleration1 + acceleration2)); Console.WriteLine(" acceleration2 - acceleration1 = " + (acceleration2 - acceleration1)); Console.WriteLine(" acceleration1 * 2 = " + (acceleration1 * 2)); Console.WriteLine(" acceleration1 / 2 = " + (acceleration1 / 2)); Console.WriteLine(" acceleration1 > acceleration2 = " + (acceleration1 > acceleration2)); Console.WriteLine(" acceleration1 == acceleration2 = " + (acceleration1 == acceleration2)); Console.WriteLine(" acceleration1 * 2 == acceleration2 = " + (acceleration1 * 2 == acceleration2)); Console.WriteLine(" acceleration1 != acceleration2 = " + (acceleration1 != acceleration2)); Console.WriteLine(" acceleration1 * time2 = " + (acceleration1 * time2)); Console.WriteLine(); #endregion #region Force Force <double> force1 = (1d, Kilograms *Meters / Seconds / Seconds); Force <double> force2 = (2d, Newtons); Console.WriteLine(" Force--------------------------------------"); Console.WriteLine(); Console.WriteLine(" force1 = " + force1); Console.WriteLine(" force2 = " + force2); Console.WriteLine(" force1 + force2 = " + (force1 + force2)); Console.WriteLine(" force2 - force1 = " + (force2 - force1)); Console.WriteLine(" force1 * 2 = " + (force1 * 2)); Console.WriteLine(" force1 / 2 = " + (force1 / 2)); Console.WriteLine(" force1 > force2 = " + (force1 > force2)); Console.WriteLine(" force1 == force2 = " + (force1 == force2)); Console.WriteLine(" force1 * 2 == force2 = " + (force1 * 2 == force2)); Console.WriteLine(" force1 != force2 = " + (force1 != force2)); Console.WriteLine(); #endregion #region Electric Current ElectricCurrent <double> electricCurrent1 = (5d, Coulombs / Seconds); ElectricCurrent <double> electricCurrent2 = (4d, Amperes); Console.WriteLine(" ElectricCurrent--------------------------------------"); Console.WriteLine(); Console.WriteLine(" electricCurrent1 = " + electricCurrent1); Console.WriteLine(" electricCurrent2 = " + electricCurrent2); Console.WriteLine(" electricCurrent1 + electricCurrent2 = " + (electricCurrent1 + electricCurrent2)); Console.WriteLine(" acceleration2 - electricCurrent1 = " + (electricCurrent2 - electricCurrent1)); Console.WriteLine(" electricCurrent1 * 2 = " + (electricCurrent1 * 2)); Console.WriteLine(" electricCurrent1 / 2 = " + (electricCurrent1 / 2)); Console.WriteLine(" electricCurrent1 > electricCurrent2 = " + (electricCurrent1 > electricCurrent2)); Console.WriteLine(" electricCurrent1 == electricCurrent2 = " + (electricCurrent1 == electricCurrent2)); Console.WriteLine(" electricCurrent1 * 2 == electricCurrent2 = " + (electricCurrent1 * 2 == electricCurrent2)); Console.WriteLine(" electricCurrent1 != electricCurrent2 = " + (electricCurrent1 != electricCurrent2)); Console.WriteLine(); #endregion #region AngularSpeed AngularSpeed <double> angularSpeed1 = (10d, Radians / Seconds); AngularSpeed <double> angularSpeed2 = (2200d, Degrees / Milliseconds); Console.WriteLine(" AngularSpeed--------------------------------------"); Console.WriteLine(); Console.WriteLine(" angularSpeed1 = " + angularSpeed1); Console.WriteLine(" angularSpeed2 = " + angularSpeed2); Console.WriteLine(" angularSpeed1 + angularSpeed2 = " + (angularSpeed1 + angularSpeed2)); Console.WriteLine(" angularSpeed2 - angularSpeed1 = " + (angularSpeed2 - angularSpeed1)); Console.WriteLine(" angularSpeed1 * 2 = " + (angularSpeed1 * 2)); Console.WriteLine(" angularSpeed1 / 2 = " + (angularSpeed1 / 2)); Console.WriteLine(" angularSpeed1 > angularSpeed2 = " + (angularSpeed1 > angularSpeed2)); Console.WriteLine(" angularSpeed1 == angularSpeed2 = " + (angularSpeed1 == angularSpeed2)); Console.WriteLine(" angularSpeed1 * 2 == angularSpeed2 = " + (angularSpeed1 * 2 == angularSpeed2)); Console.WriteLine(" angularSpeed1 != angularSpeed2 = " + (angularSpeed1 != angularSpeed2)); Console.WriteLine(" angularSpeed1 * time2 = " + (angularSpeed1 * time2)); Console.WriteLine(); #endregion #region AngularAcceleration AngularAcceleration <double> angularAcceleration1 = (5000d, Radians / Seconds / Seconds); AngularAcceleration <double> angularAcceleration2 = (.4d, Degrees / Milliseconds / Milliseconds); Console.WriteLine(" AngularAcceleration--------------------------------------"); Console.WriteLine(); Console.WriteLine(" angularAcceleration1 = " + angularAcceleration1); Console.WriteLine(" angularAcceleration2 = " + angularAcceleration2); Console.WriteLine(" angularAcceleration1 + angularAcceleration2 = " + (angularAcceleration1 + angularAcceleration2)); Console.WriteLine(" angularAcceleration2 - angularAcceleration1 = " + (angularAcceleration2 - angularAcceleration1)); Console.WriteLine(" angularAcceleration1 * 2 = " + (angularAcceleration1 * 2)); Console.WriteLine(" angularAcceleration1 / 2 = " + (angularAcceleration1 / 2)); Console.WriteLine(" angularAcceleration1 > angularAcceleration2 = " + (angularAcceleration1 > angularAcceleration2)); Console.WriteLine(" angularAcceleration1 == angularAcceleration2 = " + (angularAcceleration1 == angularAcceleration2)); Console.WriteLine(" angularAcceleration1 * 2 == angularAcceleration2 = " + (angularAcceleration1 * 2 == angularAcceleration2)); Console.WriteLine(" angularAcceleration1 != angularAcceleration2 = " + (angularAcceleration1 != angularAcceleration2)); Console.WriteLine(" angularAcceleration1 * time2 = " + (angularAcceleration1 * time2)); Console.WriteLine(); #endregion #region Desnity Density <double> density1 = (5d, Kilograms / Meters / Meters / Meters); Density <double> density2 = (2000d, Grams / Meters / Meters / Meters); Console.WriteLine(" Density--------------------------------------"); Console.WriteLine(); Console.WriteLine(" density1 = " + density1); Console.WriteLine(" density2 = " + density2); Console.WriteLine(" density1 + density2 = " + (density1 + density2)); Console.WriteLine(" density2 - density1 = " + (density2 - density1)); Console.WriteLine(" density1 * 2 = " + (density1 * 2)); Console.WriteLine(" density1 / 2 = " + (density1 / 2)); Console.WriteLine(" density1 > density2 = " + (density1 > density2)); Console.WriteLine(" density1 == density2 = " + (density1 == density2)); Console.WriteLine(" density1 * 2 == density2 = " + (density1 * 2 == density2)); Console.WriteLine(" density1 != density2 = " + (density1 != density2)); Console.WriteLine(); #endregion #endregion #region Static Unit Conversion Methods { // Examples of static measurement unit conversion methods // Note: I strongly recommend using the measurement types // versus just the conversion methods if you have the // ability to do so. You don't have type-safeness with // further operations you do with these values. double result1 = Measurement.Convert(7d, Radians, // from Degrees); // to double result2 = Measurement.Convert(8d, Meters / Seconds, // from Miles / Hours); // to double result3 = Measurement.Convert(9d, Kilograms * Meters / Seconds / Seconds, // from Grams * Miles / Hours / Hours); // to } #endregion #region Syntax Sugar Example (removing the generic type via alias) // If you hate seeing the "<float>" or "<double>" you can add syntax // sugar to your files with an alias in C#: // // using Speedf = Towel.Measurements.Speed<float>; Speedf speedf = (1f, Meters / Seconds); #endregion #region Vectors Examples // You can use measurements inside Vectors in Towel. Vector <Speed <float> > velocity1 = new Vector <Speed <float> >( (1f, Meters / Seconds), (2f, Meters / Seconds), (3f, Meters / Seconds)); Vector <Speedf> velocity2 = new Vector <Speedf>( (.1f, Centimeters / Seconds), (.2f, Centimeters / Seconds), (.3f, Centimeters / Seconds)); Vector <Speed <float> > velocity3 = velocity1 + velocity2; #endregion #region Parsing string angle1String = angle1.ToString(); Angle <double> .TryParse(angle1String, out Angle <double> angle1Parsed); string length1String = length1.ToString(); Length <double> .TryParse(length1String, out Length <double> length1Parsed); string density1String = density1.ToString(); Density <double> .TryParse(density1String, out Density <double> density1Parsed); string speedString = "20.5 Meters / Seconds"; Speed <float> .TryParse(speedString, out Speed <float> parsedSpeed); string forceString = ".1234 Kilograms * Meters / Seconds / Seconds"; Force <decimal> .TryParse(forceString, out Force <decimal> parsedForce); string densityString = "12.344 Kilograms / Centimeters / Centimeters / Centimeters"; Density <double> .TryParse(densityString, out Density <double> parsedDensity); #endregion Console.WriteLine(); Console.WriteLine("================================================="); Console.WriteLine("Example Complete..."); Console.ReadLine(); }
public static AngularSpeed Min(AngularSpeed a, AngularSpeed b) { return(new AngularSpeed(Mathf.Min(a.Float, b.Float))); }
public static AngularSpeed Clamp01(AngularSpeed value) { return(new AngularSpeed(Mathf.Clamp01(value.Float))); }
public static AngularSpeed LerpUnclamped(AngularSpeed a, AngularSpeed b, float t) { return(new AngularSpeed(Mathf.LerpUnclamped(a.Float, b.Float, t))); }
public static AngularSpeed Clamp(AngularSpeed value, AngularSpeed min, AngularSpeed max) { return(new AngularSpeed(Mathf.Clamp(value.Float, min.Float, max.Float))); }
protected void SetScalarValue(DependencyProperty property, AngularSpeed? quantity) { // we set this flag to prevent from setting scalar value changing quantity values. this.isUpdatingScalarValue = true; var value = quantity != null ? this.Unit.GetScalarValue(quantity.Value) : (double?)null; this.SetCurrentValue(property, value); this.isUpdatingScalarValue = false; }
public static void Main() { Console.WriteLine("You are runnning the Measurements example."); Console.WriteLine("=========================================="); Console.WriteLine(); #region Static Unit Conversion Methods { Console.WriteLine(" Static Conversion Methods-------------------------------"); Console.WriteLine(); var a = Measurement.Convert(7d, from: Radians, to: Degrees); Console.WriteLine(" var a = Measurement.Convert(7d,"); Console.WriteLine(" from: Radians,"); Console.WriteLine(" to: Degrees)"); Console.WriteLine(); var b = Measurement.Convert(8d, from: Meters / Seconds, to: Miles / Hours); Console.WriteLine(" var b = Measurement.Convert(8d,"); Console.WriteLine(" from: Meters / Seconds,"); Console.WriteLine(" to: Miles / Hours)"); Console.WriteLine(); var c = Measurement.Convert(9d, from: Kilograms * Meters / Seconds / Seconds, to: Grams * Miles / Hours / Hours); Console.WriteLine(" var b = Measurement.Convert(9d,"); Console.WriteLine(" from: Kilograms * Meters / Seconds / Seconds,"); Console.WriteLine(" to: Grams * Miles / Hours / Hours)"); Console.WriteLine(); Console.WriteLine($" a: {a}"); Console.WriteLine($" b: {b}"); Console.WriteLine($" c: {c}"); Console.WriteLine(); } #endregion #region Specific Measurement Type Examples #region Angle Angle <double> angle1 = (90, Degrees); Angle <double> angle2 = (0.5, Revolutions); Console.WriteLine(" Angle--------------------------------------"); Console.WriteLine(); Console.WriteLine(" angle1 = " + angle1); Console.WriteLine(" angle2 = " + angle2); Console.WriteLine(" angle1 + angle2 = " + (angle1 + angle2)); Console.WriteLine(" angle2 - angle1 = " + (angle2 - angle1)); Console.WriteLine(" angle1 * 2 = " + (angle1 * 2)); Console.WriteLine(" angle1 / 2 = " + (angle1 / 2)); Console.WriteLine(" angle1 > angle2 = " + (angle1 > angle2)); Console.WriteLine(" angle1 == angle2 = " + (angle1 == angle2)); Console.WriteLine(" angle1 * 2 == angle2 = " + (angle1 * 2 == angle2)); Console.WriteLine(" angle1 != angle2 = " + (angle1 != angle2)); Console.WriteLine(); #endregion #region Length Length <double> length1 = (1d, Meters); Length <double> length2 = (2d, Yards); Console.WriteLine(" Length--------------------------------------"); Console.WriteLine(); Console.WriteLine(" length1 = " + length1); Console.WriteLine(" length2 = " + length2); Console.WriteLine(" length1 + length2 = " + (length1 + length2)); Console.WriteLine(" length2 - length1 = " + (length2 - length1)); Console.WriteLine(" length1 * 2 = " + (length1 * 2)); Console.WriteLine(" length1 / 2 = " + (length1 / 2)); Console.WriteLine(" length1 > length2 = " + (length1 > length2)); Console.WriteLine(" length1 == length2 = " + (length1 == length2)); Console.WriteLine(" length1 * 2 == length2 = " + (length1 * 2 == length2)); Console.WriteLine(" length1 != length2 = " + (length1 != length2)); Console.WriteLine(); // object result = angle1 + length1; // WILL NOT COMPILE (this is a good thing) :) #endregion #region Mass Mass <double> mass1 = (1d, Grams); Mass <double> mass2 = (2d, Kilograms); Console.WriteLine(" Mass--------------------------------------"); Console.WriteLine(); Console.WriteLine(" mass1 = " + mass1); Console.WriteLine(" mass2 = " + mass2); Console.WriteLine(" mass1 + mass2 = " + (mass1 + mass2)); Console.WriteLine(" mass2 - mass1 = " + (mass2 - mass1)); Console.WriteLine(" mass1 * 2 = " + (mass1 * 2)); Console.WriteLine(" mass1 / 2 = " + (mass1 / 2)); Console.WriteLine(" mass1 > mass2 = " + (mass1 > mass2)); Console.WriteLine(" mass1 == mass2 = " + (mass1 == mass2)); Console.WriteLine(" mass1 * 2 == mass2 = " + (mass1 * 2 == mass2)); Console.WriteLine(" mass1 != mass2 = " + (mass1 != mass2)); Console.WriteLine(); #endregion #region Time Time <double> time1 = (1d, Seconds); Time <double> time2 = (2d, Minutes); Console.WriteLine(" Time--------------------------------------"); Console.WriteLine(); Console.WriteLine(" time1 = " + time1); Console.WriteLine(" time2 = " + time2); Console.WriteLine(" time1 + time2 = " + (time1 + time2)); Console.WriteLine(" time2 - time1 = " + (time2 - time1)); Console.WriteLine(" time1 * 2 = " + (time1 * 2)); Console.WriteLine(" time1 / 2 = " + (time1 / 2)); Console.WriteLine(" time1 > time2 = " + (time1 > time2)); Console.WriteLine(" time1 == time2 = " + (time1 == time2)); Console.WriteLine(" time1 * 2 == time2 = " + (time1 * 2 == time2)); Console.WriteLine(" time1 != time2 = " + (time1 != time2)); Console.WriteLine(); #endregion #region Area Area <double> area1 = (1d, Meters *Meters); Area <double> area2 = (2d, Yards *Yards); Console.WriteLine(" Area--------------------------------------"); Console.WriteLine(); Console.WriteLine(" area1 = " + area1); Console.WriteLine(" area2 = " + area2); Console.WriteLine(" area1 + area2 = " + (area1 + area2)); Console.WriteLine(" area2 - area1 = " + (area2 - area1)); Console.WriteLine(" area1 * 2 = " + (area1 * 2)); Console.WriteLine(" area1 / 2 = " + (area1 / 2)); Console.WriteLine(" area1 > area2 = " + (area1 > area2)); Console.WriteLine(" area1 == area2 = " + (area1 == area2)); Console.WriteLine(" area1 * 2 == area2 = " + (area1 * 2 == area2)); Console.WriteLine(" area1 != area2 = " + (area1 != area2)); Console.WriteLine(); #endregion #region Volume Volume <double> volume1 = (1d, Meters *Meters *Meters); Volume <double> volume2 = (2d, Yards *Yards *Yards); Console.WriteLine(" Volume--------------------------------------"); Console.WriteLine(); Console.WriteLine(" volume1 = " + volume1); Console.WriteLine(" volume2 = " + volume2); Console.WriteLine(" volume1 + volume2 = " + (volume1 + volume2)); Console.WriteLine(" volume2 - volume1 = " + (volume2 - volume1)); Console.WriteLine(" volume1 * 2 = " + (volume1 * 2)); Console.WriteLine(" volume1 / 2 = " + (volume1 / 2)); Console.WriteLine(" volume1 > volume2 = " + (volume1 > volume2)); Console.WriteLine(" volume1 == volume2 = " + (volume1 == volume2)); Console.WriteLine(" volume1 * 2 == volume2 = " + (volume1 * 2 == volume2)); Console.WriteLine(" volume1 != volume2 = " + (volume1 != volume2)); Area <double> area3 = volume1 / length1; Console.WriteLine(" volume1 / length1 = " + area3); Console.WriteLine(); #endregion #region Speed Speed <double> speed1 = (1d, Meters / Seconds); Speed <double> speed2 = (2d, Inches / Milliseconds); Console.WriteLine(" Speed--------------------------------------"); Console.WriteLine(); Console.WriteLine(" speed1 = " + speed1); Console.WriteLine(" speed2 = " + speed2); Console.WriteLine(" speed1 + speed2 = " + (speed1 + speed2)); Console.WriteLine(" speed2 - speed1 = " + (speed2 - speed1)); Console.WriteLine(" speed1 * 2 = " + (speed1 * 2)); Console.WriteLine(" speed1 / 2 = " + (speed1 / 2)); Console.WriteLine(" speed1 > speed2 = " + (speed1 > speed2)); Console.WriteLine(" speed1 == speed2 = " + (speed1 == speed2)); Console.WriteLine(" speed1 * 2 == speed2 = " + (speed1 * 2 == speed2)); Console.WriteLine(" speed1 != speed2 = " + (speed1 != speed2)); Console.WriteLine(" speed1 * time2 = " + (speed1 * time2)); Speed <double> speed3 = (6d, Knots); Console.WriteLine(" speed3 = " + speed3); Console.WriteLine(" speed1 + speed3 = " + (speed1 + speed3)); Console.WriteLine(); #endregion #region Acceleration Acceleration <double> acceleration1 = (5d, Meters / Seconds / Seconds); Acceleration <double> acceleration2 = (4d, Inches / Milliseconds / Milliseconds); Console.WriteLine(" Acceleration--------------------------------------"); Console.WriteLine(); Console.WriteLine(" acceleration1 = " + acceleration1); Console.WriteLine(" acceleration2 = " + acceleration2); Console.WriteLine(" acceleration1 + acceleration2 = " + (acceleration1 + acceleration2)); Console.WriteLine(" acceleration2 - acceleration1 = " + (acceleration2 - acceleration1)); Console.WriteLine(" acceleration1 * 2 = " + (acceleration1 * 2)); Console.WriteLine(" acceleration1 / 2 = " + (acceleration1 / 2)); Console.WriteLine(" acceleration1 > acceleration2 = " + (acceleration1 > acceleration2)); Console.WriteLine(" acceleration1 == acceleration2 = " + (acceleration1 == acceleration2)); Console.WriteLine(" acceleration1 * 2 == acceleration2 = " + (acceleration1 * 2 == acceleration2)); Console.WriteLine(" acceleration1 != acceleration2 = " + (acceleration1 != acceleration2)); Console.WriteLine(" acceleration1 * time2 = " + (acceleration1 * time2)); Console.WriteLine(); #endregion #region Force Force <double> force1 = (1d, Kilograms *Meters / Seconds / Seconds); Force <double> force2 = (2d, Newtons); Console.WriteLine(" Force--------------------------------------"); Console.WriteLine(); Console.WriteLine(" force1 = " + force1); Console.WriteLine(" force2 = " + force2); Console.WriteLine(" force1 + force2 = " + (force1 + force2)); Console.WriteLine(" force2 - force1 = " + (force2 - force1)); Console.WriteLine(" force1 * 2 = " + (force1 * 2)); Console.WriteLine(" force1 / 2 = " + (force1 / 2)); Console.WriteLine(" force1 > force2 = " + (force1 > force2)); Console.WriteLine(" force1 == force2 = " + (force1 == force2)); Console.WriteLine(" force1 * 2 == force2 = " + (force1 * 2 == force2)); Console.WriteLine(" force1 != force2 = " + (force1 != force2)); Console.WriteLine(); #endregion #region Electric Current ElectricCurrent <double> electricCurrent1 = (5d, Coulombs / Seconds); ElectricCurrent <double> electricCurrent2 = (4d, Amperes); Console.WriteLine(" ElectricCurrent--------------------------------------"); Console.WriteLine(); Console.WriteLine(" electricCurrent1 = " + electricCurrent1); Console.WriteLine(" electricCurrent2 = " + electricCurrent2); Console.WriteLine(" electricCurrent1 + electricCurrent2 = " + (electricCurrent1 + electricCurrent2)); Console.WriteLine(" acceleration2 - electricCurrent1 = " + (electricCurrent2 - electricCurrent1)); Console.WriteLine(" electricCurrent1 * 2 = " + (electricCurrent1 * 2)); Console.WriteLine(" electricCurrent1 / 2 = " + (electricCurrent1 / 2)); Console.WriteLine(" electricCurrent1 > electricCurrent2 = " + (electricCurrent1 > electricCurrent2)); Console.WriteLine(" electricCurrent1 == electricCurrent2 = " + (electricCurrent1 == electricCurrent2)); Console.WriteLine(" electricCurrent1 * 2 == electricCurrent2 = " + (electricCurrent1 * 2 == electricCurrent2)); Console.WriteLine(" electricCurrent1 != electricCurrent2 = " + (electricCurrent1 != electricCurrent2)); Console.WriteLine(); #endregion #region AngularSpeed AngularSpeed <double> angularSpeed1 = (10d, Radians / Seconds); AngularSpeed <double> angularSpeed2 = (2200d, Degrees / Milliseconds); Console.WriteLine(" AngularSpeed--------------------------------------"); Console.WriteLine(); Console.WriteLine(" angularSpeed1 = " + angularSpeed1); Console.WriteLine(" angularSpeed2 = " + angularSpeed2); Console.WriteLine(" angularSpeed1 + angularSpeed2 = " + (angularSpeed1 + angularSpeed2)); Console.WriteLine(" angularSpeed2 - angularSpeed1 = " + (angularSpeed2 - angularSpeed1)); Console.WriteLine(" angularSpeed1 * 2 = " + (angularSpeed1 * 2)); Console.WriteLine(" angularSpeed1 / 2 = " + (angularSpeed1 / 2)); Console.WriteLine(" angularSpeed1 > angularSpeed2 = " + (angularSpeed1 > angularSpeed2)); Console.WriteLine(" angularSpeed1 == angularSpeed2 = " + (angularSpeed1 == angularSpeed2)); Console.WriteLine(" angularSpeed1 * 2 == angularSpeed2 = " + (angularSpeed1 * 2 == angularSpeed2)); Console.WriteLine(" angularSpeed1 != angularSpeed2 = " + (angularSpeed1 != angularSpeed2)); Console.WriteLine(" angularSpeed1 * time2 = " + (angularSpeed1 * time2)); Console.WriteLine(); #endregion #region AngularAcceleration AngularAcceleration <double> angularAcceleration1 = (5000d, Radians / Seconds / Seconds); AngularAcceleration <double> angularAcceleration2 = (.4d, Degrees / Milliseconds / Milliseconds); Console.WriteLine(" AngularAcceleration--------------------------------------"); Console.WriteLine(); Console.WriteLine(" angularAcceleration1 = " + angularAcceleration1); Console.WriteLine(" angularAcceleration2 = " + angularAcceleration2); Console.WriteLine(" angularAcceleration1 + angularAcceleration2 = " + (angularAcceleration1 + angularAcceleration2)); Console.WriteLine(" angularAcceleration2 - angularAcceleration1 = " + (angularAcceleration2 - angularAcceleration1)); Console.WriteLine(" angularAcceleration1 * 2 = " + (angularAcceleration1 * 2)); Console.WriteLine(" angularAcceleration1 / 2 = " + (angularAcceleration1 / 2)); Console.WriteLine(" angularAcceleration1 > angularAcceleration2 = " + (angularAcceleration1 > angularAcceleration2)); Console.WriteLine(" angularAcceleration1 == angularAcceleration2 = " + (angularAcceleration1 == angularAcceleration2)); Console.WriteLine(" angularAcceleration1 * 2 == angularAcceleration2 = " + (angularAcceleration1 * 2 == angularAcceleration2)); Console.WriteLine(" angularAcceleration1 != angularAcceleration2 = " + (angularAcceleration1 != angularAcceleration2)); Console.WriteLine(" angularAcceleration1 * time2 = " + (angularAcceleration1 * time2)); Console.WriteLine(); #endregion #region Desnity Density <double> density1 = (5d, Kilograms / Meters / Meters / Meters); Density <double> density2 = (2000d, Grams / Meters / Meters / Meters); Console.WriteLine(" Density--------------------------------------"); Console.WriteLine(); Console.WriteLine(" density1 = " + density1); Console.WriteLine(" density2 = " + density2); Console.WriteLine(" density1 + density2 = " + (density1 + density2)); Console.WriteLine(" density2 - density1 = " + (density2 - density1)); Console.WriteLine(" density1 * 2 = " + (density1 * 2)); Console.WriteLine(" density1 / 2 = " + (density1 / 2)); Console.WriteLine(" density1 > density2 = " + (density1 > density2)); Console.WriteLine(" density1 == density2 = " + (density1 == density2)); Console.WriteLine(" density1 * 2 == density2 = " + (density1 * 2 == density2)); Console.WriteLine(" density1 != density2 = " + (density1 != density2)); Console.WriteLine(); #endregion #endregion #region Syntax Sugar Example (removing the generic type via alias) // If you hate seeing the "<float>" or "<double>" you can add syntax // sugar to your files with an alias in C#: // // using Speedf = Towel.Measurements.Speed<float>; Speedf speedf = (1f, Meters / Seconds); #endregion #region Vectors Examples // You can use measurements inside Vectors in Towel. Vector <Speed <float> > velocity1 = new( (1f, Meters / Seconds), (2f, Meters / Seconds), (3f, Meters / Seconds)); Vector <Speedf> velocity2 = new( (.1f, Centimeters / Seconds), (.2f, Centimeters / Seconds), (.3f, Centimeters / Seconds)); Vector <Speed <float> > velocity3 = velocity1 + velocity2; #endregion #region Parsing { Console.WriteLine(" Parsing-------------------------------"); Console.WriteLine(); var(aSuccess, a) = Angle <double> .TryParse(angle1.ToString()); Console.WriteLine($" Angle<double>.TryParse({angle1}, out var {nameof(a)})"); var(bSuccess, b) = Length <double> .TryParse(length1.ToString()); Console.WriteLine($" Length<double>.TryParse({length1}, out var {nameof(b)})"); var(cSuccess, c) = Density <double> .TryParse(density1.ToString()); Console.WriteLine($" Density<double>.TryParse({density1}, out var {nameof(c)})"); string speedString = "20.5 Meters / Seconds"; var(dSuccess, d) = Speed <float> .TryParse(speedString); Console.WriteLine($" Speed<float>.TryParse({speedString}, out var {nameof(d)})"); string forceString = ".1234 Kilograms * Meters / Seconds / Seconds"; var(eSuccess, e) = Force <decimal> .TryParse(forceString); Console.WriteLine($" Force<decimal>.TryParse({forceString}, out var {nameof(e)})"); string densityString = "12.344 Kilograms / Centimeters / Centimeters / Centimeters"; var(fSuccess, f) = Density <double> .TryParse(densityString); Console.WriteLine($" Density<decimal>.TryParse({densityString}, out var {nameof(f)})"); Console.WriteLine(); Console.WriteLine($" a: {aSuccess}, {a}"); Console.WriteLine($" b: {bSuccess}, {b}"); Console.WriteLine($" c: {cSuccess}, {c}"); Console.WriteLine($" d: {dSuccess}, {d}"); Console.WriteLine($" e: {eSuccess}, {e}"); Console.WriteLine($" f: {fSuccess}, {f}"); Console.WriteLine(); } #endregion Console.WriteLine("================================================="); Console.WriteLine("Example Complete..."); Console.WriteLine(); ConsoleHelper.PromptPressToContinue(); }
public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer) { var stringValue = (string)reader.Value !; return(AngularSpeed.Parse(stringValue, serializer.Culture)); }
static void Main(string[] args) { Console.WriteLine("You are runnning the Measurements example."); Console.WriteLine("=========================================="); Console.WriteLine(); #region Specific Measurement Type Examples #region Angle Console.WriteLine(" Angle--------------------------------------"); Console.WriteLine(); Angle <double> angle1 = new Angle <double>(90, Degrees); Console.WriteLine(" angle1 = " + angle1); Angle <double> angle2 = new Angle <double>(0.5, Revolutions); Console.WriteLine(" angle2 = " + angle2); Console.WriteLine(" angle1 + angle2 = " + (angle1 + angle2)); Console.WriteLine(" angle2 - angle1 = " + (angle2 - angle1)); Console.WriteLine(" angle1 * 2 = " + (angle1 * 2)); Console.WriteLine(" angle1 / 2 = " + (angle1 / 2)); Console.WriteLine(" angle1 > angle2 = " + (angle1 > angle2)); Console.WriteLine(" angle1 == angle2 = " + (angle1 == angle2)); Console.WriteLine(" angle1 * 2 == angle2 = " + (angle1 * 2 == angle2)); Console.WriteLine(" angle1 != angle2 = " + (angle1 != angle2)); Console.WriteLine(); #endregion #region Length Console.WriteLine(" Length--------------------------------------"); Console.WriteLine(); Length <double> length1 = new Length <double>(1d, Meters); Console.WriteLine(" length1 = " + length1); Length <double> length2 = new Length <double>(2d, Yards); Console.WriteLine(" length2 = " + length2); Console.WriteLine(" length1 + length2 = " + (length1 + length2)); Console.WriteLine(" length2 - length1 = " + (length2 - length1)); Console.WriteLine(" length1 * 2 = " + (length1 * 2)); Console.WriteLine(" length1 / 2 = " + (length1 / 2)); Console.WriteLine(" length1 > length2 = " + (length1 > length2)); Console.WriteLine(" length1 == length2 = " + (length1 == length2)); Console.WriteLine(" length1 * 2 == length2 = " + (length1 * 2 == length2)); Console.WriteLine(" length1 != length2 = " + (length1 != length2)); Console.WriteLine(); //object result = angle1 + length1; // WILL NOT COMPILE (this is a good thing) :) #endregion #region Mass Console.WriteLine(" Mass--------------------------------------"); Console.WriteLine(); Mass <double> mass1 = new Mass <double>(1d, Grams); Console.WriteLine(" mass1 = " + mass1); Mass <double> mass2 = new Mass <double>(2d, Kilograms); Console.WriteLine(" mass2 = " + mass2); Console.WriteLine(" mass1 + mass2 = " + (mass1 + mass2)); Console.WriteLine(" mass2 - mass1 = " + (mass2 - mass1)); Console.WriteLine(" mass1 * 2 = " + (mass1 * 2)); Console.WriteLine(" mass1 / 2 = " + (mass1 / 2)); Console.WriteLine(" mass1 > mass2 = " + (mass1 > mass2)); Console.WriteLine(" mass1 == mass2 = " + (mass1 == mass2)); Console.WriteLine(" mass1 * 2 == mass2 = " + (mass1 * 2 == mass2)); Console.WriteLine(" mass1 != mass2 = " + (mass1 != mass2)); Console.WriteLine(); #endregion #region Time Console.WriteLine(" Time--------------------------------------"); Console.WriteLine(); Time <double> time1 = new Time <double>(1d, Seconds); Console.WriteLine(" time1 = " + time1); Time <double> time2 = new Time <double>(2d, Minutes); Console.WriteLine(" time2 = " + time2); Console.WriteLine(" time1 + time2 = " + (time1 + time2)); Console.WriteLine(" time2 - time1 = " + (time2 - time1)); Console.WriteLine(" time1 * 2 = " + (time1 * 2)); Console.WriteLine(" time1 / 2 = " + (time1 / 2)); Console.WriteLine(" time1 > time2 = " + (time1 > time2)); Console.WriteLine(" time1 == time2 = " + (time1 == time2)); Console.WriteLine(" time1 * 2 == time2 = " + (time1 * 2 == time2)); Console.WriteLine(" time1 != time2 = " + (time1 != time2)); Console.WriteLine(); #endregion #region Area Console.WriteLine(" Area--------------------------------------"); Console.WriteLine(); Area <double> area1 = new Area <double>(1d, Meters * Meters); Console.WriteLine(" area1 = " + area1); Area <double> area2 = new Area <double>(2d, Yards * Yards); Console.WriteLine(" area2 = " + area2); Console.WriteLine(" area1 + area2 = " + (area1 + area2)); Console.WriteLine(" area2 - area1 = " + (area2 - area1)); Console.WriteLine(" area1 * 2 = " + (area1 * 2)); Console.WriteLine(" area1 / 2 = " + (area1 / 2)); Console.WriteLine(" area1 > area2 = " + (area1 > area2)); Console.WriteLine(" area1 == area2 = " + (area1 == area2)); Console.WriteLine(" area1 * 2 == area2 = " + (area1 * 2 == area2)); Console.WriteLine(" area1 != area2 = " + (area1 != area2)); Console.WriteLine(); #endregion #region Volume Console.WriteLine(" Volume--------------------------------------"); Console.WriteLine(); Volume <double> volume1 = new Volume <double>(1d, Meters * Meters * Meters); Console.WriteLine(" volume1 = " + volume1); Volume <double> volume2 = new Volume <double>(2d, Yards * Yards * Yards); Console.WriteLine(" volume2 = " + volume2); Console.WriteLine(" volume1 + volume2 = " + (volume1 + volume2)); Console.WriteLine(" volume2 - volume1 = " + (volume2 - volume1)); Console.WriteLine(" volume1 * 2 = " + (volume1 * 2)); Console.WriteLine(" volume1 / 2 = " + (volume1 / 2)); Console.WriteLine(" volume1 > volume2 = " + (volume1 > volume2)); Console.WriteLine(" volume1 == volume2 = " + (volume1 == volume2)); Console.WriteLine(" volume1 * 2 == volume2 = " + (volume1 * 2 == volume2)); Console.WriteLine(" volume1 != volume2 = " + (volume1 != volume2)); Area <double> area3 = volume1 / length1; Console.WriteLine(" volume1 / length1 = " + area3); Console.WriteLine(); #endregion #region Speed Console.WriteLine(" Speed--------------------------------------"); Console.WriteLine(); Speed <double> speed1 = new Speed <double>(1d, Meters / Seconds); Console.WriteLine(" speed1 = " + speed1); Speed <double> speed2 = new Speed <double>(2d, Inches / Milliseconds); Console.WriteLine(" speed2 = " + speed2); Console.WriteLine(" speed1 + speed2 = " + (speed1 + speed2)); Console.WriteLine(" speed2 - speed1 = " + (speed2 - speed1)); Console.WriteLine(" speed1 * 2 = " + (speed1 * 2)); Console.WriteLine(" speed1 / 2 = " + (speed1 / 2)); Console.WriteLine(" speed1 > speed2 = " + (speed1 > speed2)); Console.WriteLine(" speed1 == speed2 = " + (speed1 == speed2)); Console.WriteLine(" speed1 * 2 == speed2 = " + (speed1 * 2 == speed2)); Console.WriteLine(" speed1 != speed2 = " + (speed1 != speed2)); Console.WriteLine(" speed1 * time2 = " + (speed1 * time2)); Speed <double> speed3 = new Speed <double>(6d, Knots); Console.WriteLine(" speed3 = " + speed3); Console.WriteLine(" speed1 + speed3 = " + (speed1 + speed3)); Console.WriteLine(); #endregion #region Acceleration Console.WriteLine(" Acceleration--------------------------------------"); Console.WriteLine(); Acceleration <double> acceleration1 = new Acceleration <double>(5d, Meters / Seconds / Seconds); Console.WriteLine(" acceleration1 = " + acceleration1); Acceleration <double> acceleration2 = new Acceleration <double>(4d, Inches / Milliseconds / Milliseconds); Console.WriteLine(" acceleration2 = " + acceleration2); Console.WriteLine(" acceleration1 + acceleration2 = " + (acceleration1 + acceleration2)); Console.WriteLine(" acceleration2 - acceleration1 = " + (acceleration2 - acceleration1)); Console.WriteLine(" acceleration1 * 2 = " + (acceleration1 * 2)); Console.WriteLine(" acceleration1 / 2 = " + (acceleration1 / 2)); Console.WriteLine(" acceleration1 > acceleration2 = " + (acceleration1 > acceleration2)); Console.WriteLine(" acceleration1 == acceleration2 = " + (acceleration1 == acceleration2)); Console.WriteLine(" acceleration1 * 2 == acceleration2 = " + (acceleration1 * 2 == acceleration2)); Console.WriteLine(" acceleration1 != acceleration2 = " + (acceleration1 != acceleration2)); Console.WriteLine(" acceleration1 * time2 = " + (acceleration1 * time2)); Console.WriteLine(); #endregion #region Force Console.WriteLine(" Force--------------------------------------"); Console.WriteLine(); Force <double> force1 = new Force <double>(1d, Kilograms * Meters / Seconds / Seconds); Console.WriteLine(" force1 = " + force1); Force <double> force2 = new Force <double>(2d, Newtons); Console.WriteLine(" force2 = " + force2); Console.WriteLine(" force1 + force2 = " + (force1 + force2)); Console.WriteLine(" force2 - force1 = " + (force2 - force1)); Console.WriteLine(" force1 * 2 = " + (force1 * 2)); Console.WriteLine(" force1 / 2 = " + (force1 / 2)); Console.WriteLine(" force1 > force2 = " + (force1 > force2)); Console.WriteLine(" force1 == force2 = " + (force1 == force2)); Console.WriteLine(" force1 * 2 == force2 = " + (force1 * 2 == force2)); Console.WriteLine(" force1 != force2 = " + (force1 != force2)); Console.WriteLine(); #endregion #region Electric Current Console.WriteLine(" ElectricCurrent--------------------------------------"); Console.WriteLine(); ElectricCurrent <double> electricCurrent1 = new ElectricCurrent <double>(5d, Coulombs / Seconds); Console.WriteLine(" electricCurrent1 = " + electricCurrent1); ElectricCurrent <double> electricCurrent2 = new ElectricCurrent <double>(4d, Amperes); Console.WriteLine(" electricCurrent2 = " + electricCurrent2); Console.WriteLine(" electricCurrent1 + electricCurrent2 = " + (electricCurrent1 + electricCurrent2)); Console.WriteLine(" acceleration2 - electricCurrent1 = " + (electricCurrent2 - electricCurrent1)); Console.WriteLine(" electricCurrent1 * 2 = " + (electricCurrent1 * 2)); Console.WriteLine(" electricCurrent1 / 2 = " + (electricCurrent1 / 2)); Console.WriteLine(" electricCurrent1 > electricCurrent2 = " + (electricCurrent1 > electricCurrent2)); Console.WriteLine(" electricCurrent1 == electricCurrent2 = " + (electricCurrent1 == electricCurrent2)); Console.WriteLine(" electricCurrent1 * 2 == electricCurrent2 = " + (electricCurrent1 * 2 == electricCurrent2)); Console.WriteLine(" electricCurrent1 != electricCurrent2 = " + (electricCurrent1 != electricCurrent2)); Console.WriteLine(); #endregion #region AngularSpeed Console.WriteLine(" AngularSpeed--------------------------------------"); Console.WriteLine(); AngularSpeed <double> angularSpeed1 = new AngularSpeed <double>(10d, Radians / Seconds); Console.WriteLine(" angularSpeed1 = " + angularSpeed1); AngularSpeed <double> angularSpeed2 = new AngularSpeed <double>(2200d, Degrees / Milliseconds); Console.WriteLine(" angularSpeed2 = " + angularSpeed2); Console.WriteLine(" angularSpeed1 + angularSpeed2 = " + (angularSpeed1 + angularSpeed2)); Console.WriteLine(" angularSpeed2 - angularSpeed1 = " + (angularSpeed2 - angularSpeed1)); Console.WriteLine(" angularSpeed1 * 2 = " + (angularSpeed1 * 2)); Console.WriteLine(" angularSpeed1 / 2 = " + (angularSpeed1 / 2)); Console.WriteLine(" angularSpeed1 > angularSpeed2 = " + (angularSpeed1 > angularSpeed2)); Console.WriteLine(" angularSpeed1 == angularSpeed2 = " + (angularSpeed1 == angularSpeed2)); Console.WriteLine(" angularSpeed1 * 2 == angularSpeed2 = " + (angularSpeed1 * 2 == angularSpeed2)); Console.WriteLine(" angularSpeed1 != angularSpeed2 = " + (angularSpeed1 != angularSpeed2)); Console.WriteLine(" angularSpeed1 * time2 = " + (angularSpeed1 * time2)); Console.WriteLine(); #endregion #region AngularAcceleration Console.WriteLine(" AngularAcceleration--------------------------------------"); Console.WriteLine(); AngularAcceleration <double> angularAcceleration1 = new AngularAcceleration <double>(5000d, Radians / Seconds / Seconds); Console.WriteLine(" angularAcceleration1 = " + angularAcceleration1); AngularAcceleration <double> angularAcceleration2 = new AngularAcceleration <double>(.4d, Degrees / Milliseconds / Milliseconds); Console.WriteLine(" angularAcceleration2 = " + angularAcceleration2); Console.WriteLine(" angularAcceleration1 + angularAcceleration2 = " + (angularAcceleration1 + angularAcceleration2)); Console.WriteLine(" angularAcceleration2 - angularAcceleration1 = " + (angularAcceleration2 - angularAcceleration1)); Console.WriteLine(" angularAcceleration1 * 2 = " + (angularAcceleration1 * 2)); Console.WriteLine(" angularAcceleration1 / 2 = " + (angularAcceleration1 / 2)); Console.WriteLine(" angularAcceleration1 > angularAcceleration2 = " + (angularAcceleration1 > angularAcceleration2)); Console.WriteLine(" angularAcceleration1 == angularAcceleration2 = " + (angularAcceleration1 == angularAcceleration2)); Console.WriteLine(" angularAcceleration1 * 2 == angularAcceleration2 = " + (angularAcceleration1 * 2 == angularAcceleration2)); Console.WriteLine(" angularAcceleration1 != angularAcceleration2 = " + (angularAcceleration1 != angularAcceleration2)); Console.WriteLine(" angularAcceleration1 * time2 = " + (angularAcceleration1 * time2)); Console.WriteLine(); #endregion #region Desnity Console.WriteLine(" Density--------------------------------------"); Console.WriteLine(); Density <double> density1 = new Density <double>(5d, Kilograms / Meters / Meters / Meters); Console.WriteLine(" density1 = " + density1); Density <double> density2 = new Density <double>(2000d, Grams / Meters / Meters / Meters); Console.WriteLine(" density2 = " + density2); Console.WriteLine(" density1 + density2 = " + (density1 + density2)); Console.WriteLine(" density2 - density1 = " + (density2 - density1)); Console.WriteLine(" density1 * 2 = " + (density1 * 2)); Console.WriteLine(" density1 / 2 = " + (density1 / 2)); Console.WriteLine(" density1 > density2 = " + (density1 > density2)); Console.WriteLine(" density1 == density2 = " + (density1 == density2)); Console.WriteLine(" density1 * 2 == density2 = " + (density1 * 2 == density2)); Console.WriteLine(" density1 != density2 = " + (density1 != density2)); Console.WriteLine(); #endregion #endregion #region Syntax Sugar Example (removing the generic type via alias) // If you hate seeing the "<float>" or "<double>" you can add syntax // sugar to your files with an alias in C#: // // using Speedf = Towel.Measurements.Speed<float>; Speedf speedf = new Speedf(1f, Meters / Seconds); #endregion #region Vectors Examples // You can use measurements inside Vectors in Towel. Vector <Speed <float> > velocity1 = new Vector <Speed <float> >( new Speed <float>(1f, Meters / Seconds), new Speed <float>(2f, Meters / Seconds), new Speed <float>(3f, Meters / Seconds)); Vector <Speedf> velocity2 = new Vector <Speedf>( new Speedf(.1f, Centimeters / Seconds), new Speedf(.2f, Centimeters / Seconds), new Speedf(.3f, Centimeters / Seconds)); Vector <Speed <float> > velocity3 = velocity1 + velocity2; #endregion Console.WriteLine(); Console.WriteLine("================================================="); Console.WriteLine("Example Complete..."); Console.ReadLine(); }
public MDynamicsMode(AngularSpeed cutOffAngularSpeed, IDriveMode baseMode, IExternalSystems externalSystems) { _cutOffAngularSpeed = cutOffAngularSpeed ?? throw new ArgumentNullException(nameof(cutOffAngularSpeed)); _baseMode = baseMode ?? throw new ArgumentNullException(nameof(baseMode)); _externalSystems = externalSystems ?? throw new ArgumentNullException(nameof(externalSystems)); }
/// <inheritdoc /> public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (!this.initialized) { this.Initialize(); } var message = this.errorText.ToString(); if (!(targetType == typeof(AngularSpeed) || targetType == typeof(AngularSpeed?))) { message += $"{this.GetType().Name} does not support converting to {targetType.Name}"; } if (message != string.Empty) { message = message.TrimEnd('\r', '\n'); if (Is.DesignMode) { throw new InvalidOperationException(message); } return(message); } if (value == null) { return(null); } if (value is double) { return(new AngularSpeed((double)value, this.unit.Value)); } var text = value as string; if (string.IsNullOrEmpty(text)) { return(null); } var unitInput = this.UnitInput ?? Wpf.UnitInput.ScalarOnly; switch (unitInput) { case Wpf.UnitInput.ScalarOnly: { double d; if (double.TryParse(text, NumberStyles.Float, culture, out d)) { return(new AngularSpeed(d, this.unit.Value)); } AngularSpeed result; if (AngularSpeed.TryParse(text, NumberStyles.Float, culture, out result)) { return($"#{text}#"); // returning modified text so that TypeConverter fails and we get an error } return(text); // returning raw to trigger error } case Wpf.UnitInput.SymbolAllowed: { double d; int pos = 0; WhiteSpaceReader.TryRead(text, ref pos); if (DoubleReader.TryRead(text, ref pos, NumberStyles.Float, culture, out d)) { WhiteSpaceReader.TryRead(text, ref pos); if (pos == text.Length) { return(new AngularSpeed(d, this.unit.Value)); } } goto case Wpf.UnitInput.SymbolRequired; } case Wpf.UnitInput.SymbolRequired: { AngularSpeed result; if (AngularSpeed.TryParse(text, NumberStyles.Float, culture, out result)) { return(result); } return(text); } default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Initializes a new instance of <see cref="Gu.Units.Wpf.AngularSpeedExtension"/>. /// </summary> /// <param name="value"><see cref="Gu.Units.AngularSpeed"/>.</param> public AngularSpeedExtension(AngularSpeed value) { this.Value = value; }
protected virtual void OnMaxValueChanged(AngularSpeed? oldValue, AngularSpeed? newValue) { this.SetScalarValue(ScalarMaxValueProperty, newValue); }