兩個向量ü之間的α角,V已知長度的可從它們的內(點)的產物<發現U,V >:
COS(阿爾法)= < U, v > /(|| u || || v ||)
也就是說,alpha的餘弦是兩個向量的內積除以它們長度的乘積。
所以你的第三個z分量可以是任何非零值。縮放任何或所有軸矢量的你得到的角度之後不會改變角度,讓我們假設(假設)鋯石= 1
現在前兩個向量很可能會成爲A =(1,0 ,0)並且B =(cos(gamma),sin(gamma),0)。這些都具有長度l,所以這兩個條件,以滿足與選擇C是:
COS(阿爾法)= < B,C >/|| ||Ç
COS(測試版)= < A,C >/|| ||Ç
現在我們只有兩個未知數Cx和Cy來解決。爲了簡單起見,我將把它們稱爲x和y,即C =(x,y,1)。因此:
COS(阿爾法)= [cos(伽馬)* X + SIN(伽馬)* Y]/SQRT(X^2 + Y^2 + 1)
COS(測試版)= X/!(SQRT(X^2 + Y^2 + 1)
由第二(假設的β除以所述第一方程不是直角),我們得到:
COS(阿爾法)/ COS(測試版) = COS(伽瑪)+ SIN(伽馬)*(Y/X)
這是一個線性方程來求解比r = Y/X。一旦你有了,在上面的第二個方程中代入y = rx,並且平方給出了x的二次方程:其中x = 0,其中x = 0,其中x = 0,^2
COS^2(測試版)=(1 - COS^2(測試版)*(1 + R^2))的x^2
X^2 = COS^2(測試版)/ [ (1 -cos^2(beta)*(1 + r^2))]
通過對方程進行平方,我們引入了一個工件根,對應於選擇x的符號。因此,檢查在「原始」第二個方程中得到的x的解,以確保得到cos(beta)的正確符號。
補充:
如果測試是一個直角,情況比上述更簡單。 X = 0被強制,並且我們只有解決y的第一方程:
COS(阿爾法)= SIN(伽馬)* Y/SQRT(Y^2 + 1)
磨邊和乘法遠分母爲y提供了一個二次方,與我們之前所做的相似。記住要檢查你的標誌的選擇。Y:
COS^2(阿爾法)*(Y^2 + 1)=罪^ 2(伽馬)* Y^2
COS^2(阿爾法) = [sin^2(γ)-cos^2(α)] * y^2
y^2 = cos^2α/ [sin ^2γ-cos ^2α]實際上,如果其中一個角度α,β,γ是直角,爲了簡化計算,最好標記該角度γ(在前兩個向量A,B之間)。
謝謝!我是*方式*過分複雜。我必須記住它可以分解方程!我認爲這就是我放棄這種方法的地方。再次感謝。 – Cyclone
歡迎!我們可以通過對兩個方程進行平方和清除分母來避免劃分方程,然後求解兩個未知數x^2和y^2(C的分量)中的兩個線性方程。然而,看起來有點尷尬,因爲x和y的符號都必須在那個時候檢查。如果它是編程而不是手動解決的話,這可能是值得考慮的。注意分母(x^2 + y^2 + 1)非零,因此不是編碼的特殊情況的來源。 – hardmath