2014-01-14 247 views
1

我從一個座標系和一個沿着Z軸的點開始,由P1 = [0 0 h] 和XY中的一個點由P2 = [h * tan(A),h * tan(B),0]給出的平面然後求解垂直於從P2指向P1的矢量的平面方程,即矢量= P1-P2。平面方程我得到的是以下內容:如何將一個三維笛卡爾座標系中的座標轉換爲另一個三維笛卡爾座標系

X * H * TAN(A)-Y * H * TAN(B)+ Z * H = 0。

現在我給定的四個點相對於該平面上,這個新平面的原點與原平面中的P2相同。

四點使一個矩形,並有:

[L*tan(C), L*tan(D), 0] 
[L*tan(C), -L*tan(D), 0] 
[-L*tan(C), -L*tan(D), 0] 
[-L*tan(C), L*tan(D), 0] 

我究竟會如何將這些點到原來的座標系? 我知道這涉及翻譯和旋轉,當我看到我的問題時,我只能找到翻譯和旋轉的情況分開,而沒有一個是兩者的組合。

旋轉變換的工作原理是什麼?如果我已經知道它圍繞X軸旋轉A度並且圍繞Y軸旋轉B度怎麼辦?那麼我可以在那種情況下做簡單的觸發來追蹤這個值嗎?或者是不是那麼簡單,我必須圍繞它必須旋轉的軸旋轉它,以便匹配回原始座標系?

在MATLAB中是否有一個函數可以插入說3個點定義一個座標系,另一個3個點爲第二個座標系,然後給我變換矩陣?

請讓我知道,如果我的措辭不清楚,這個三維問題是非常難以形象化我似乎無法弄清楚如何編寫所有的觸發器,並希望以數學方式嘗試它...但如果你偶然知道一個更簡單的解決方案,那麼更直截了當的建議吧!

+1

我們可以簡化問題嗎?也許:「給定由原點O1和3個正交單位向量X1,Y1和Z1(因此Z1 = X1 x Y1)定義的座標系中的一個點,如何在由O2,X2給出的另一個座標系中表示該點,Y2和Z2(其中X2,Y2和Z2也定義了右手正交歸一基)?「如果您提出類似的問題,我們不必深入瞭解您的用例的細節,這個問題可能會幫助其他讀者。這是否接近你所需要的? –

+0

是的,我相信這就足夠了。 – Niseonna

回答

2

回答問題的削減版本(見註釋):

在通過原點O1給定的座標系中表達,與軸矢量A點X1Y1Z1具有座標P=(x1, y1, z1)在於座標系統。類似地,在原點O2和軸向量X2,Y2Z2的第二座標中,相同的點被表示爲P=(x2, y2, z2)。 (注意座標小寫,點和矢量大寫)。

什麼這實際上意味着:

P = O1 + x1 X1 + y1 Y1 + z1 Z1 and 
P = O2 + x2 X2 + y2 Y2 + z2 Z2 

設置這些彼此相等,並以矩陣形式寫他們:

[ O11 ] [ X11 X12 X13 ][ x1 ] [ O21 ] [ X21 X22 X23 ][ x2 ] 
[ O12 ] + [ Y11 Y12 Y13 ][ y1 ] = [ O22 ] + [ Y21 Y22 Y23 ][ y2 ] 
[ O13 ] [ Z11 Z12 Z13 ][ z1 ] [ O23 ] [ Z21 Z22 Z23 ][ z2 ] 

讓我們分別稱之爲每側M1M2矩陣,使用原點作爲列向量,並調用列點向量p1p2。如果每個系統的座標軸是線性獨立的,那麼M1和M2是可逆

O1 + M1 p1 = O2 + M2 p2 

:然後我們就可以編寫前面的方程。如果他們是orthogonal,那麼每個的倒數就是它的轉置!所以我們得到:

p1 = Transpose[M1] (O2 - O1 + M2 p2) and similarly going the other way 
p2 = Transpose[M2] (O1 - O2 + M1 p1) 

您可以閱讀基礎here的變化更一般的治療方法,但我想我帶下來的治療將讓你編寫代碼更快。