2017-08-17 88 views
0

我已經讓我的3D場景的相機按照需要旋轉,但要做到這一點,我使用SensorManager.getOrientation(rotationMatrixIn, eulerAnglesOut);轉換爲歐拉角,所以我可以在重新計算旋轉之前將90加到音高上矩陣從修改的歐拉角。我將90度加到音高上,這樣我的旋轉就可以用於立體地圖,當手機垂直於地面時,Y向上。旋轉關於什麼是間距歐拉角的旋轉矩陣

我使用歐拉角度,因爲這使得直觀地旋轉90度的音高。但是,當手機靠近垂直方向並且音高接近-90或90度時,我現在正受到萬向節鎖的困擾。視圖在接近這些角度時快速旋轉180度(在滾動和方位軸)。當我使用未修改的旋轉矩陣時,不會發生這種情況,但是我沒有我需要的方向更正。

我在繞過歐拉角轉換所需的數學方面遇到了困難,並且直接將旋轉矩陣旋轉90度,旋轉角度爲歐拉角中的X軸,並反轉滾動。我可以訪問圖書館(矩陣和四元數)中的各種數學課程,這些課程可以相互乘數並轉換成Eulers。

我想旋轉什麼是X軸。有沒有辦法做到這一點,而不引入萬向節鎖?

澄清:我所說的歐拉角是-Z,X,Y階,其中X是球場。

+0

糟糕我的意思是後乘,抱歉。這取決於您使用哪種約定 - 即OpenGL或DirectX – meowgoesthedog

回答

0

由於@meowgoesthedog在已刪除的註釋中聲明,旋轉矩陣應該乘以一個圍繞X軸旋轉90度的矩陣。

從Android的傳感器的旋轉矩陣設備取向轉換爲世界的方向,因此通過某些其它矩陣左乘它像第一座標系轉換之前應用旋轉到設備。

我也被Android的行主矩陣排序絆倒了。矩陣必須反轉,才能進入OpenGL的列主要排序。我的歐拉角很好,因爲他們隱藏了這種不一致。