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