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