public static Vector2[] CleanPath(Vector2[] path, float tolerance = 100) { var cleanPath = new List<Vector2> {path.First()}; for (var i = 1; i < path.Length - 1; i++) { if (path[i].Distance(cleanPath.Last(), true) > tolerance.Pow()) cleanPath.Add(path[i]); } cleanPath.Add(path.Last()); //cleanPath.RemoveAt(0); return cleanPath.ToArray(); }
private void AddBeziersInner(Vector2[] points) { if (Closed) throw new InvalidOperationException("The geometry can not be changed after is has been closed."); var linePoints = new List<Vector2>(); for (int i = 0; i < points.Length - 1; i += 3) { if (i > 0) linePoints.Add(points[i - 1]); linePoints.AddRange(GetCubicBezierPoints(i - 1 >= 0 ? points[i - 1] : lastPoint, points[i], points[i + 1], points[i + 2], true)); } linePoints.Add(points.Last()); AddLinesInner(linePoints); }