嗨我想旋轉openGL相機使用我的手機的陀螺儀。我能夠得到三個角度(X,Y,Z),但我找不到將它們轉換爲gluLookAt所需的方向矢量的方法。 相機被放置在(0,0,0),並應該做出與手機本身相同的旋轉。gluLookAt從陀螺儀角度向量
0
A
回答
0
gluLookAt需要三個矢量參數來計算正確的視圖矩陣。眼睛的位置(在你的情況下(0,0,0)),中心位置(照相機正在看的地方)和向上的向量(這裏是攝像機的「向上」方向)。
選擇初始攝像機方向後,對於許多應用,中心將爲(0,0,1)和向上方向(0,1,0)。你需要旋轉這些向量所需的角度。爲此,您可以將它們與旋轉矩陣R = Rx * Rz * Ry相乘,其中Rx,z,y是給定軸上給定角度的旋轉矩陣。如果您使用glm,eigen或類似的任何數學軟件包,您可以輕鬆構建這些軟件包。你甚至可以自己實現它們(http://en.wikipedia.org/wiki/Rotation_matrix)。
請注意,如果眼睛位置不是(0,0,0),則必須旋轉方向矢量,而不是中心矢量。方向矢量=中心 - 眼睛。
所以,有點僞代碼:
vec3 eye = .....
vec3 initCenter = .....
vec3 initDirection = initCenter - eye;
vec3 initUp = .....
mat3 rotation = rotate((1,0,0),xAngle) * rotate((0,1,0),yAngle) * rotate((0,0,1),zAngle);
gluLookAt(eye,eye + rotation*initDirection,rotation*initUp)
實現可能看起來有點不同,你可能需要使用vec4/MAT4,例如GLM產生尺寸4×4的旋轉矩陣。
相關問題
- 1. 從陀螺儀獲得角度
- 2. iPhone傾斜角度 - 使用陀螺儀?
- 3. iPhone/iPad陀螺儀
- 4. iOS陀螺儀API
- 5. 從陀螺儀數據中計算出旋轉角度
- 6. 陀螺儀vs加速度計?
- 7. 加速度計和陀螺儀數據
- 8. IOS加速度計/陀螺儀問題
- 9. 陀螺儀CMAttitude俯仰,滾轉和偏航角度問題
- 10. 使用四元數來表示C中的陀螺儀角度#
- 11. 陀螺儀傳感器漂移和正確的角度估計
- 12. iOS - 陀螺儀樣本
- 13. 沒有陀螺儀的VR
- 14. Android陀螺儀示例?
- 15. iPhone 4沒有陀螺儀?
- 16. 使用陀螺儀和加速度計獲取方向
- 17. 從陀螺儀+加速度計數據計算四元數
- 18. 從加速度計和陀螺儀(IMU)獲取軌跡
- 19. 從陀螺儀或加速度計獲取數值
- 20. 陀螺儀更新核心運動
- 21. Android陀螺儀Y軸滾軸
- 22. 如何在Android中使用陀螺儀
- 23. 基於磁力計和陀螺儀
- 24. CMMotionManager和iPhone 4上的陀螺儀
- 25. iOS-開始接收陀螺儀更新
- 26. 陀螺儀更新無法啓動
- 27. 在Unity3d中使用Android陀螺儀
- 28. 用陀螺儀導航視圖 - iOS
- 29. 哪些Android手機有陀螺儀?
- 30. 陀螺儀傳感器的結果Android
我試過旋轉矩陣,但繞軸的旋轉不可交換,當我將手機旋轉90°時,軸「翻轉」 – Rosh 2015-02-24 16:15:58
發生這種情況時,最好在這種情況下使用四元數。 – Smaug 2015-02-24 16:18:51
好的,謝謝你:)你能請指導我去關於四元數的教程。另外一個圖書館使用它們會很好(我正在編程一個Android應用程序) – Rosh 2015-02-24 16:24:15