-1
我目前正在研究物理引擎和渲染引擎之間的中間體。我的物理引擎需要一系列力量和位置並返回一個四元數。旋轉矩陣問題
我目前正在使用我以前的問題(這是工作正常)的答案將該四元數轉換爲旋轉矩陣。我的座標系統是z - 進入屏幕,y向上和x向右。
現在畢竟,我一直在測試通過旋轉一個單一的軸。我可以繞y軸和z軸旋轉,沒有任何問題。但是,當我嘗試圍繞z軸旋轉時,系統產生了一個奇怪的結果。旋轉很好,但旋轉時,物體會在z方向變平(即:負縮放),然後「翻轉」並返回到滿刻度。它每90度就會這樣做,與基本方向相差45度。
這是我的代碼,我的四元數轉換爲旋轉矩陣:
Matrix4f output = new Matrix4f();
output.setIdentity();
if(input.length()!=0){
input.normalise();
}
float xx = input.x * input.x;
float xy = input.x * input.y;
float xz = input.x * input.z;
float xw = input.x * input.w;
float yy = input.y * input.y ;
float yz = input.y * input.z;
float yw = input.y * input.w;
float zz = input.z * input.z;
float zw = input.z * input.w;
output.m00 = 1 -2*((yy+zz));
output.m01 = 2*(xy+zw);
output.m02 = 2*(xz-yw);
output.m10 = 2*(xy-zw);
output.m11 = 1 - (2*(xx+zz));
output.m12 = 2*(yz+xw);
output.m20 = 2*(xz+yw);
output.m21 = 2*(yz+xw);
output.m22 = 1-(2*(xx+yy));
現在,我在實時爲對象的旋轉查看此,我看什麼,不應該存在。此外,這直接傳遞給opengl,所以它超出了我爲什麼我應該有這個問題。有任何想法嗎?
釘它,太感謝你了。 – Peter