嘿所以我在之前的回答中被告知要用多个凸形做出凹形,我会做以下几点:
但是我对一件事感到困惑。如果一行中的两个顶点是边界外的,你会怎么做?在到达第一个之后,您将起始点连接到它,但是在您再次开始再次操作之后立即进入另一个非边界点,只留下2个顶点可以使用:起点和新的非边界点。 我缺少什么?如果您没有凸包,请执行包装算法 得到一个凸出的边框,包含你所有的点(再次相当 快速)。 en.wikipedia.org/wiki/Gift_wrapping_algorithm
选择边界上的一个点作为算法的起点。
现在,通过你形状上的以下几点来看, 但不在凸边上。 找到一个时,创建一个包含顶点的新形状 起始点指向找到的非边界点。 最后将起始点设置为找到的边界点
递归现在是你的朋友:对每个新进行完全相同的过程 你做的子形状。
为了说明我的问题,这里有一个与此问题相关的形状:如果有人可以全部绘制并使用此算法遍历算法的步骤,那将会很棒。并使用第1点作为起点。
谢谢!
答案 0 :(得分:0)
假设您确实想要采用凸多边形(如图所示)并将其分解为凸部而不引入新顶点,通常的方法称为“耳剪切”,并在本维基百科文章中进行了描述,{{3 }}。在这种方法中,凸片是三角形,它们必须是凸的。
此问题已在Stackoverflow中使用CGAL计算几何软件Polygon triangulation进行了讨论。