【问题标题】:Finding 2 vectors knowing their cross product and one constraint找到 2 个知道它们的叉积和一个约束的向量
【发布时间】:2016-10-28 20:00:25
【问题描述】:

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

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

【问题讨论】:

  • 添加对 a 长度的假设(如 a_x^2+a_z^2 = 1)应该可以。
  • @JohnMoeller 我同意...我的答案基于它和向量的数学属性...

标签: math vector 3d linear-algebra


【解决方案1】:
  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|
    

    John Moeller 在他的评论中也提到了这一点

  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 个向量都相互垂直,而一个指向特定方向(Up 或 North ...),并且所有向量的大小通常为 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)

【讨论】:

    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 2021-12-15
    • 2011-01-06
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多