我想,以填补扫描线algorith多边形。 为了这个,我要知道那里的扫描线开始与多边形接触所有点。 我写了一个循环这一点,但它显然不工作(它永远不会添加一个点,这意味着它无法找到其切割面的任何点的列表),我可以创建一个多边形,并有从它所有的边缘。
这里是我得到相交多边形XMIN,XMAX,y最小和y是从多边形最大点扫描线的点代码。 他们也是正确的。 包含()检查,如果点在多边形内部,在使用java.awt.Polygon中类。 这是工作压力太大。 wasInside包含一个布尔值,它节省了老态,如果最后的检查点是在多边形内部或没有。
boolean wasInside = false;
ArrayList<Point> intersectionPoints = new ArrayList<Point>();
for (int yTemp = ymin; yTemp <= ymax; yTemp++) {
for (int xTemp = xmin; xTemp <= xmax; xTemp++) {
if (wasInside != this.contains(new Point(xTemp, yTemp))) {
intersectionPoints.add(new Point(xTemp, yTemp));
wasInside = !wasInside;
}
}
}