private static IEnumerable <Point> CheckPointsNotOnOneLine(Point[] points) { List <Vector> vectors = new List <Vector>(); for (int i = 1; i < points.Length; i++) { vectors.Add(points[i] - points[i - 1]); } vectors.Add(points[0] - points[points.Length - 1]); bool haveSameAngle = DoubleUtils.CloseToEqual(vectors.Select(v => v.Angle).ToArray()); if (haveSameAngle) { throw new ArgumentOutOfRangeException(nameof(points), points, "All points are on the same line"); } return(points); }