我有3d(x,y,z)中的点列表 对于每个列表,我想将该列表分成两个列表,一个包含来自配置文件上半部分的点,另一个包含下半部分,就像那样:
我的问题是如何确定哪个点应该到达上部,哪个点应该从下部开始,只是从那些点的坐标(x,y,z)开始。
答案 0 :(得分:2)
由于积分可以通过多种方式分成“一半”,因此最好有更多标准来分割它们。
在这种情况下,您似乎正在寻找一条曲线,即分割点云,其形状类似于云。可以覆盖您的形状的类型的拟合曲线可以帮助。对于这些形状,二阶或三阶的多项式可能是有益的。
第二个想法是创造一些贯穿“几何中间”的东西。在2D情况下,您可以使用中轴方法。它可以通过Delaunay三角剖分计算点云。如果点靠近某个平面,您可以将它们投影到平面上并使用此方法。
答案 1 :(得分:1)
首先,在每个相邻点之间创建“线”。假设在循环周围按顺序给出点,这应该很容易。
然后,从0,0
(左上角)到每个点投射一条线。如果它与另一条线相交以到达那里,那么它不在上方。如果没有,那就是。
它是O(n ^ 2),所以我确定有更好的解决方案,但对于小的点数,它应该没问题。请注意,它不适用于极其凹陷的形状,但适用于所有显示的形状。
答案 2 :(得分:1)
连接相邻边以获得线条。将逆时针角度视为正值 在云的上部,连续的线具有增加的角度。 而在下部,连续的线具有减小的角度。
lil试验和错误应该引导你进行适当的训练..