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);
 }
Exemple #3
0
        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();
 }
Exemple #6
0
        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));
        }
Exemple #8
0
        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);
        }
Exemple #11
0
 public static AngularAcceleration Clamp01(AngularAcceleration value)
 {
     return(new AngularAcceleration(Mathf.Clamp01(value.Float)));
 }
Exemple #12
0
        public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
        {
            var stringValue = (string)reader.Value !;

            return(AngularAcceleration.Parse(stringValue, serializer.Culture));
        }
Exemple #13
0
        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;
 }
Exemple #15
0
        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));
            }
        }
Exemple #16
0
 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);
 }
Exemple #19
0
 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;
 }
Exemple #21
0
 public static AngularAcceleration Clamp(AngularAcceleration value, AngularAcceleration min, AngularAcceleration max)
 {
     return(new AngularAcceleration(Mathf.Clamp(value.Float, min.Float, max.Float)));
 }
Exemple #22
0
        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();
        }
Exemple #23
0
        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);
 }