我有一组 3D 点,它们形成一个不完美的圆,并按照它们在圆中出现的顺序存储。我通过计算所有点的平均位置将一个对象定位在环的中心,效果很好。现在,我想要的是中心的物体相对于其余点(即垂直于环)朝上/朝下。
我附上了一张图片来帮助阐明我的意思。有谁知道适合这个的算法吗?
最佳答案
您必须计算点形成的平面并获得其法线。
如果这些点完全共面,只需获取其中三个点,a
、b
和 c
,然后计算两个向量。法向量 n
是它们的叉积:
v1 = b - a;
v2 = c - a;
n = v1 x v2;
如果这些点不是完全共面的,您可以获得最适合这些点的平面,然后是它的法线。您可以通过求解 Ax=0
形式的线性方程组来获得平面。由于平面的一般方程是 Ax + By + Cz + D = 0
,每个 3D 点都有一个方程,得到这个系统:
| 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/