public void VerifyAllEnums() { var acceleration = new Acceleration(1, AccelerationUnit.BaseUnit); var angle = new Angle(1, AngleUnit.BaseUnit); var angularAcceleration = new AngularAcceleration(1, AngularAccelerationUnit.BaseUnit); var area = new Area(1, AreaUnit.BaseUnit); var density = new MassDensity(1, MassDensityUnit.BaseUnit); var electricCurrent = new ElectricCurrent(1, ElectricCurrentUnit.BaseUnit); var electricResistance = new ElectricResistance(1, ElectricResistanceUnit.BaseUnit); var electricVoltage = new ElectricPotential(1, ElectricPotentialUnit.BaseUnit); var energy = new Energy(1, EnergyUnit.BaseUnit); var force = new Force(1, ForceUnit.BaseUnit); var frequency = new Frequency(1, FrequencyUnit.BaseUnit); var jerk = new Jerk(1, JerkUnit.BaseUnit); var length = new Length(1, LengthUnit.BaseUnit); var mass = new Mass(1, MassUnit.BaseUnit); var massFlowRate = new MassFlowRate(1, MassFlowRateUnit.BaseUnit); var momentum = new Momentum(1, MomentumUnit.BaseUnit); var numeric = new Numeric(1, NumericUnit.BaseUnit); var power = new Power(1, PowerUnit.BaseUnit); var pressure = new Pressure(1, PressureUnit.BaseUnit); var speed = new Speed(1, SpeedUnit.BaseUnit); var temperature = new Temperature(1, TemperatureUnit.BaseUnit); var time = new Time(1, TimeUnit.BaseUnit); var torque = new Torque(1, TorqueUnit.BaseUnit); var volume = new Volume(1, VolumeUnit.BaseUnit); var volumetricFlowRate = new VolumetricFlowRate(1, VolumetricFlowRateUnit.BaseUnit); }
public void OpAddition() { var angularAcceleration1 = new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); var expected = new AngularAcceleration(120, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); (angularAcceleration1 + angularAcceleration2).ShouldEqual(expected); (angularAcceleration2 + angularAcceleration1).ShouldEqual(expected); }
public void FormatAngularAcceleration() { var value = AngularAcceleration.FromDegreesPerSecondSquared(1.2); using (Thread.CurrentThread.UsingTempCulture(CultureInfo.InvariantCulture)) { Assert.AreEqual("1.2°/s²", value.ToString(AngularAccelerationUnit.DegreesPerSecondSquared)); } }
public void OpGreaterThanOrEqual() { var angularAcceleration1 = new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); var angularAcceleration3 = new AngularAcceleration(180, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); (angularAcceleration1 >= angularAcceleration3).ShouldBeFalse(); (angularAcceleration3 >= angularAcceleration1).ShouldBeTrue(); (angularAcceleration1 >= angularAcceleration2).ShouldBeTrue(); (angularAcceleration2 >= angularAcceleration1).ShouldBeTrue(); }
public void OpInverseEquals() { var angularAcceleration1 = new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); var angularAcceleration3 = new AngularAcceleration(180, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); (angularAcceleration1 != angularAcceleration2).ShouldBeFalse(); (angularAcceleration2 != angularAcceleration1).ShouldBeFalse(); (angularAcceleration1 != angularAcceleration3).ShouldBeTrue(); (angularAcceleration3 != angularAcceleration1).ShouldBeTrue(); }
public void FormatAngularAcceleration() { var value = AngularAcceleration.FromDegreesPerSecondSquared(1.2); using (Thread.CurrentThread.UsingTempCulture(CultureInfo.InvariantCulture)) { #pragma warning disable CA1305 // Specify IFormatProvider Assert.AreEqual("1.2°/s²", value.ToString(AngularAccelerationUnit.DegreesPerSecondSquared)); #pragma warning restore CA1305 // Specify IFormatProvider } }
public void OpDivision() { var angularAcceleration1 = new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); (angularAcceleration1 / angularAcceleration2).ShouldBeWithinEpsilonOf(1); (angularAcceleration2 / angularAcceleration1).ShouldBeWithinEpsilonOf(1); (angularAcceleration1 / 2).ShouldEqual(new AngularAcceleration(30, AngularAccelerationUnit.RevolutionsPerMinutePerSecond)); (angularAcceleration2 / 2).ShouldEqual(new AngularAcceleration(.5, AngularAccelerationUnit.RevolutionsPerSecondSquared)); }
private void updateMovement(TimeSpan elapsedTime, float acceleration, float leftRight) { var t = (float)elapsedTime.NumericValue; this.speed += new Acceleration(acceleration * 50) * elapsedTime; this.speed *= Mathf.Pow(1e-3f, t); this.turnSpeed += AngularAcceleration.FromRadians(leftRight * 5) * elapsedTime; this.turnSpeed *= Mathf.Pow(1e-7f, t); this.Direction += this.turnSpeed * (elapsedTime * this.speed.NumericValue); this.Position += this.Direction * this.speed * elapsedTime; this.distanceTraveled += this.speed * elapsedTime; }
public void OpEquals() { var angularAcceleration1 = new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); var angularAcceleration3 = new AngularAcceleration(180, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); (angularAcceleration1 == angularAcceleration2).ShouldBeTrue(); (angularAcceleration2 == angularAcceleration1).ShouldBeTrue(); (angularAcceleration1 == angularAcceleration3).ShouldBeFalse(); (angularAcceleration3 == angularAcceleration1).ShouldBeFalse(); angularAcceleration1.Equals(angularAcceleration2) .ShouldBeTrue(); angularAcceleration1.Equals((object)angularAcceleration2) .ShouldBeTrue(); angularAcceleration2.Equals(angularAcceleration1) .ShouldBeTrue(); angularAcceleration2.Equals((object)angularAcceleration1) .ShouldBeTrue(); }
public void SetUnitPreferences() { UnitPreferences usPreferences = UnitPreferences.GetAmericanEnglishUnits(); var time = new Time(3600, TimeUnit.MilliSecond); usPreferences.Fix(time); time.Units.Abbreviation.ShouldEqual(usPreferences.TimeUnits.Abbreviation); var acceleration = new Acceleration(5, AccelerationUnit.KilometerPerSecondSquared); usPreferences.Fix(acceleration); acceleration.Units.Abbreviation.ShouldEqual(usPreferences.AccelerationUnits.Abbreviation); var angle = new Angle(4, AngleUnit.Grad); usPreferences.Fix(angle); angle.Units.Abbreviation.ShouldEqual(usPreferences.AngleUnits.Abbreviation); var angularAcceleration = new AngularAcceleration(3, AngularAccelerationUnit.RevolutionsPerSecondSquared); usPreferences.Fix(angularAcceleration); angularAcceleration.Units.Abbreviation.ShouldEqual(usPreferences.AngularAccelerationUnits.Abbreviation); var area = new Area(10, AreaUnit.SquareMiles); usPreferences.Fix(area); area.Units.Abbreviation.ShouldEqual(usPreferences.AreaUnits.Abbreviation); }
public static AngularAcceleration Clamp01(AngularAcceleration value) { return(new AngularAcceleration(Mathf.Clamp01(value.Float))); }
public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer) { var stringValue = (string)reader.Value !; return(AngularAcceleration.Parse(stringValue, serializer.Culture)); }
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 AngularAccelerationExtension(AngularAcceleration value) { this.Value = value; }
void MeasureUnitTest() { { var measure = Measure.TryParse("10mm [Length]"); Assert.True(measure != null && measure.MU == MUCollection.Length.mm && measure.MU.PhysicalQuantity == PQCollection.Length && Abs(measure.Value - 10) < 1e-3); } var mud = new MUDomain(); // Length { var tol = mud.Length.DefaultTolerance; var mm = MUCollection.Length.mm; var m = MUCollection.Length.m; var km = MUCollection.Length.km; var inch = MUCollection.Length.inch; var ft = MUCollection.Length.ft; var yard = MUCollection.Length.yard; var links = MUCollection.Length.links; var a = (212356.435 * mm).ConvertTo(mud).Value; Assert.True(a.EqualsTol(tol, (212356.435).Convert(mm, mud))); Assert.True(a.EqualsTol(tol, (212.356435).Convert(m, mud))); Assert.True(a.EqualsTol(tol, (0.212356435).Convert(km, mud))); Assert.True(a.EqualsTol(tol, (8360.489567).Convert(inch, mud))); Assert.True(a.EqualsTol(tol, (696.7074639).Convert(ft, mud))); Assert.True(a.EqualsTol(tol, (232.2358213).Convert(yard, mud))); Assert.True(a.EqualsTol(tol, (1055.6173695617595).Convert(links, mud))); } // Temperature { var tol = mud.Temperature.DefaultTolerance; var C = MUCollection.Temperature.C; var K = MUCollection.Temperature.K; var F = MUCollection.Temperature.F; var C_ = 20.35; var K_ = 293.5; var F_ = 68.63; { var T = (C_ * C); Assert.True(T.ConvertTo(K).Value.EqualsTol(1e-1, K_)); Assert.True(T.ConvertTo(F).Value.EqualsTol(1e-2, F_)); } { var T = (K_ * K); Assert.True(T.ConvertTo(C).Value.EqualsTol(1e-2, C_)); Assert.True(T.ConvertTo(F).Value.EqualsTol(1e-2, F_)); } { var T = (F_ * F); Assert.True(T.ConvertTo(C).Value.EqualsTol(1e-2, C_)); Assert.True(T.ConvertTo(K).Value.EqualsTol(1e-1, K_)); } } // Linear acceleration { var a = 4.4 * MUCollection.Acceleration.mm_s2; var b = a.ConvertTo(MUCollection.Acceleration.m_s2).Value; Assert.True(b.EqualsTol(1e-4, 0.0044)); } // Angular speed { var a = (2.5) * MUCollection.AngularSpeed.rad_s; var b = a.ConvertTo(MUCollection.AngularSpeed.deg_s); Assert.True(b.Value.EqualsTol(1e-3, 143.239)); Assert.True(AngularAcceleration.Auto(MUCollection.PlaneAngle.deg, MUCollection.Time.sec) .Equals(MUCollection.AngularSpeed.deg_s)); Assert.True(AngularAcceleration.Auto(MUCollection.PlaneAngle.rad, MUCollection.Time.sec) .Equals(MUCollection.AngularSpeed.rad_s)); } // Angular acceleration { var a = (2.5) * MUCollection.AngularAcceleration.rad_s2; var b = a.ConvertTo(MUCollection.AngularAcceleration.deg_s2); Assert.True(b.Value.EqualsTol(1e-3, 143.239)); Assert.True(AngularAcceleration.Auto(MUCollection.PlaneAngle.deg, MUCollection.Time.sec) .Equals(MUCollection.AngularAcceleration.deg_s2)); Assert.True(AngularAcceleration.Auto(MUCollection.PlaneAngle.rad, MUCollection.Time.sec) .Equals(MUCollection.AngularAcceleration.rad_s2)); } // Bending moment { var Nmm = MUCollection.BendingMoment.Auto(MUCollection.Force.N, MUCollection.Length.mm); Assert.True(Nmm.Equals(MUCollection.BendingMoment.Nmm)); var a = 1.78 * Nmm; var b = a.ConvertTo(MUCollection.BendingMoment.kNm); Assert.True(b.Value.EqualsTol(1e-8, 1.78e-6)); } }
public static AngularAcceleration LerpUnclamped(AngularAcceleration a, AngularAcceleration b, float t) { return(new AngularAcceleration(Mathf.LerpUnclamped(a.Float, b.Float, t))); }
public void OpSubtraction() { var angularAcceleration1 = new AngularAcceleration(120, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); (angularAcceleration1 - angularAcceleration2).ShouldEqual(new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond)); (angularAcceleration2 - angularAcceleration1).ShouldEqual(new AngularAcceleration(-1, AngularAccelerationUnit.RevolutionsPerSecondSquared)); }
public void OpMultiplicationScaler() { var angularAcceleration = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); var expected = new AngularAcceleration(2, AngularAccelerationUnit.RevolutionsPerSecondSquared); (angularAcceleration * 2).ShouldEqual(expected); (2 * angularAcceleration).ShouldEqual(expected); }
public static AngularAcceleration Max(AngularAcceleration a, AngularAcceleration b) { return(new AngularAcceleration(Mathf.Max(a.Float, b.Float))); }
protected void SetScalarValue(DependencyProperty property, AngularAcceleration? 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 AngularAcceleration Clamp(AngularAcceleration value, AngularAcceleration min, AngularAcceleration max) { return(new AngularAcceleration(Mathf.Clamp(value.Float, min.Float, max.Float))); }
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(); }
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 void OpLessThan() { var angularAcceleration1 = new AngularAcceleration(60, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); var angularAcceleration2 = new AngularAcceleration(1, AngularAccelerationUnit.RevolutionsPerSecondSquared); var angularAcceleration3 = new AngularAcceleration(180, AngularAccelerationUnit.RevolutionsPerMinutePerSecond); (angularAcceleration1 < angularAcceleration3).ShouldBeTrue(); (angularAcceleration3 < angularAcceleration1).ShouldBeFalse(); (angularAcceleration1 < angularAcceleration2).ShouldBeFalse(); (angularAcceleration2 < angularAcceleration1).ShouldBeFalse(); }
/// <inheritdoc /> public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (!this.initialized) { Initialize(); } var message = this.errorText.ToString(); if (!(targetType == typeof(AngularAcceleration) || targetType == typeof(AngularAcceleration?))) { message += $"{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 AngularAcceleration((double)value, this.unit.Value)); } var text = value as string; if (string.IsNullOrEmpty(text)) { return(null); } var unitInput = UnitInput ?? Wpf.UnitInput.ScalarOnly; switch (unitInput) { case Wpf.UnitInput.ScalarOnly: { double d; if (double.TryParse(text, NumberStyles.Float, culture, out d)) { return(new AngularAcceleration(d, this.unit.Value)); } AngularAcceleration result; if (AngularAcceleration.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 AngularAcceleration(d, this.unit.Value)); } } goto case Wpf.UnitInput.SymbolRequired; } case Wpf.UnitInput.SymbolRequired: { AngularAcceleration result; if (AngularAcceleration.TryParse(text, NumberStyles.Float, culture, out result)) { return(result); } return(text); } default: throw new ArgumentOutOfRangeException(); } }
protected virtual void OnMaxValueChanged(AngularAcceleration? oldValue, AngularAcceleration? newValue) { this.SetScalarValue(ScalarMaxValueProperty, newValue); }