/** Ensure that the pointList holds n points. */
  private void updatePointsArray(int n) {

    GeoPoint[] oldPoints = points;
    int oldPointsLength = oldPoints == null ? 0 : oldPoints.length;
    // System.out.println("update points: " + n + "  old length: " + oldPointsLength);

    // new points
    points = new GeoPoint[n];

    // reuse old points
    for (int i = 0; i < oldPointsLength; i++) {
      if (i < points.length) {
        // reuse old point
        points[i] = oldPoints[i];
      } else {
        removePoint(oldPoints[i]);
      }
    }

    // create new points if needed
    for (int i = oldPointsLength; i < points.length; i++) {
      GeoPoint newPoint = new GeoPoint(cons);
      newPoint.setCoords(0, 0, 1); // set defined
      newPoint.setParentAlgorithm(this);
      newPoint.setEuclidianVisible(true);
      newPoint.setAuxiliaryObject(true);
      points[i] = newPoint;
    }
  }