我正试图制作一个"手电筒"在我的游戏中,玩家只能看到他视线内的地方。
我通过光线投射到游戏世界中的每个顶点完成了大部分效果,并添加了额外的光线投射+ -0.0001 rad,然后按顺时针顺序连接它们以形成this shape in red。我试图在矩形水平的边界内得到这个多边形的倒数,类似于"反向选择" Photoshop (example)
等程序中的选项答案 0 :(得分:0)
为矩形和多边形构造一个集合并计算symmetric difference(矩形或多边形中的顶点,但两者中都没有),例如:< / p>
rectangle = [(0, 0), (13, 0), (13, 10), (0, 10)]
polygon = [(0, 5), (0, 10), (2, 6), (8, 6), (11, 0), (13, 0), (13, 10)]
# "^" is the symmetric difference operator in python
set(rectangle) ^ (set(polygon))
返回:
set([(11, 0), (2, 6), (0, 5), (0, 0), (8, 6)])
对应于下图中的绿色区域(顶点A,I,E,H,J):
请注意,它将获得红色多边形的补充,不包括原始图像中与墙壁的交点:
如果您希望结果是下一个图形的黄色多边形:
然后,您必须使用补充多边形为舞台中的每个墙/块执行矩形 - 多边形交集,使用类似于以下问题中描述的方法:
Method to detect intersection between a rectangle and a polygon?