예제 #1
0
        /// <summary>
        ///  Calculates all internal angles for the polygon, moving from the first vertex to the next.
        /// </summary>
        /// <param name="numDigits">If you'd like a cap on the number of digits calculated, you can pass it here.</param>
        /// <returns>List of all calculated angles in the polygon.</returns>
        public List <double> CalculateAngles(int?numDigits = null)
        {
            List <double> calcAngles = new List <double>();

            for (var i = 0; i < this.Vertices.Count; i++)
            {
                var leftVertex  = i == 0 ? this.Vertices.Last() : this.Vertices[i - 1];
                var rightVertex = this.Vertices[(i + 1) % this.Vertices.Count];
                var thisVertex  = this.Vertices[i];

                calcAngles.Add(TriangleHelper.CalculateAngleFromTriangleSides(CoordinateHelper.CalculateLengthOfLine(leftVertex, thisVertex),
                                                                              CoordinateHelper.CalculateLengthOfLine(rightVertex, thisVertex),
                                                                              CoordinateHelper.CalculateLengthOfLine(leftVertex, rightVertex),
                                                                              numDigits));
            }

            return(calcAngles);
        }