/// <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); }
/// <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()); }