我有一些三维坐标点(x,y,z)的列表 对于每个列表,我想将其分成两个列表,一个包含剖面上部的点,另一个包含下部的点,就像这样:
我的问题是:如何从具有它们的坐标(x,y,z)的点中确定哪些点应该属于上部,哪些点应该属于下部。
我有一些三维坐标点(x,y,z)的列表 对于每个列表,我想将其分成两个列表,一个包含剖面上部的点,另一个包含下部的点,就像这样:
我的问题是:如何从具有它们的坐标(x,y,z)的点中确定哪些点应该属于上部,哪些点应该属于下部。
由于很多时候点可以以“一半”的方式分割,因此有更多的标准来分割它们是很好的。
在这种情况下,似乎您正在寻找一条曲线,可以将点云分割成与该点云相似形状的形状。适合覆盖您的形状的曲线类型可以帮助。二阶或三阶多项式可能适用于这些形状。
第二个想法是创建通过“几何中心”的东西。在2D情况下,您可以使用中轴线方法。可以通过Delaunay三角剖分计算点云。如果点接近某个平面,则可以将它们投影到该平面上并使用此方法。
0,0
(左上角)到每个点投射一条线。如果它与另一条线相交以到达那里,它就不在上侧。如果没有,则是。将相邻的边连接起来形成线条,逆时针角度为正.. 在云的上部,连续的线条角度逐渐增加.. 而在下部,连续的线条角度逐渐减小..
一些试错应该会带你找到合适的启发式方法..
n/2
个点(按顺时针方向)标记为“顶部”。然而,这只适用于特定情况,你已经确认不是这种情况了。 - Geobits