2016-06-26 35 views
1

我必須在3D空間中找到兩個矢量,ab,例如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)。我該如何解決這個問題?
在此先感謝。找到2個矢量,知道它們的叉積和一個約束

編輯:也許解釋我需要這些將以某種方式幫助。
我有攝像機方向矢量,我需要指向屏幕右側的矢量,第二個指向。

+1

添加的假設在樂(如a_x^2 + a_z^2 = 1)應該這樣做。 –

+0

@JohnMoeller我同意......我基於我的答案和矢量的數學屬性... – Spektre

回答

0
  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)

相關問題