computeMinDistanceLineLineList method
void
computeMinDistanceLineLineList(
- LineString line0,
- LineString line1,
- List<
GeometryLocation?> locGeom
Implementation
void computeMinDistanceLineLineList(
LineString line0, LineString line1, List<GeometryLocation?> locGeom) {
if (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) >
minDistance) return;
List<Coordinate> coord0 = line0.getCoordinates();
List<Coordinate> coord1 = line1.getCoordinates();
// brute force approach!
for (int i = 0; i < coord0.length - 1; i++) {
for (int j = 0; j < coord1.length - 1; j++) {
double dist = Distance.segmentToSegment(
coord0[i], coord0[i + 1], coord1[j], coord1[j + 1]);
if (dist < minDistance) {
minDistance = dist;
LineSegment seg0 =
new LineSegment.fromCoordinates(coord0[i], coord0[i + 1]);
LineSegment seg1 =
new LineSegment.fromCoordinates(coord1[j], coord1[j + 1]);
List<Coordinate> closestPt = seg0.closestPoints(seg1);
locGeom[0] = new GeometryLocation(line0, i, closestPt[0]);
locGeom[1] = new GeometryLocation(line1, j, closestPt[1]);
}
if (minDistance <= terminateDistance) return;
}
}
}