我想弄清楚如何反轉RotateAxisAngle以獲得圍繞這些任意軸(或產生相同的淨旋轉的同等旋轉,不一定是相同的)的迴轉。有誰知道該怎麼做?我使用的是MathGeoLib,但是我沒有看到相反的方式,當你所有的是矩陣時,要返回關於軸的角度。逆轉RotateAxisAngle回到角度
這裏的前進方向代碼(RotateAxisAngle是MathGeoLib):
float4x4 matrixRotation = float4x4::RotateAxisAngle(axisX, ToRadian(rotation.x));
matrixRotation = matrixRotation * float4x4::RotateAxisAngle(axisY, ToRadian(rotation.y));
matrixRotation = matrixRotation * float4x4::RotateAxisAngle(axisZ, ToRadian(rotation.z));
現在我想回到程度,這些任意軸,以相同的順序(當然,拉斷Z,然後Y,那麼X),所以如果我再做一次,向前的方向,將產生相同的淨旋轉。
這裏的對應於一組旋轉的樣本/矩陣我張貼以上,如果有幫助,倒車回去吧:
axisX:
x 0.80878228 float
y -0.58810818 float
z 0.00000000 float
Rot about that axis:
30.000000 float
axisY:
x 0.58811820 float
y 0.80877501 float
z 0.00000000 float
Rot about that axis:
60.000000 float
axisZ:
x 0.00000000 float
y 0.00000000 float
z 1.0000000 float
Rot about that axis:
40.000000 float
形成這個矩陣,並存儲到一個文件,並需要檢索有關的旋轉軸以上(不含轉左右任何信息最初使用)
[4][4]
[0x0] 0.65342271 float
[0x1] -0.51652151 float
[0x2] 0.55339342 float
[0x3] 0.00000000 float
[0x0] 0.69324547 float
[0x1] 0.11467478 float
[0x2] -0.71151978 float
[0x3] 0.00000000 float
[0x0] 0.30405501 float
[0x1] 0.84856069 float
[0x2] 0.43300733 float
[0x3] 0.00000000 float
[0x0] 0.00000000 float
[0x1] 0.00000000 float
[0x2] 0.00000000 float
[0x3] 1.0000000 float
並不意味着_使用第一次旋轉的結果上的精確的負角度值來逆轉它_? –
float4x4 :: ToEulerXYZ()? https://github.com/juj/MathGeoLib/blob/master/src/Math/float4x4.cpp –
這樣就可以在單位軸周圍獲得歐拉而不是任意軸。 –