给定一个形成多边形的坐标(x, y)
列表,有一个特定的算法可用于查找单独多边形的数量"不会碰撞多边形" 这些点创造了吗?
如果没有算法/ s,那么计算这些单独多边形的最有效方法是什么?
我尝试过使用SAT但性能不好,因为我必须创建每个单独的多边形并检查它是否与其他所有多边形相撞。
为了说明我想要最终实现的目标,在下图中,您可以看到我想要计算/找到的多边形在某些情况下由连接方块组成。
另请注意,我实际上以方形中心的x, y
坐标开始,并根据半径计算角点,因此我可以访问这两种方法,但主要选择SAT的角点。
P.S。我在lua中这样做,但很乐意接受其他语言的代码示例/解决方案。
答案 0 :(得分:2)
这些论文描述了快速扫描线算法:
今井弘,高野孝夫,
Finding the connected components and a maximum clique of an intersection graph of rectangles in the plane,
算法杂志 4(1983)310-323
小时。 Edelsbrunner,J。诉Leeuwen,Th。奥特曼和D.伍德,
Computing the connected components of simple rectilinear geometrical objects in d-space,
RAIRO通知。 Theor。 18(1984)171-183。
答案 1 :(得分:0)
将每个多边形的所有边放在一个哈希表中,并将边作为键(具体来说,键将是边连接的两个角点,按排序顺序),多边形标识符作为值。在哈希表中添加边时,只需检查是否已存在相同的边(相同的键)。这样可以找到重复/共享边缘。