コード例 #1
0
ファイル: MoveComponent.cs プロジェクト: lehmamic/gameprogcpp
        public override void Update(float deltaTime)
        {
            if (!AngularSpeed.NearZero())
            {
                Quaternion rotation = Owner.Rotation;
                float      angle    = AngularSpeed * deltaTime;

                // Create quaternion for incremental rotation
                // (Rotate about up axis)
                Quaternion inc = new Quaternion(Vector3.UnitZ, angle);
                rotation = Quaternion.Concatenate(rotation, inc);

                // Concatenate old and new quaternion
                Owner.Rotation = rotation;
            }

            // Updating position based on forward speed stays the same
            if (!ForwardSpeed.NearZero())
            {
                Vector3 position = Owner.Position;
                position += Owner.Forward * ForwardSpeed * deltaTime;

                Owner.Position = position;
            }
        }
コード例 #2
0
        public void GreaterThan_ShouldReturnFalse_WhenComparingLesserValueWithGreaterValue()
        {
            var lesser  = new AngularSpeed(50d);
            var greater = new AngularSpeed(70d);

            var result = lesser > greater;

            result.Should().BeFalse();
        }
コード例 #3
0
        public void GreaterThan_ShouldReturnTrue_WhenComparingGreaterValueWithLesserValue()
        {
            var lesser  = new AngularSpeed(50d);
            var greater = new AngularSpeed(70d);

            var result = greater > lesser;

            result.Should().BeTrue();
        }
コード例 #4
0
        public void Accelerate_ShouldNotCallAccelerateOnBaseMode_WhenCurrentAngularSpeedIsGreaterThanCutOffAngularSpeed()
        {
            var currentAngularSpeed = new AngularSpeed(60d);

            _externalSystems.GetAngularSpeed().Returns(currentAngularSpeed);

            var threshold = new Threshold(0.6d);

            Sut().Accelerate(threshold);

            _baseMode.DidNotReceive().Accelerate(threshold);
        }
コード例 #5
0
        public override void Update(float deltaTime)
        {
            if (!AngularSpeed.NearZero())
            {
                float rotation = Owner.Rotation;
                rotation      += AngularSpeed * deltaTime;
                Owner.Rotation = rotation;
            }

            if (!ForwardSpeed.NearZero())
            {
                Vector2 position = Owner.Position;
                position += Owner.Forward * ForwardSpeed * deltaTime;

                // Screen wrapping (for asteroids)
                var halfScreenWidth = Owner.Game.Renderer.Window.Width / 2;
                if (position.X < -halfScreenWidth)
                {
                    position.X = halfScreenWidth - 2;
                }
                else if (position.X > halfScreenWidth)
                {
                    position.X = -(halfScreenWidth - 2);
                }

                var halfScreenHeight = Owner.Game.Renderer.Window.Height / 2;
                if (position.Y < -halfScreenHeight)
                {
                    position.Y = halfScreenHeight - 2;
                }
                else if (position.Y > halfScreenHeight)
                {
                    position.Y = -(halfScreenHeight - 2);
                }

                Owner.Position = position;
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: Thaina/Towel
        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();
        }
コード例 #7
0
 public static AngularSpeed Min(AngularSpeed a, AngularSpeed b)
 {
     return(new AngularSpeed(Mathf.Min(a.Float, b.Float)));
 }
コード例 #8
0
 public static AngularSpeed Clamp01(AngularSpeed value)
 {
     return(new AngularSpeed(Mathf.Clamp01(value.Float)));
 }
コード例 #9
0
 public static AngularSpeed LerpUnclamped(AngularSpeed a, AngularSpeed b, float t)
 {
     return(new AngularSpeed(Mathf.LerpUnclamped(a.Float, b.Float, t)));
 }
コード例 #10
0
 public static AngularSpeed Clamp(AngularSpeed value, AngularSpeed min, AngularSpeed max)
 {
     return(new AngularSpeed(Mathf.Clamp(value.Float, min.Float, max.Float)));
 }
コード例 #11
0
 protected void SetScalarValue(DependencyProperty property, AngularSpeed? quantity)
 {
     // we set this flag to prevent from setting scalar value changing quantity values.
     this.isUpdatingScalarValue = true;
     var value = quantity != null
         ? this.Unit.GetScalarValue(quantity.Value)
         : (double?)null;
     this.SetCurrentValue(property, value);
     this.isUpdatingScalarValue = false;
 }
コード例 #12
0
ファイル: Program.cs プロジェクト: OrganizationUsername/Towel
        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();
        }
