我需要从一组点中获取所有多边形组合(凸面和凹面),并且看不到这样做的方法。
我正在考虑这两种方法
我是对的,还是绝对迷失了?
提前致谢
答案 0 :(得分:2)
我假设所有点都必须是多边形。
首先,我会实施backtracking方法。从一个点开始,如果它不与当前路径的边相交,则将边添加到非访问点,并在访问所有点时重复。最后,检查从第一个到最后一个路径点相交路径边缘。
可以执行其他检查以删除下一个可能的候选者。找到所有点的凸包。使用一个凸包的点作为起点,并假设路径(多边形)是定向的。这意味着多边形内部位于路径的左侧。必须以正序检查凸壳上的点。这意味着最后一个路径点不能连接到凸点,除了最后一次访问后(逆时针方向)。通过该检查,输入所有点为凸包点(例如,常规n-gon)的点集将产生宽度为1(列表)的搜索树。因为如果所有点都在凸包上,就不可能创建凹多边形,因为两个非邻居之间的任何连接都会以这两个部分之间没有边缘的方式分割出一组点,而不会与该边相交。