/// <summary> /// Removes all collinear points on the polygon. /// </summary> /// <param name="vertices">The polygon that needs simplification.</param> /// <param name="collinearityTolerance">The collinearity tolerance.</param> /// <returns>A simplified polygon.</returns> // TS - public static Vertices CollinearSimplify(Vertices vertices, FP collinearityTolerance = 0) public static Vertices CollinearSimplify(Vertices vertices, FP collinearityTolerance) { if (vertices.Count <= 3) { return(vertices); } Vertices simplified = new Vertices(vertices.Count); for (int i = 0; i < vertices.Count; i++) { FPVector2 prev = vertices.PreviousVertex(i); FPVector2 current = vertices[i]; FPVector2 next = vertices.NextVertex(i); //If they collinear, continue if (MathUtils.IsCollinear(ref prev, ref current, ref next, collinearityTolerance)) { continue; } simplified.Add(current); } return(simplified); }