2012-06-01 38 views
6

我正在查看核心運動類CMAttitude,它可以將設備的方向表示爲3x3旋轉矩陣。同時我看了一下CATransform3D,它包含了視圖的態度和縮放比例。 CATransform3D是一個4x4矩陣。CMAttitude和CATransform3D與旋轉矩陣相關嗎?

我已經看到OpenGL旋轉矩陣是4x4,並且在第4行和第4列中簡單填充0001。

如果CMAttitude的旋轉矩陣與CATransform的矩陣相關,我會徘徊嗎?

能否使用該設備的空間中旋轉經由旋轉矩陣獲得變換使用CATransform3D一個UIView?我的意圖是讓用戶移動手機並將相同的轉換應用到屏幕上的UIView。

紅利問題:如果它們是相關的,我該如何將CMAttitude的旋轉矩陣轉換爲CATransform3D?

回答

4

陀螺儀用於確定只有設備在空間的方向。有很多方法可以對方向本身進行參數化(有關理論信息,請參閱有關SO(3)組的信息) - 四元數,歐拉角和3x3矩陣就是其中之一。

將3x3矩陣「嵌入」4x4矩陣不是GL特有的技巧。它是翻譯組的一個"semi-direct product"(與所有3D矢量同構)和旋轉組(上面提到的SO(3))。

要從CMAttitude獲取CATransform3D矩陣,您必須假設對象的某個位置。如果它是零,那麼就像你說的那樣用0001填充矩陣。

這個問題可能會感興趣的你:Apple gyroscope sample code

+0

謝謝你爲一個偉大的翔實的答案! –

+0

不客氣:)我希望答案不太理論:) –