Esempio n. 1
0
        /// <summary>
        /// Sets the handle tip to the provided coordinate.
        /// </summary>
        /// <param name="handleTip">The handle tip.</param>
        public void SetHandleTip(CartesianCoordinate handleTip)
        {
            CartesianOffset offset = handleTip.OffsetFrom(ControlPoint);

            Radius   = offset.Length();
            Rotation = offset.SlopeAngle();
        }
        public static void Initialization_with_Coordinates_Results_in_Object_with_Immutable_Coordinates_Properties_List()
        {
            CartesianCoordinate localOriginInGlobal  = new CartesianCoordinate(3, 2);
            CartesianCoordinate localAxisXPtInGlobal = new CartesianCoordinate(5, 4);
            Transformations     transformations      = new Transformations(localOriginInGlobal, localAxisXPtInGlobal);

            AngularOffset   angularOffset = new AngularOffset(Numbers.Pi / 4);
            CartesianOffset offset        = localOriginInGlobal.OffsetFrom(CartesianCoordinate.Origin());

            Assert.AreEqual(localOriginInGlobal, transformations.LocalOrigin);
            Assert.AreEqual(localAxisXPtInGlobal, transformations.LocalAxisX);
            Assert.AreEqual(offset, transformations.Displacement);
            Assert.AreEqual(angularOffset.ToAngle().Degrees, transformations.Rotation.ToAngle().Degrees, Tolerance);
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Transformations"/> class.
        /// </summary>
        /// <param name="localOriginInGlobal">The local origin in global coordinates.</param>
        /// <param name="localAxisXPtInGlobal">Any point along the local x-axis in global coordinates.</param>
        public Transformations(CartesianCoordinate localOriginInGlobal, CartesianCoordinate localAxisXPtInGlobal)
        {
            LocalOrigin = localOriginInGlobal;
            LocalAxisX  = localAxisXPtInGlobal;

            Displacement = localOriginInGlobal.OffsetFrom(CartesianCoordinate.Origin());
            if (localAxisXPtInGlobal.Y == localOriginInGlobal.Y)
            {
                Rotation = new AngularOffset();
            }
            else
            {
                Rotation = AngularOffset.CreateFromPoints(
                    localAxisXPtInGlobal,
                    localOriginInGlobal,
                    new CartesianCoordinate(localOriginInGlobal.X - 1, localOriginInGlobal.Y)
                    );
            }
        }
 /// <summary>
 /// Gets the length of the handle for handles at the control points.
 /// </summary>
 /// <param name="pointI">The point i.</param>
 /// <param name="pointJ">The point j.</param>
 /// <returns>System.Double.</returns>
 private double getHandleLength(CartesianCoordinate pointI, CartesianCoordinate pointJ)
 {
     return(0.1 * pointJ.OffsetFrom(pointI).Length());
 }