removeDuplicatedPoints method

List<Vector2> removeDuplicatedPoints(
  1. List<Vector?> points
)

Implementation

List<Vector2> removeDuplicatedPoints(List<Vector?> points) {
  // Creates a new array if necessary with duplicated points removed.
  // This does not remove duplicated initial and ending points of a closed path.

  bool dupPoints = false;
  final List<Vector2> convPoints = [];
  for (int i = 0; i < points.length-1; i++) {
    if (points[i]!.distanceTo(points[i + 1]!) < minDistance) {
      dupPoints = true;
      break;
    }

    convPoints.add(Vector2(points[i]!.x,points[i]!.y));
  }
  convPoints.add(Vector2(points[points.length - 1]!.x,points[points.length - 1]!.y));

  if (!dupPoints) return convPoints;

  final List<Vector2> newPoints = [];
  newPoints.add(Vector2(points[0]!.x,points[0]!.y));

  for (int i = 1, n = points.length - 1; i < n; i++) {
    if (points[i]!.distanceTo(points[i + 1]!) >= minDistance) {
      newPoints.add(Vector2(points[i]!.x,points[i]!.y));
    }
  }

  newPoints.add(Vector2(points[points.length - 1]!.x,points[points.length - 1]!.y));

  return newPoints;
}