Algorithm 垂直于三维点集合的方向?

Algorithm 垂直于三维点集合的方向?,algorithm,vector,direction,Algorithm,Vector,Direction,我有一个3D点的集合,这些点形成一个不完美的圆,并按照它们在圆中出现的顺序存储。我通过计算所有点的平均位置,将一个物体定位在环的中心,这很好。现在,我想要的是,中心的物体相对于其他点朝上/朝下(即垂直于环) 我加入了一张图片来帮助澄清我的意思。有人知道适合这种情况的算法吗 您必须计算点形成的平面并获得其法线 如果这些点是完全共面的,只需得到其中三个,a,b,和c,然后计算两个向量。法向量n是它们的叉积: v1 = b - a; v2 = c - a; n = v1 x v2; 如果这些点不是完

我有一个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)

你必须计算点形成的平面并得到它的法向量

如果这些点是完全共面的,只需得到其中三个,
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)

你必须计算点形成的平面并得到它的法向量

如果这些点是完全共面的,只需得到其中三个,
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)

你必须计算点形成的平面并得到它的法向量

如果这些点是完全共面的,只需得到其中三个,
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)

根据前面的答案,当你求解具有n个点的最佳超平面法向量时,你会得到一个包含4个未知数的n个方程组。您需要将其中一个未知系数(比如D)设置为1这样的常数,并将相应的数据列移到右侧,这样您就不会得到简单的解决方案a=B=C=D=0。如果一个系数不为零,则可以安全地将其设置为1,因为如果按比例缩放,解决方案A、B、C、D仍然是一个解决方案。所以你得到了一个包含3个未知量的n个方程组,其中右边是一个全1的向量,而不是零向量,你的数据矩阵就是你的点矩阵,你的未知系数是a,B,C。一般来说,如果你有3个以上的点,这样的系统是超定的,所以你需要用线性回归来求解它。请参阅获取使用最小二乘最佳拟合求解3个系数的矩阵公式。

详细说明之前的答案,当您求解具有n个点的最佳超平面法向量时,您将得到一个包含4个未知量的n个方程组。您需要将其中一个未知系数(比如D)设置为1这样的常数,并将相应的数据列移到右侧,这样您就不会得到简单的解决方案a=B=C=D=0。如果一个系数不为零,则可以安全地将其设置为1,因为如果按比例缩放,解决方案A、B、C、D仍然是一个解决方案。所以你得到了一个包含3个未知量的n个方程组,其中右边是一个全1的向量,而不是零向量,你的数据矩阵就是你的点矩阵,你的未知系数是a,B,C。一般来说,如果你有3个以上的点,这样的系统是超定的,所以你需要用线性回归来求解它。请参阅获取使用最小二乘最佳拟合求解3个系数的矩阵公式。

详细说明之前的答案,当您求解具有n个点的最佳超平面法向量时,您将得到一个包含4个未知量的n个方程组。您需要将其中一个未知系数(比如D)设置为1这样的常数,并将相应的数据列移到右侧,这样您就不会得到简单的解决方案a=B=C=D=0。如果一个系数不为零,则可以安全地将其设置为1,因为如果按比例缩放,解决方案A、B、C、D仍然是一个解决方案。所以你得到了一个包含3个未知量的n个方程组,其中右边是一个全1的向量,而不是零向量,你的数据矩阵就是你的点矩阵,你的未知系数是a,B,C。一般来说,如果你有3个以上的点,这样的系统是超定的,所以你需要用线性回归来求解它。请参见获取用于求解3的矩阵公式