public void splitAt(double length, Coordinate endPt) { double actualLen = getConstrainedLength(length); double frac = actualLen / segLen; if (endPt.equals2D(seg.p0)) splitPt = seg.pointAlong(frac); else splitPt = pointAlongReverse(seg, frac); }
public void splitAt(Coordinate pt) { // check that given pt doesn't violate min length double minFrac = minimumLen / segLen; if (pt.distance(seg.p0) < minimumLen) { splitPt = seg.pointAlong(minFrac); return; } if (pt.distance(seg.p1) < minimumLen) { splitPt = pointAlongReverse(seg, minFrac); return; } // passes minimum distance check - use provided point as split pt splitPt = pt; }
/** * Densifies a coordinate sequence. * * @param pts * @param distanceTolerance * @return the densified coordinate sequence */ private static Coordinate[] densifyPoints(Coordinate[] pts, double distanceTolerance, PrecisionModel precModel) { LineSegment seg = new LineSegment(); CoordinateList coordList = new CoordinateList(); for (int i = 0; i < pts.length - 1; i++) { seg.p0 = pts[i]; seg.p1 = pts[i + 1]; coordList.add(seg.p0, false); double len = seg.getLength(); int densifiedSegCount = (int) (len / distanceTolerance) + 1; if (densifiedSegCount > 1) { double densifiedSegLen = len / densifiedSegCount; for (int j = 1; j < densifiedSegCount; j++) { double segFract = (j * densifiedSegLen) / len; Coordinate p = seg.pointAlong(segFract); precModel.makePrecise(p); coordList.add(p, false); } } } coordList.add(pts[pts.length - 1], false); return coordList.toCoordinateArray(); }
public void splitAt(double length, Coordinate endPt) { double actualLen = getConstrainedLength(length); double frac = actualLen / segLen; if (endPt.equals2D(seg.p0)) splitPt = seg.pointAlong(frac); else splitPt = pointAlongReverse(seg, frac); }
public void splitAt(Coordinate pt) { // check that given pt doesn't violate min length double minFrac = minimumLen / segLen; if (pt.distance(seg.p0) < minimumLen) { splitPt = seg.pointAlong(minFrac); return; } if (pt.distance(seg.p1) < minimumLen) { splitPt = pointAlongReverse(seg, minFrac); return; } // passes minimum distance check - use provided point as split pt splitPt = pt; }
Coordinate endPoint = s.pointAlong(neededLength/s.getLength());
/** * Densifies a coordinate sequence. * * @param pts * @param distanceTolerance * @return the densified coordinate sequence */ private static Coordinate[] densifyPoints(Coordinate[] pts, double distanceTolerance, PrecisionModel precModel) { LineSegment seg = new LineSegment(); CoordinateList coordList = new CoordinateList(); for (int i = 0; i < pts.length - 1; i++) { seg.p0 = pts[i]; seg.p1 = pts[i + 1]; coordList.add(seg.p0, false); double len = seg.getLength(); int densifiedSegCount = (int) (len / distanceTolerance) + 1; if (densifiedSegCount > 1) { double densifiedSegLen = len / densifiedSegCount; for (int j = 1; j < densifiedSegCount; j++) { double segFract = (j * densifiedSegLen) / len; Coordinate p = seg.pointAlong(segFract); precModel.makePrecise(p); coordList.add(p, false); } } } coordList.add(pts[pts.length - 1], false); return coordList.toCoordinateArray(); }
return line.pointAlong(1 - ((len - mid) / line .getLength()));