我想用一个以特定角度绘制的线条遮挡多边形。
我已经在PointsList的ArrayList中使用多边形的扫描线算法找到了所有点。
这意味着在ArrayList<ArrayList<Point>>
ArrayList<Point>
中,其中包含一个y值的多边形点。例如,矩形(2,2)
和(5,2)
的这两个点。因此外部ArrayList包含可以使用drawLine()
绘制的所有水平点。
现在我必须计算drawLine(x1,y1,x2,y2)
的终点x2和y2。
是否有可能为x2和y2获取多边形的正确点?
答案 0 :(得分:0)
尝试手动实现这一点非常困难。
考虑使用多边形作为Shape在Graphics2D中设置剪辑路径。然后,从多边形的边界矩形的基线上的点,绘制足够长的阴影线,使其超出边界矩形的平行线。
答案 1 :(得分:0)
您可以在wikipedia上查看如何查找折线交叉点。
唯一的困难是确保交叉点实际位于线段的右侧。一种选择是检查交叉点的坐标是否在由多边形边的两个端点形成的矩形的边界中。您只需比较坐标即可轻松完成此操作。
在多边形的两侧找到该线的交点后,您可以使用g.drawLine()
连接它们。
找到多边形两边(只要它是凸面的)的天真而简单的解决方案是遍历所有边,直到找到两个在边的边界有交叉点的方法。然后,只需连接这两个交叉点。