如何基于两个几乎垂直的向量创建正交基?

3

我正在尝试基于两个“几乎”垂直的向量创建一个正交坐标系,这些向量是从医学影像中推导出来的。例如,我有两个向量:

Z=[-1.02,1.53,-1.63];
Y=[2.39,-1.39,-2.8];

这两个向量几乎垂直,因为它们的内积等于5e-4。

然后我找到它们的叉积来创建我的第三个基向量:

X=cross(Y,Z);

即使这第三个向量与ZY并不完全正交,因为它们的内积大约是-15和-16,但我想那几乎为零了。为了将这组向量用作本地坐标系的正交基础,我假设它们应该几乎完全垂直。我最初认为可以通过将向量舍入到更少的小数位来实现这一点,但没有帮助。我想我需要找到一种方法稍微修改我的初始向量,使它们更加垂直,但我不知道如何做到这一点。
我会感激任何建议。

1
可能有帮助:http://en.wikipedia.org/wiki/Gram-Schmidt_process。您无需进行归一化;基本上,只需从Z中减去Y在Z上的投影。请注意,您仍然可能无法得到一个_精确_的零,因为浮点数就是这样。 - Danica
2个回答

3

正如上面指出的那样,Gram-Schmidt是正确的。

基本上,您想要从Y中减去在Z方向上的分量(注意:您也可以选择对Z进行操作)。

Y在Z方向上的分量为:

   dot(Y,Z)*Z/(norm(Z)^2)

(Y在Z上的投影)

请注意,如果Y与Z正交,则结果为0。

因此:

   Y = Y - dot(Y,Z)*Z/(norm(Z)^2)

而Z保持不变。


0

让 V=Y+aZ Z·V=0,因此您可以解决 a 并获得 V 现在使用 V 和 Z 作为您的基础

您可能需要规范化向量并使用双精度类型以获得所需的精度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接