/// <summary> /// compute the length of side 2 from length of side 1, angle of side 1 and angle of /// side 2. /// </summary> /// <param name="Side1"></param> /// <param name="Vertex1"></param> /// <param name="Vertex2"></param> /// <returns></returns> public static double CalcSideFromAngleAngleSide( double Side1, Angle360 Vertex1, Angle360 Vertex2) { // formula: (sin vertex1)/side1 = (sin vertex2)/side2 // side2 * ((sin vertex1)/side1) = (sin vertex2) // side2 = (sin vertex2) / ((sin vertex1)/side1) var side2 = Vertex2.Radians.Sine / (Vertex1.Radians.Sine / Side1); return(side2); }
/// <summary> /// compute the length of side 3 from the angle of side 3 and the length of side 1 /// and length of side 2. /// </summary> /// <param name="Side1Lgth"></param> /// <param name="Side2Lgth"></param> /// <param name="Vertex3Angle"></param> /// <returns></returns> public static double CalcSideFromSideSideAngle( double Side1, double Side2, Angle360 Vertex3) { // formula: // side3 * side3 = (side1 * side1) + (side2 * side2) - // (( 2 * side1 * side2 ) * cosine angle3) var cos3 = Vertex3.Radians.Cos.Value; var side3 = Math.Sqrt((Side1 * Side1) + (Side2 * Side2) - ((2 * Side1 * Side2) * cos3)); return(side3); }
/// <summary> /// compute the angle between two lines. /// </summary> /// <param name="Line1"></param> /// <param name="Line2"></param> /// <returns></returns> public static double AngleBetween(LineCoordinates Line1, LineCoordinates Line2) { // the start point of each line is the common point between the two lines. var commonPoint = LineCoordinates.CommonEndPoint(Line1, Line2); // the end points of each line. var end1 = Line1.OtherPoint(commonPoint); var end2 = Line2.OtherPoint(commonPoint); // the 360 degree angles of each line. var angle1 = LineExt.GetAngle(commonPoint, end1); var angle2 = LineExt.GetAngle(commonPoint, end2); // the angle between is the diff between the 360 degree angles of the 2 lines. var angleBet = Angle360.Subtract(angle1, angle2); if (angleBet.Value > 180) { angleBet = Angle360.Subtract(angle2, angle1); } return(angleBet.Value); }