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

Math 找到2个知道其叉积和一个约束的向量,math,vector,3d,linear-algebra,Math,Vector,3d,Linear Algebra,我必须在三维空间中找到两个向量,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
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,B=?
    C=!
    Ay=!
    A x B = C
    
    由垂直度引起的点和叉积的隐含性质:

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

    |A|=1
    |B|=|C|
    
    约翰·默勒在评论中也提到了这一点

  • 计算
    A

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

        Ax^2 + Ay^2 + Az^2 = 1
        Ax.Cx + Ay.Cy + Az.Cz = 0
    
    这是由
    2
    方程和
    2
    未知数组成的系统,所以求解它。它将导致
    2
    解决方案选择一个非零的解决方案

  • 计算
    B

    |A|=1
    |B|=|C|
    
    我们知道
    B
    垂直于
    C
    so
    (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)
    。另请看:

    [Notes]

    点积:
    (A.B)=Ax.Bx+Ay.By+Az.Cz

    交叉积:
    A x B

    长度:
    A=sqrt(Ax^2+Ay^2+Az^2)

  • 问题定义

    A,B=?
    C=!
    Ay=!
    A x B = C
    
    由垂直度引起的点和叉积的隐含性质:

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

    |A|=1
    |B|=|C|
    
    约翰·默勒在评论中也提到了这一点

  • 计算
    A

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

        Ax^2 + Ay^2 + Az^2 = 1
        Ax.Cx + Ay.Cy + Az.Cz = 0
    
    这是由
    2
    方程和
    2
    未知数组成的系统,所以求解它。它将导致
    2
    解决方案选择一个非零的解决方案

  • 计算
    B

    |A|=1
    |B|=|C|
    
    我们知道
    B
    垂直于
    C
    so
    (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)
    。另请看:

    [Notes]

    点积:
    (A.B)=Ax.Bx+Ay.By+Az.Cz

    交叉积:
    A x B


    长度:
    | A |=sqrt(Ax^2+Ay^2+Az^2)

    添加对A长度的假设(如A|x^2+A|z^2=1)应该可以做到这一点。@JohnMoeller我同意。。。我的答案基于它和向量的数学性质……加上一个关于a长度的假设(比如a_x^2+a_z^2=1)就可以了。@JohnMoeller我同意。。。我的答案基于它和向量的数学性质。。。