【发布时间】:2019-10-23 07:50:29
【问题描述】:
我有一个顶点列表,并且我知道它们之间的连接。我试图找到顶点的所有多边形。这些多边形不应重叠。
我做了一些研究,我认为我可以检测多边形形状,如果我可以顺时针遍历顶点,(或逆时针,没有区别)。 所以,我寻找解决方案以顺时针遍历顶点。我找到了similar topic 并尝试了建议的解决方案。但问题是在遍历顶点时,当有多个顺时针选项时,我无法决定选择哪条路径。
基本上,我想找到以下多边形:
* A, E, G, C, D, A
* E, F, G, E
* E, B, F, E
当我从 A 出发到 E 顶点时,如何决定选择 G 路径?
P.S:如果我的方法不适合这个问题,或者有更好/更简单的解决方案,我愿意接受与我不同的方法
【问题讨论】:
-
How can I decide to choose G path我猜你不应该,你可以找到一个顶点数量最少的多边形,然后切割它(删除非共享边,或以某种方式将多边形标记为已删除)。然后找到顶点数量最少的下一个多边形,等等...... -
是的,找到顶点数量最少的多边形将是另一种方法。但是,接下来需要回答两个问题: 1. 如何找到顶点数最少的多边形? 2.如何解决重叠问题?请参阅example image。在这种情况下,ABC、ABD、ACD、BCD。都有最少的顶点数。我如何决定丢弃 ABC 并保留其余部分?
-
好的,在谷歌搜索“最短周期”时,我想我已经找到了您问题的答案:math.stackexchange.com/questions/8140/…
-
您需要更清楚地解释“顶点的所有多边形”。例如,您为什么不选择 AECD?还是三角形ACD?为什么像 Delaunay 三角剖分算法这样的东西不适合您的目的?
-
@Renat 谢谢,这个问题有一个相关的问题(stackoverflow.com/questions/4023310/…),我认为这与我的相同。接受的答案与您建议的几乎相同。还提供了伪代码和代码的工作版本:gist.github.com/mastoj/750015 但是,它并没有解决我在之前的评论中提到的重叠问题。
标签: algorithm math geometry polygon planar-graph