我有一个任意的线段列表,我希望与视口相交。什么是从该视口中获取另一个线段列表的方法。
假设视口是正方形。任何给定的线段都可以被丢弃(如果线段不与视口相交),或者如果它在至少2个点与视口相交时被剪裁。
到目前为止,我有这个:
public LineString [] intersectWithViewport
(Linestring[] input, double centerX, double centerY, double length) {
GeometryFactory gf = new GeometryFactory();
double halfLength = length / 2;
Coordinate upperLeft = new Coordinate(centerX - halfLength, centerY - halfLength);
Coordinate lowerLeft = new Coordinate(centerX - halfLength, centerY + halfLength);
Coordinate lowerRight = new Coordinate(centerX + halfLength, centerY + halfLength);
Coordinate upperRight = new Coordinate(centerX + halfLength, centerY - halfLength);
Coordinate[] viewPortCoords =
new Coordinate[]{upperLeft, lowerLeft, lowerRight, upperRight};
LinearRing lr = gf.createLinearRing(viewPortCoords);
Geometry viewPort = gf.createPolygon(lr, null);
Geometry segments = gf.createMultiLineString(input);
Geometry intersection = segments.intersection(viewPort);
...
}
如何从LineStrings
几何图形中获取intersection
?