我有一个三维点的集合,这些点形成一个不完美的圆,并按照它们在圆中出现的顺序存储。我通过计算所有点的平均位置,将一个物体定位在圆环的中心,这很好现在,我想要的是中心的物体相对于其他点(即垂直于环)朝上/朝下。
我附上了一张图片来帮助澄清我的意思。有没有人知道一种适合这种情况的算法?

最佳答案

你必须计算出你的点形成的平面并得到它的法线。
如果点是完全共面的,只需得到其中的三个,即abc,然后计算两个向量。法向量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/

10-12 16:30