public Point[] SmoothPath(Point[] path) { List <Point> smoothedPath = new List <Point>(); for (int i = 0; i < path.Length; i++) { var startPoint = path[i]; smoothedPath.Add(startPoint); for (int x = i + 1; x < path.Length; x++) { var skippedPoint = path[x]; var line = new Line(startPoint, skippedPoint); if (PointMap.IsInterior(line)) { i = x - 1; } else { break; } } } return(smoothedPath.ToArray()); }