今天花了不少時間去理解yaw pitch roll的變換順序
比如給定乙個旋轉(15, 30, 60),那麼物體應該先圍繞哪個軸轉呢?總得有個順序吧?
我自己理解這個問題是opengl的右手座標系,即:y是上下,x是左右,z是內外。對應一下:yaw是對y軸旋轉, pitch是對x軸旋轉,roll是對z軸旋轉。
先搞清楚了這個才能繼續思考後面的問題,網上的資料不管是國內還是國外,都是千奇百怪的座標系,所以讀起來總不通暢。
第二個坑就是:搞清楚了座標系變換分為 intrinsic 和 extrinsic,簡單來說,就是圍繞第一根軸旋轉完了以後,接下來圍繞旋轉的第二根軸是世界座標系的軸,還是當時情況下(旋轉完第一根軸後)的區域性座標系軸。intrinsic是指始終圍繞當前情況下的區域性座標系旋轉,extrinsic是指圍繞絕對不動的座標系軸旋轉。yawpitchroll用的是intrinsic,即下次旋轉的軸是本地座標系的軸。
這裡就有乙個需要注意的問題,按照yawpitchroll的順序,第一感覺矩陣乘法的順序是r*p*y*vertex(opengl是左乘),但是請注意!!!!矩陣乘法是extrinsic的!!!所以順序要反過來變成y*p*r*vertex!!!
我在這個地方繞了好幾個小時。這裡必須要用舉例來說明:假設我們要圍繞y軸轉45度(記做矩陣y),再圍繞旋轉後的x軸轉30度(記做矩陣x)(intrinsic)。
如果我們寫成 x * y * vertex,實際上表明的是,先圍繞父空間的y軸旋轉,再圍繞父空間的x軸旋轉。
但是我們實際上想表達的是,圍繞y軸旋轉後本地的x軸旋轉,所以我們需要預先計算出座標系圍繞自己x軸旋轉的矩陣,就是y*x(表示在y空間裡旋轉)。
所以最後順序變成了y * x * vertex。這裡非常繞,一定要牢記在依次旋轉的時候,到底是extrinsic還是intrinsic!
普通的矩陣連乘是extrinsic,如果要變成intrinsic,需要自己再琢磨一下!
現在解決最後乙個問題,旋轉圍繞軸的順序是什麼。答案是:先yaw(y軸),再pitch(x軸),最後roll(z軸)。一定要注意,這是opengl的座標系!
那為什麼不採用其他順序呢,我谷歌了半天也沒有找到乙個合理的答案,但是我自己試出來了乙個現象,不知道是否是這個原因:
如果採用這個順序有乙個好處,旋轉完y軸以後,不論你如何旋轉x軸,都不會影響這次變換在y軸上的數值;同理,旋轉完x軸後,無論你如何旋轉z軸都不會影響這次變換在x,y軸上的數值。比如給定乙個旋轉(15, 30, 60),按照yaw pitch roll的順序(即先30,再15,最後60)之後,世界座標系中看,旋轉的角度也是(15,30,60)。如果不用這個順序,你就會發現後面的變換會影響前面的結果,比如先x軸15度,再y軸30度,最後z軸60度,換到世界座標後,x的值就不是15度了。
如果有人明白更深一層原理的,歡迎不吝賜教!
coxbox變換 python CO的變換
合成氨原料氣的淨化 1.緒論 氨是一種重要的化工產品,主要用於化學肥料的生產。合成氨生產經過多年的發展,現已發展成為一種成熟的化工生產工藝。合成氨的生產主要分為 原料氣的製取 原料氣的淨化與合成。粗原料氣中常含有大量的 c,由於 co是合成氨催化劑的毒物,所以 必須進行淨化處理,通常,先經過 co變...
座標變換,空間變換的本質
座標變換或空間變換,本質是相對座標的變化,絕對座標沒變。世界空間有兩個物體a,b。將a變換到b的座標空間意思是 將a從世界空間變換到b的區域性座標空間,也就是在b的區域性座標系中重新表示a的座標 也就是求出a在b座標系中的相對座標 做法很簡單 1,a b 得到乙個向量 v,2,把v分解 投影 到b的...
仿射變換和射影變換 等距變換 相似變換
參考 射影變換組成了乙個群,這個群被稱為射影變換群,n n可逆實矩陣稱為一般線性群gl n 當把相差非零純量因子的矩陣都視為等同時,便得到射影對映群,記為pl n 在平面,射影變換為pl 3 射影變換在平面的變換矩陣形式如下,也就是乙個3 3的矩陣。其中當上面矩陣的最後一行為 0,0,1 時的變換就...