空间坐标系以及空间两三维坐标系转换矩阵解释
空間坐標(biāo)系以及空間兩三維坐標(biāo)系轉(zhuǎn)換矩陣解釋
因為工作的原因,需要進行不同坐標(biāo)系的一個轉(zhuǎn)換,在查閱了眾多的網(wǎng)頁之后,發(fā)現(xiàn)有用的沒幾個,而且眾多都是抄的同一篇文章,而且都是羅列以下旋轉(zhuǎn)的方式,幾乎沒有解釋旋轉(zhuǎn)角的物理意義,也不說這個旋轉(zhuǎn)角怎么得到的。在折騰了一天之后,終于弄清楚了,特意寫下來,既能有助于記憶,又能裝b,很好很強大。
基礎(chǔ)背景
空間三維坐標(biāo)系轉(zhuǎn)換,大多出現(xiàn)在像我似的搞地圖的這群B人里,當(dāng)然還有搞游戲的大佬們。所以需要對空間三維坐標(biāo)系做一個小的總結(jié),來防止忘記或者混亂。
具體圖形可百度,賴的放圖
- 地心坐標(biāo)系
空間三維坐標(biāo)系,左手系 - 高斯坐標(biāo)系
在搞激光點云的人眼里,基本上就指的是,當(dāng)前度帶(分3度帶和6度帶)中的高斯直角坐標(biāo)系,右手系,點云中記錄的點坐標(biāo)大多有經(jīng)緯度坐標(biāo)、高斯坐標(biāo),兩種坐標(biāo)。 - 像空間坐標(biāo)系
z軸正方向,與主光軸方向重合,x、y軸方向與相平面坐標(biāo)系平行。右手系 - 像平面坐標(biāo)系
xy軸方向與像素坐標(biāo)系平行,單位為m,是一個物理坐標(biāo)系 - 像素坐標(biāo)
單位為像素,在與像平面坐標(biāo)系進行轉(zhuǎn)換的時候,需要知道每個像素的物理尺寸
三維坐標(biāo)系轉(zhuǎn)換
為了通用性,前邊的空間坐標(biāo)系只做一個概念上的羅列,這里針對任意兩空間直角坐標(biāo)系的相互轉(zhuǎn)換進行解釋。
- 世界坐標(biāo)系XYZ:僅僅用于表述,不代表物理意義上世界坐標(biāo)系
- 局部坐標(biāo)系xyz
- 旋轉(zhuǎn)角:重點需要搞清楚,這個旋轉(zhuǎn)角是從哪個坐標(biāo)系旋轉(zhuǎn)到哪個坐標(biāo)系,在地圖行業(yè)里的多傳感器的聯(lián)合標(biāo)定中,這個旋轉(zhuǎn)角是由相應(yīng)的標(biāo)定文件提供的。
已知條件
其中,局部坐標(biāo)系的坐標(biāo)軸坐標(biāo)均為世界坐標(biāo)系下的坐標(biāo)值,這點非常重要,同時,兩空間三維坐標(biāo)系還有個平移向量,因為只是很簡單的坐標(biāo)值平移,這里就不再贅述,默認兩坐標(biāo)系的原點相同。
旋轉(zhuǎn)原理
這里盜一張圖(找了好久,看到的一個良心博客 http://www.skcircle.com/?id=515)
如上圖,P點為局部坐標(biāo)系的z軸上一點,q為點P在世界坐標(biāo)系ZOY平面上的投影點,r為點P在經(jīng)過旋轉(zhuǎn)之后的對應(yīng)點,如果你去查看了貼的那個網(wǎng)頁博客,請不要看他的旋轉(zhuǎn)方式,并不是大佬描述錯誤,而是不適用空間三維坐標(biāo)系的相互轉(zhuǎn)換,因為這里涉及到一個很蛋疼的說法,這個旋轉(zhuǎn)矩陣描述的是A坐標(biāo)系到B坐標(biāo)系轉(zhuǎn)換方式
世界坐標(biāo)系到局部坐標(biāo)系的旋轉(zhuǎn)矩陣R
注意:XYZ與xyz,我都會嚴(yán)格注意,不會寫錯!(寫錯老子就改!看其他博客的時候,就深受其害),為了描述方便,世界坐標(biāo)系的軸或者坐標(biāo)都會用大寫的XYZ來代替,局部坐標(biāo)用xyz來代替,而且為了防止0與O不好分辨,所有的0都用漢字零來表示
問:如何理解旋轉(zhuǎn)矩陣究竟是描述的A到B,還是B到A?
答:旋轉(zhuǎn)世界坐標(biāo)系,使得世界坐標(biāo)系與局部坐標(biāo)系重合,那么得到的這個旋轉(zhuǎn)矩陣,描述的是,世界坐標(biāo)系到局部坐標(biāo)系轉(zhuǎn)換關(guān)系,用公式來表達
local = R * world結(jié)合上方圖片:(注意理解旋轉(zhuǎn)角)
注意:其實順時針也可以,只需要保證所有的軸都同時為逆時針或者順時針即可,不過大家都通用逆時針而已,所以,請把順時針給從腦子里刪除
-
如何來獲取旋轉(zhuǎn)角度θ(而非向量夾角)
就需要用到向量的叉乘,來確定向量的左右側(cè)。這里要將OZ旋轉(zhuǎn)到Oq,那么OZ就是基準(zhǔn),需要知道Oq在OZ的左側(cè)還是右側(cè),圖里是在右側(cè),與逆時針相反,用叉乘表示: OZ ? Oq 得到的向量與X軸的乘積小于零,那么旋轉(zhuǎn)角度就應(yīng)該是θ = 360 - α,如果在OZ的左側(cè)的話,向量夾角就是旋轉(zhuǎn)角度,θ = α。旋轉(zhuǎn)的是X軸,那么矩陣描述應(yīng)該為Rx
旋轉(zhuǎn)的是軸,那么矩陣描述應(yīng)該為Ry
同理,求出旋轉(zhuǎn)角θ,這次旋轉(zhuǎn)的是世界坐標(biāo)系的Z軸,那么旋轉(zhuǎn)矩陣就是Rz,
結(jié)束
經(jīng)過上邊的三步旋轉(zhuǎn),就將世界坐標(biāo)系,旋轉(zhuǎn)到了局部坐標(biāo)系上,通過矩陣的左乘,就能得到世界坐標(biāo)系到局部坐標(biāo)系的旋轉(zhuǎn)矩陣R
R = Rz * Ry * Rx
完整坐標(biāo)值形式(加上偏移值)
local = R * world + T
其中T為世界坐標(biāo)系原點在 局部坐標(biāo)系中的坐標(biāo)
局部坐標(biāo)系到世界坐標(biāo)系的旋轉(zhuǎn)矩陣
但是現(xiàn)實中,往往是知道局部坐標(biāo)系原點在世界坐標(biāo)系中的坐標(biāo),因此,基本上都是求得局部坐標(biāo)系到世界坐標(biāo)系得旋轉(zhuǎn)矩陣(上邊的R,求個逆即可,自己玩去吧您那,賴的寫了)
2021.11.12號,補充
還是寫清楚吧,方便各位跟我一樣的小白。
上邊的旋轉(zhuǎn)矩陣R,描述的是world到local的旋轉(zhuǎn)方式,那么將R求逆得到W,同時知道局部坐標(biāo)系原點在世界坐標(biāo)系中的坐標(biāo)O,那么local坐標(biāo)轉(zhuǎn)到world坐標(biāo)的方式如下
總結(jié)
以上是生活随笔為你收集整理的空间坐标系以及空间两三维坐标系转换矩阵解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RDM-Redis可视化工具图文安装教程
- 下一篇: OTB50、OTB2013、OTB100