3

我有 3d (x,y,z) 中的点列表对于每个列表,我想将该列表分为两个列表,一个包含来自剖面上半部分的点,第二个包含下半部分,就像这样:

在此处输入图像描述

我的问题是如何确定哪一点应该去上半部分,哪一个应该去下半部分,仅仅通过这些点的坐标(x,y,z)。

4

3 回答 3

2

由于可以通过多种方式将点拆分为“两半”,因此最好有更多的标准来拆分它们。

在这种情况下,您似乎正在寻找一条分割点云的曲线,其形状与该云相似。可以覆盖您的形状的拟合曲线会有所帮助。可能二阶或三阶多项式适合这些形状。

第二个想法是创造一些通过“几何中间”的东西。在 2D 情况下,您可以使用中轴方法。可以通过 Delaunay 三角剖分计算点云。如果点在某个平面附近,您可以将它们投影到平面上并使用这种方法。

于 2013-09-06T07:36:58.337 回答
1

首先,在每个相邻点之间创建“线”。假设这些点在循环周围按顺序给出,这应该很容易。

然后,从0,0(左上角)到每个点画一条线。如果它与另一条线相交到达那里,它不在上面。如果没有,那就是。

它是 O(n^2),所以我确信有更好的解决方案,但是对于小点集,应该没问题。请注意,它不适用于非常凹的形状,但适用于所有显示的形状。

于 2013-09-05T18:12:25.023 回答
1

连接相邻边得到线。以逆时针角度为正。在云的上部,连续的线具有增加的角度。而在下部,连续的线具有减小的角度。

一个小试验和错误应该引导你到一个适当的启发式..

在此处输入图像描述

于 2013-09-10T06:37:16.257 回答