Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }