找到 2 个知道其交叉乘积和一个约束的向量



我必须在 3D 空间中找到两个向量,ab已知ca x b = c。我还知道一个约束,假设a_y = 0
所以我必须在(c_x)x+(c_y)y+(c_z)z=0平面上寻找这 2 个向量,对于向量a我可以将其简化为(c_x)x+(c_z)z=0
对于向量b因为它垂直于a,它也必须在平面和(c_x)x+(c_y)y+(c_z)z=0平面(a_x)x+(a_z)z=0交。
添加交叉积方程后,我有4方程和5未知数(a_x,a_z,b_x,b_y,b_z)。我该如何解决这个问题?
提前感谢。

编辑:也许解释我需要这些会以某种方式有所帮助.
我有相机方向矢量,我需要指向屏幕右侧的矢量,第二个指向上方。

  1. 问题定义

    A,B=?
    C=!
    Ay=!
    A x B = C
    

    由于垂直性,点和叉积的隐含性质:

    (A.C) = 0
    (B.C) = 0
    |A|.|B| = |C|
    
  2. 将其中一个向量的length设置为任何已知的常量,例如1

    |A|=1
    |B|=|C|
    

    约翰·默勒在他的评论中也提到了这一点

  3. 计算A

    因此,|A|=1长度和(A.C)=0的点积,因为它们是垂直的,因此:

    Ax^2 + Ay^2 + Az^2 = 1
    Ax.Cx + Ay.Cy + Az.Cz = 0
    

    这是2方程组,2未知数,所以解决它。这将导致2解决方案选择非零。

  4. 计算B

    我们知道B垂直于C所以(B.C)=0所以把约束放在一起:

    A x B = C
    Bx.Cx + By.Cy + Bz.Cz = 0
    Bx^2 + By^2 + Bz^2 = Cx^2 + Cy^2 + Cz^2
    

    如果你展开叉积,你会得到5方程和3未知数。所以求解系统(选择任何3非平凡方程)。

PS似乎这是为了生成您的NEH矩阵类比

因此,如果是这种情况,所有 3 个向量都彼此垂直,而一个指向特定方向(UpNorth...),并且所有向量的大小通常1

因此,让我们假设D向量是已知的对齐向量:

A'= C x D
B = C x A'
A = C x B

您可以更改操作数的顺序以获取所需的方向。如果D未知,那么您可以使用(1,0,0)(0,1,0)(0,0,1)选择与C不平行的...或拥有最大的(C.D).另请查看:

  • 如何找到视点坐标?

[注释]

点积:(A.B)=Ax.Bx+Ay.By+Az.Cz
交叉积:A x B
长度:|A| = sqrt (Ax^2 + Ay^2 + Az^2)

相关内容

  • 没有找到相关文章

最新更新