コード例 #13
0
        public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
        {
            var stringValue = (string)reader.Value !;

            return(AngularSpeed.Parse(stringValue, serializer.Culture));
        }
コード例 #14
0
ファイル: Program.cs プロジェクト: ShiftLeftSecurity/Towel
        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();
        }
コード例 #15
0
 public MDynamicsMode(AngularSpeed cutOffAngularSpeed, IDriveMode baseMode, IExternalSystems externalSystems)
 {
     _cutOffAngularSpeed = cutOffAngularSpeed ?? throw new ArgumentNullException(nameof(cutOffAngularSpeed));
     _baseMode           = baseMode ?? throw new ArgumentNullException(nameof(baseMode));
     _externalSystems    = externalSystems ?? throw new ArgumentNullException(nameof(externalSystems));
 }
コード例 #16
0
        /// <inheritdoc />
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (!this.initialized)
            {
                this.Initialize();
            }

            var message = this.errorText.ToString();

            if (!(targetType == typeof(AngularSpeed) || targetType == typeof(AngularSpeed?)))
            {
                message += $"{this.GetType().Name} does not support converting to {targetType.Name}";
            }

            if (message != string.Empty)
            {
                message = message.TrimEnd('\r', '\n');
                if (Is.DesignMode)
                {
                    throw new InvalidOperationException(message);
                }

                return(message);
            }

            if (value == null)
            {
                return(null);
            }

            if (value is double)
            {
                return(new AngularSpeed((double)value, this.unit.Value));
            }

            var text = value as string;

            if (string.IsNullOrEmpty(text))
            {
                return(null);
            }

            var unitInput = this.UnitInput ?? Wpf.UnitInput.ScalarOnly;

            switch (unitInput)
            {
            case Wpf.UnitInput.ScalarOnly:
            {
                double d;
                if (double.TryParse(text, NumberStyles.Float, culture, out d))
                {
                    return(new AngularSpeed(d, this.unit.Value));
                }

                AngularSpeed result;
                if (AngularSpeed.TryParse(text, NumberStyles.Float, culture, out result))
                {
                    return($"#{text}#");        // returning modified text so that TypeConverter fails and we get an error
                }

                return(text);        // returning raw to trigger error
            }

            case Wpf.UnitInput.SymbolAllowed:
            {
                double d;
                int    pos = 0;
                WhiteSpaceReader.TryRead(text, ref pos);
                if (DoubleReader.TryRead(text, ref pos, NumberStyles.Float, culture, out d))
                {
                    WhiteSpaceReader.TryRead(text, ref pos);
                    if (pos == text.Length)
                    {
                        return(new AngularSpeed(d, this.unit.Value));
                    }
                }

                goto case Wpf.UnitInput.SymbolRequired;
            }

            case Wpf.UnitInput.SymbolRequired:
            {
                AngularSpeed result;
                if (AngularSpeed.TryParse(text, NumberStyles.Float, culture, out result))
                {
                    return(result);
                }

                return(text);
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #17
0
 /// <summary>
 /// Initializes a new instance of <see cref="Gu.Units.Wpf.AngularSpeedExtension"/>.
 /// </summary>
 /// <param name="value"><see cref="Gu.Units.AngularSpeed"/>.</param>
 public AngularSpeedExtension(AngularSpeed value)
 {
     this.Value = value;
 }
コード例 #18
0
 protected virtual void OnMaxValueChanged(AngularSpeed? oldValue, AngularSpeed? newValue)
 {
     this.SetScalarValue(ScalarMaxValueProperty, newValue);
 }