坐标系转换分析
從二維坐標系說起:
二維平面直角坐標系定義可分為兩類,從逆時針角度看,第一類為X坐標軸在Y坐標軸后;第二類為X坐標軸在Y坐標軸前。
有這兩類坐標系添加第三個坐標軸Z,得到空間直角坐標系,在默認添加的坐標軸Z垂直紙面朝向外側下,分別得到左手空間直角坐標系和右手空間直角坐標系。
而對于坐標的轉換,最簡單的依然從二維坐標系講起。
以第一類二維平面直角坐標為例,涉及的坐標轉換有下圖中4種情況:a,b,c,d.
基礎一 原坐標系坐標轉到新坐標系
?a與b為已知原坐標系下坐標,從原坐標系(藍色表示)旋轉角度θ,獲得新坐標系下坐標(紅色表示):
此處注意:定義角度的正負應統一,即存在原坐標系與新坐標系的概念,新坐標系相對于原坐標系的旋轉角度為逆時針時為正值。
針對情況a有:
?
即:
?
(注:從簡單直觀方面理解為,當原坐標系轉角度θ到新坐標系過程中,y坐標值在新坐標系中是變大的,x坐標值在新坐標系中是變小的。因此,y方向的三角系數都為正,x方向存在負值情況。可以標記為沿旋轉方向數,第一條坐標軸數值是變大的,條件是旋轉方向角度為無符號數值。)
因此,針對a和b兩種情況,由原坐標系經過旋轉一定角度,轉換到新的坐標系下,得到的旋轉矩陣為:
?
其中θ為具有正負號的角度值,當為正值時代表原坐標系沿逆時針旋轉;為負值時代表原坐標系沿順時針旋轉。
基礎二 新坐標系坐標轉回原坐標系
而情況c與d是表示已知新坐標系下坐標,經過坐標轉換獲得在原坐標系下坐標:
此處注意:定義角度的正負應統一,即存在原坐標系與新坐標系的概念,新坐標系與原坐標系的旋轉角度為逆時針時為正值。
在c與d情況中,因為定義了逆時針旋轉角度為正,所以c中旋轉的角度為(-θ),d中旋轉的角度為(θ)。而沿逆時針旋轉時,在該方向上第一條坐標軸為Y軸,所以基本公式為:
小結:
定義了坐標軸的指向,以及新坐標系與原坐標系旋轉角度的正負關系后,可以確定原坐標系轉到新坐標系運算與你運算正弦系數符號變換。
因此,要確定旋轉矩陣內容必須要確定兩個因素,一是坐標軸的指向,二是旋轉角度的正負定義。
(1)當存在原坐標系與新坐標系概念時,必然的旋轉角度的正負定義必須一致,此時由原坐標系到新坐標系的轉換,可嚴密的進行返回坐標轉換。
(2)當只存在當前坐標系下坐標轉到另一個坐標系下坐標時,根據確定的旋轉角度正負,參考基礎一即可轉換?;A一中只表示了逆時針旋轉角度為正的情況,順時針旋轉為正的情況可仿照進行。
(3)無論什么情況下,選取旋轉角度定義為正(無論逆時針還是順時針旋轉)時作為基礎,沿旋轉方向數的第一條坐標軸的坐標值應變大,即在新坐標系下對應該坐標軸上的坐標值組合為cos+sin的形式,而另一坐標軸上坐標值為-sin+cos形式。
在基礎一與基礎二中都可印證(3)的說明。再增加一條印證示例:
在情況e中,定義從藍色坐標系旋轉到紅色坐標系,定義圖中狀態的旋轉角度θ為正,則此時坐標轉換關系為:
?
情況f中,依然定義圖中狀態為旋轉角度θ為正值,但是從紅色坐標系轉到藍色坐標系:
從旋轉方向遇到的第一個坐標軸Y坐標開始整理,則有:
?
旋轉矩陣的形式依然是正規形式,以x,y為順序排列為:
?
在情況e中定義了目標坐標系在原坐標系的逆時針方向為正,情況f中定義了目標坐標系在原坐標系的順時針方向為正,這兩種情況從純坐標系的轉換方面印證了上面(3)中總結的,即以正值旋轉角度為基礎,沿旋轉方向第一條坐標軸上的坐標為cos+sin形式:e中第一條坐標軸為x軸,f中第一條坐標軸為y軸。從坐標轉換與逆轉換方面印證了(1)中總結結果,即存在正轉換與逆轉換時,定義的正旋轉角度應一致,此時的正反旋轉矩陣相乘為單位矩陣。
?
基礎三 平面坐標系中討論左右手系的轉換問題
情況h中從藍色坐標系旋轉角度θ到紅色坐標系下,兩坐標系的坐標軸向定義不同,產生類似左右手系問題,在這類轉換中,首先將目標坐標系的軸向假設與原坐標系軸向定義為一類,然后更換坐標符號獲得兩坐標系的轉換。
第一步:假設X’與Y’軸互換,此時原坐標系與目標坐標系定義類似,相差角度θ,定義目標坐標系與原坐標系之間逆時針旋轉角度為正,得到:
?
根據假設坐標與真實坐標關系獲得兩坐標系真實關系:
按順序排放整理:
即,進行左右系的坐標系轉換時的旋轉矩陣為:
以情況i作為驗證示例:
依然定義目標(紅)坐標系轉到原(藍)坐標系時,目標坐標系相對原坐標系旋轉角度為逆時針時為正。
假設原坐標系的坐標軸向與目標坐標系的軸向類似定義,為x(偽),y(偽)。
則
?
?
?
按順序整理得到:
得由目標坐標系轉回原坐標系的旋轉矩陣為:
由
得該轉換過程成立。
?
小結:在處理坐標系向量的順序整理時需要進行公式的元素調換。
(1)????針對等號左邊結果的調換如
要變為
?
時,只需等號右面矩陣的行進行相應對調:
?
(2)????只針對等號右面最后原坐標值向量內容調換時,等式的左右都需要變化。如
但是要保持等號左邊的向量順序不變時需要兩步:
第一步:首先利用(1)將等號左邊向量調換為:
驗證,變換后的結果與初始狀態一致。
?
基礎四 三維空間直角坐標系的正轉換問題
三維空間直角坐標的坐標轉換可由二維平面直角坐標轉換擴展來,在二維坐標系中的坐標轉換只有一個角度的旋轉,也就產生一個旋轉矩陣。在三維空間直角坐標系中存在三個方向的角度旋轉問題,因此產生三個旋轉矩陣相乘的結果。但是針對沿某一坐標軸旋轉某一角度時,又回歸到二維坐標旋轉問題。因此,三維空間直角坐標的坐標旋轉問題是三個二維平面直角坐標旋轉問題的順序操作問題。(但是由于某一角度旋轉后,后一角度的旋轉是否對前者有耦合效應,應該深入研究探討)
下面首先討論三維空間直角坐標系的坐標轉換問題。
以右手坐標系為例,研究原坐標系到新坐標系經過首搖,縱搖,橫搖角度的轉換過程以及逆過程。
A 原坐標系轉換到新坐標系
首先定義坐標系以及旋轉角度的正負定義
定義右手坐標系如圖,沿各坐標軸正向的反方向看,另外兩坐標平面沿逆時針旋轉時,定義為沿該坐標軸正角度旋轉。
由此定義沿X,Y,Z軸逆時針旋轉角分別為α,β,γ。
從X->Y->Z軸的順序,分別分析坐標轉換矩陣的形式。
沿X軸方向旋轉α角度時對應的關系圖
根據圖中關系可以得到第一次轉換后的坐標,由于沿X軸旋轉,所以新坐標中X信息不變。根據以上基礎問題的討論可以得到:
?
沿Y軸方向旋轉β角度時對應的關系圖
根據圖中關系可以得到第二次轉換后的坐標,由于沿Y軸旋轉,所以新坐標中Y信息不變。根據以上基礎問題的討論可以得到:
?
注:沿Y的旋轉矩陣與沿X軸的旋轉矩陣形式出現不同,原因在于,當沿X軸旋轉時,沿正旋轉角度的第一條邊為Y軸,即Y值變大。而沿Y軸進行旋轉時,第一條邊Z軸的對應值變大,而在向量擺放時Z值放在最下方,因此利用基礎問題三中的等號右邊最后向量重現擺放時需要整體變換,變換結果為以上所示。
?
沿Z軸方向旋轉γ角度時對應的關系圖
根據圖中關系可以得到第三次轉換后的坐標,由于沿Z軸旋轉,所以新坐標中Z信息不變。根據以上基礎問題的討論可以得到:
?
注:沿Z軸與沿X軸的旋轉矩陣類似,因為這兩種情況下按旋轉方向得到的坐標軸順序與XYZ順序一致,因此不需要進行順序重排,而沿Y軸旋轉時,Z軸在X軸前面,因此需要重排順序,重排后,矩陣形式發生變化。從另一個角度說,當沿Z軸和X軸旋轉時,坐標變大的分別為X值和Y值,因此其對應的矩陣行都為正,沿Y軸旋轉時,坐標變大的為Z值,因此Z坐標對應的行矩陣系數為正。
?
如果知道原坐標系通過沿X、Y、Z軸的順序進行旋轉到新坐標系,則新坐標系下坐標為:
基礎五 三維空間直角坐標系的逆轉換問題
若已知從原坐標系到新坐標系的角度旋轉關系,如原坐標系首先沿X軸旋轉α,然后沿Y軸旋轉β,最后沿Z軸旋轉γ。則坐標正轉換時(即)的公式:
?
進行三維坐標逆轉換時,一致新坐標系下坐標,以及新舊坐標系的角度旋轉順序和信息。
則由以上信息可推測坐標逆轉換為:
?
R(α)與R’(α),R(β)與R’(β),R(γ)與R’(γ)互為逆矩陣。旋轉順序為沿Z軸、Y軸和X軸進行轉換。
1.首先從Z軸轉換:
定義的沿Z軸逆時針旋轉時角度為正,此時進行的坐標轉換為從紅色坐標系到原坐標系的旋轉,即旋轉角度為(-γ)。針對從新坐標系(0-X’Y’Z’)到原坐標系的逆轉換有兩種方式:
(1)????采用原坐標系到新坐標系的旋轉角度正負定義獲取坐標轉換公式,然后將(-γ)代入公式即可:
根據前面所講,確定旋轉矩陣時,根據旋轉角θ正方向和第一個坐標軸X’可快速確定旋轉公式:?
將實際旋轉角度(-γ)代入得:
?
(2)????不考慮整個系統定義的角度正負(此時適應條件中只給出兩坐標系間的相差的角度,沒有正負定義時),按給出的角度(數值應為一個正值)和兩坐標系的實際旋轉關系確定旋轉矩陣。此時,由新坐標系(0-X’Y’Z’)順時針方向旋轉角度γ得到原坐標系下坐標,則在沿旋轉方向中第一條坐標軸為Y軸(即數值變大軸):
方法(1)和方法(2)的結果完全相同。但是方法(1)存在角度的正負定義問題,并且前后連貫一致,多在測繪中的姿態儀中出現,對于姿態儀中給出的姿態角度可以用一套公式表示(如方法1中結果的第一種表達方法),而方法(2)只存在一種結果形式,因此不適用存在整體性角度正負定義的問題。
則沿Z軸的旋轉矩陣
2.沿Y軸轉換
沿Y軸方向旋轉角度時對應的關系圖
根據圖中關系可以得到沿Y軸順時針旋轉β角度到原坐標系下,從定義的沿Y軸逆時針方向旋轉角度為正的角度確定旋轉角度為(-β)。在該圖中沿正旋轉角度時,第一個坐標軸為Z軸,所以得到的基本旋轉矩陣為:?
3.沿X軸旋轉
沿X軸方向旋轉α角度時對應的關系圖
由于沿X軸旋轉,所以新坐標中X信息不變。沿X軸順時針旋轉角度α得到原坐標系下坐標。根據定義的角度旋轉正負關系,定義逆時針旋轉角度為正,因此旋轉的角度為(-α)。沿X軸逆時針正旋轉時,第一個坐標軸為Y軸,因此基本公式為:
?
綜上,經過沿Z-Y-X軸的坐標你旋轉,將在新坐標系下坐標轉回到原坐標系下:
?
總結:從一個坐標系轉到新坐標系,一般需要定義旋轉角度的正負,一旦正負的方向定義后,從原坐標系到新坐標系的旋轉和從新坐標系到原坐標系的旋轉都可用這一個方向定義,此時需要考慮的是操作中出現了從原坐標系到新坐標的正轉換和新坐標系到原坐標系的逆轉換,逆轉換時須將采集的原坐標系到新坐標系的旋轉角度取反代入同一套公式。
另一種方法,對于只使用從原坐標系到新坐標系或者只使用新坐標系到原坐標系的旋轉過程時,可以單獨對旋轉過程定義一套旋轉角度正負使用問題,比如姿態中的橫搖一般定義為右舷下降為正值,那么假設當前橫搖值為+10°,要從姿態傳感器坐標系到水平坐標系,在XOZ平面,認為順時針方向旋轉為正值,則此時X軸坐標值應為旋轉變大方,因此系數組合為Xcos+Zsin模式,旋轉矩陣也就確定下來了。該例子中,旋轉矩陣的確定存在一下2個條件:(1)直接使用了姿態儀給出的數值;(2)定義了順時針方向為正方向(只有這樣定義,才能直接用姿態儀給出的數值,否則要取反使用).
?
總結
- 上一篇: 简单的抽卡模拟器1.2
- 下一篇: Freemarker动态模板渲染flyi