我正在寻找一种算法,当给定3D折线时,该算法可以提取所有单独的面孔。在下图中所示的示例中,红色绘制了3D折线(23个点),我要查找的8个面用黑色标记为1..8。
我自己的尝试:
在折线中找到三个共享相同Z坐标的连续点,这3个点定义了一个平面(例如:点23、1和2)。
现在开始沿着折线行走,对于两个后续点之间的每个向量,请查看该向量是否与这三个点在同一平面上。 这将给我一组向量(1-> 2),(7-> 8),(8-> 9),(9-> 10),(14-> 15),(15-> 16), (16-> 17),(22-> 23),最后是(23-> 1)。
此结果集中的端点明显等于该集中其他向量的起点的向量已连接,因此这给了我: (7-> 8-> 9-> 10),(14-> 15-> 16-> 17),(22-> 23-> 1-> 2)
但是现在有趣的部分开始了:我不知道如何可靠地确定应该将点2连接到7并将点10连接到22,但是(14-> 15-> 16-> 17)与第1张脸无关,而是一张独立的脸(因此17-> 14)。
所以,我的问题是:
A。如何解决上面最后一个要点中描述的“连接”问题
B。甚至更好:是否有针对该问题的现有算法(和实现?)记录在某处?