我有一个三维点的集合,这些点形成一个不完美的圆,并按照它们在圆中出现的顺序存储。我通过计算所有点的平均位置,将一个物体定位在圆环的中心,这很好现在,我想要的是中心的物体相对于其他点(即垂直于环)朝上/朝下。
我附上了一张图片来帮助澄清我的意思。有没有人知道一种适合这种情况的算法?
最佳答案
你必须计算出你的点形成的平面并得到它的法线。
如果点是完全共面的,只需得到其中的三个,即a
、b
和c
,然后计算两个向量。法向量n
是它们的叉积:
v1 = b - a;
v2 = c - a;
n = v1 x v2;
如果点不是完全共面的,你可以得到最适合点的平面,然后,它的法线通过求解
Ax=0
形式的线性方程组,可以得到平面。由于平面的一般方程是Ax + By + Cz + D = 0
,因此每个三维点可以得到一个方程,从而得到该系统:| x1 y1 z1 1 | | A | | 0 |
| x2 y2 z2 1 | x | B | = | 0 |
| x3 y3 z3 1 | | C | | 0 |
| ... | | D | | ... |
| xn yn zn 1 | | 0 |
法向量是
(A, B, C)
。关于algorithm - 垂直于3D点集合的方向?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22733343/