求問物體從a位置到b位置,怎麼求其沿x y z軸的旋轉角度。?

以簡單三角形為例,平動+旋轉,從A位置到B位置,怎麼求其沿x y z 軸的旋轉角度?

求大神指點。謝謝!


這是個特別典型的描述剛體運動+旋轉的問題。

描述的方法不唯一。我只提供一種我認為方便的描述方法。

把運動+旋轉分解成剛體中心在坐標系的平移,以及剛體繞中心的旋轉。

題主給的三角形的例子很好(很省事),設三角形的三個頂點分別是ABC,最方便的用來做其中心的點當然是重心

P=frac{A+B+C}{3}(A、B、C和P都是xyz坐標系的三維向量)

剛體運動後頂點是A,所以三角形中心的位移是

P

接下來說旋轉。

根據歐拉關於剛體轉動的歐拉定理,剛體在三維空間中的任意旋轉(單次旋轉、多次旋轉)的最終效果,都可以分解為剛體繞某個軸的一次旋轉。前面已經把剛體的運動拆成了中心位移和繞中心兩步。中心位移是整體運動,與剛體自身繞中心的旋轉無關(相當於地球繞太陽公轉);旋轉和中心位移無關(相當於地球自轉),所以考慮旋轉時,就把坐標系建在剛體自身。為方便起見,另其中心P為坐標系原點,繞P點旋轉。題主問的繞x、y、z旋轉,不管怎麼轉,最後都等價於繞某個軸旋轉。

描述三維旋轉,有以下三種常見、常用、等價的方法:

  1. 四元數
  2. 軸、角
  3. 旋轉矩陣

我認為,軸、角是比較直觀的,所以這裡就只說軸、角。

根據歐拉定理,我們只要找到旋轉軸和繞旋轉軸轉過的角度就行了。

所謂旋轉軸,是一個單位矢量(我們用u來表示,U是坐標系一點,u是P到U的矢量,也就是u=PU)。頂點A繞u旋轉了角度varphi(根據右手規則,拇指沿旋轉軸u,旋轉順著四根指頭),也就是說旋轉前後矢量積滿足:

PA 	imes PA(PA、PA『和PU都是矢量)

剛體的「剛」就意味著,整體繞一個軸u旋轉varphi,那麼所有點都繞u旋轉varphi.

所以有:

varphi=arcsinleft(frac{vert PA	imes PA,以及

u=PU=frac{PA 	imes PA.

計算出來了旋轉軸u和旋轉角varphi, 就可以用四元數來表示旋轉:

q=cosfrac{varphi}{2}-sinfrac{varphi}{2}left( x_u i + y_u j + z_u k 
ight)

(關於四元數,要注意約定,分為剛體旋轉四元數和坐標系旋轉四元數,四元數q與矢量r的乘法q^{-1}rq表示旋轉矢量r,要看清楚約定的到底是q^{-1}rq還是qrq^{-1},關係到上面式子中的正負號)

x_u, y_u	ext{和}z_u分別是U的坐標分量,ijk是坐標矢量。

而有了四元數,就有旋轉矩陣了。有了旋轉矩陣,就知道繞x、y、z坐標軸各自旋轉了多少角度。這裡不寫了。題主可以作為練習題...

簡單小結一下,軸、角表述旋轉便於人類理解;四元數表述旋轉便於編程序;矩陣表示旋轉便於拆解為繞其他軸的旋轉。


我補充一個計算四元數的比較簡單的公式吧。

任何一個四元數可以看做一個標量部分s和三維向量部分vec{v}組成的,同樣的一個三維歐式空間的向量也可以看做標量部分為0的四元數。

以向量vec{u}為軸,將一個向量vec{v}旋轉	heta角的旋轉公式為vec{v}^{,其中q=cos(	heta/2)+vec{u}sin(	heta/2)

所以如果要求把單位向量vec{v}_1旋轉到單位向量vec{v}_2的朝向的話,注意夾角cos(	heta)=vec{v}_1cdotvec{v}_2,那麼

cos(	heta/2)=sqrt{frac{cos(	heta)+1}{2}}=sqrt{frac{vec{v}_1cdotvec{v}_2+1}{2}}

軸線法向量為vec{u}那麼有vec{v}_1	imesvec{v}_2=vec{u}sin(	heta),於是

vec{u}sin(	heta/2)=frac{vec{v}_1	imesvec{v}_2}{sin(	heta)}sin(	heta/2)=frac{vec{v}_1	imesvec{v}_2}{2cos(	heta/2)}=frac{vec{v}_1	imesvec{v}_2}{sqrt{2(vec{v}_1cdotvec{v}_2)+1}}

於是最終表示旋轉的四元數

q=(sqrt{frac{vec{v}_1cdotvec{v}_2+1}{2}},frac{vec{v}_1	imesvec{v}_2}{sqrt{2(vec{v}_1cdotvec{v}_2)+1}})


推薦閱讀:

可以可以推薦一些CATIA自學教程?
下載那個catia比較好?最近想學學
為什麼達索公司同時開發Catia和SolidWorks?

TAG:工程學 | CATIA | 工程機械 |