computeFacetDistance method

void computeFacetDistance()

Computes distance between facets (lines and points) of input geometries.

Implementation

void computeFacetDistance() {
  List<GeometryLocation?> locGeom = []..length = 2;

  /**
   * Geometries are not wholely inside, so compute distance from lines and points
   * of one to lines and points of the other
   */
  List lines0 = LinearComponentExtracter.getLines(geom[0]!);
  List lines1 = LinearComponentExtracter.getLines(geom[1]!);

  List pts0 = PointExtracter.getPoints(geom[0]!);
  List pts1 = PointExtracter.getPoints(geom[1]!);

  // exit whenever minDistance goes LE than terminateDistance
  computeMinDistanceLines(lines0, lines1, locGeom);
  updateMinDistance(locGeom, false);
  if (minDistance <= terminateDistance) return;

  locGeom[0] = null;
  locGeom[1] = null;
  computeMinDistanceLinesPoints(lines0, pts1, locGeom);
  updateMinDistance(locGeom, false);
  if (minDistance <= terminateDistance) return;

  locGeom[0] = null;
  locGeom[1] = null;
  computeMinDistanceLinesPoints(lines1, pts0, locGeom);
  updateMinDistance(locGeom, true);
  if (minDistance <= terminateDistance) return;

  locGeom[0] = null;
  locGeom[1] = null;
  computeMinDistancePoints(pts0, pts1, locGeom);
  updateMinDistance(locGeom, false);
}