public static void computeDistance(LineSegment segment, Coordinate pt, PointPairDistance ptDist) { Coordinate closestPt = segment.closestPoint(pt); ptDist.setMinimum(closestPt, pt); }
public static void computeDistance(LineSegment segment, Coordinate pt, PointPairDistance ptDist) { Coordinate closestPt = segment.closestPoint(pt); ptDist.setMinimum(closestPt, pt); }
private void updatePts(Coordinate p, Coordinate seg0, Coordinate seg1) { minPts[0] = p; LineSegment seg = new LineSegment(seg0, seg1); minPts[1] = new Coordinate(seg.closestPoint(p)); }
double dist; Coordinate close00 = closestPoint(line.p0); minDistance = close00.distance(line.p0); closestPt[0] = close00; closestPt[1] = line.p0; Coordinate close01 = closestPoint(line.p1); dist = close01.distance(line.p1); if (dist < minDistance) { Coordinate close10 = line.closestPoint(p0); dist = close10.distance(p0); if (dist < minDistance) { Coordinate close11 = line.closestPoint(p1); dist = close11.distance(p1); if (dist < minDistance) {
private void updateClearance(double candidateValue, Coordinate p, Coordinate seg0, Coordinate seg1) { if (candidateValue < minClearance) { minClearance = candidateValue; minClearancePts[0] = new Coordinate(p); LineSegment seg = new LineSegment(seg0, seg1); minClearancePts[1] = new Coordinate(seg.closestPoint(p)); } }
public static Geometry perpendicularBisectors(Geometry g) { Coordinate[] pts = trianglePts(g); Coordinate cc = Triangle.circumcentre(pts[0], pts[1], pts[2]); GeometryFactory geomFact = FunctionsUtil.getFactoryOrDefault(g); LineString[] line = new LineString[3]; Coordinate p0 = (new LineSegment(pts[1], pts[2])).closestPoint(cc); line[0] = geomFact.createLineString(new Coordinate[] {p0, cc}); Coordinate p1 = (new LineSegment(pts[0], pts[2])).closestPoint(cc); line[1] = geomFact.createLineString(new Coordinate[] {p1, cc}); Coordinate p2 = (new LineSegment(pts[0], pts[1])).closestPoint(cc); line[2] = geomFact.createLineString(new Coordinate[] {p2, cc}); return geomFact.createMultiLineString(line); }
public static void computeDistance(LineString line, Coordinate pt, PointPairDistance ptDist) { LineSegment tempSegment = new LineSegment(); Coordinate[] coords = line.getCoordinates(); for (int i = 0; i < coords.length - 1; i++) { tempSegment.setCoordinates(coords[i], coords[i + 1]); // this is somewhat inefficient - could do better Coordinate closestPt = tempSegment.closestPoint(pt); ptDist.setMinimum(closestPt, pt); } }
public static void computeDistance(LineString line, Coordinate pt, PointPairDistance ptDist) { Coordinate[] coords = line.getCoordinates(); LineSegment tempSegment = new LineSegment(); for (int i = 0; i < coords.length - 1; i++) { tempSegment.setCoordinates(coords[i], coords[i + 1]); // this is somewhat inefficient - could do better Coordinate closestPt = tempSegment.closestPoint(pt); ptDist.setMinimum(closestPt, pt); } }
private void updateNearestLocationsPointLine(Coordinate pt, FacetSequence facetSeq, int i, Coordinate q0, Coordinate q1, GeometryLocation[] locs) { locs[0] = new GeometryLocation(geom, start, new Coordinate(pt)); LineSegment seg = new LineSegment(q0, q1); Coordinate segClosestPoint = seg.closestPoint(pt); locs[1] = new GeometryLocation(facetSeq.geom, i, new Coordinate(segClosestPoint)); }
double segDist = seg.distance(testPt); if (segDist < tolerance) { nearestPt = seg.closestPoint(testPt); segIndex = i; isVertex = false;
private void computeMinDistanceLinePoint(LineString line,Point point, boolean flip) { Coordinate[] lineCoord = line.getCoordinates(); Coordinate coord = point.getCoordinate(); // brute force approach! for (int i = 0; i < lineCoord.length - 1; i++) { double dist = CGAlgorithms3D.distancePointSegment(coord, lineCoord[i], lineCoord[i + 1]); if (dist < minDistance) { LineSegment seg = new LineSegment(lineCoord[i], lineCoord[i + 1]); Coordinate segClosestPoint = seg.closestPoint(coord); updateDistance(dist, new GeometryLocation(line, i, segClosestPoint), new GeometryLocation(point, 0, coord), flip); } if (isDone) return; } }
private void computeMinDistance(LineString line, Point pt, GeometryLocation[] locGeom) { if (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > minDistance) return; Coordinate[] coord0 = line.getCoordinates(); Coordinate coord = pt.getCoordinate(); // brute force approach! for (int i = 0; i < coord0.length - 1; i++) { double dist = Distance.pointToSegment( coord, coord0[i], coord0[i + 1] ); if (dist < minDistance) { minDistance = dist; LineSegment seg = new LineSegment(coord0[i], coord0[i + 1]); Coordinate segClosestPoint = seg.closestPoint(coord); locGeom[0] = new GeometryLocation(line, i, segClosestPoint); locGeom[1] = new GeometryLocation(pt, 0, coord); } if (minDistance <= terminateDistance) return; } }