2012-06-01 4 views
6

코어 모션 클래스 CMAttitude을 살펴보면 3x3 회전 매트릭스로 장치의 방향을 나타낼 수 있습니다. 동시에 나는 뷰의 태도와 스케일링을 캡슐화 한 CATransform3D을 살펴 보았다. CATransform3D은 4x4 매트릭스입니다.CMAttitude와 CATransform3D는 회전 행렬과 관련이 있습니까?

필자는 OpenGL 회전 행렬이 4x4이고 단순히 4 행과 열에 패딩 된 0001임을 확인했습니다.

CMAttitude의 회전 행렬이 CATransform의 행렬과 관련된 경우 방황하고 있습니까?

회전 매트릭스를 통해 얻은 공간에서 장치의 회전을 사용하여 CATransform3D을 사용하여 UIView를 변환 할 수 있습니까? 나의 의도는 사용자가 전화를 이동하고 동일한 변환을 화면의 UIView에 적용하도록하는 것입니다.

보너스 질문 : 관련성이있는 경우 CMAttitude의 회전 행렬을 CATransform3D로 변환하려면 어떻게해야합니까?

답변

4

자이로 스코프는 공간에서 장치의 방향을 결정하는 데 사용됩니다. 오리엔테이션 자체를 매개 변수화하는 많은 방법이 있습니다 (이론 정보는 SO(3) 그룹 정보 참조). 쿼터니언, 오일러 각 및 3x3 매트릭스가 그 중 하나입니다.

3x3 매트릭스를 4x4 매트릭스에 "포함"하는 것은 GL 특정 트릭이 아닙니다. 번역 그룹 (모든 3D 벡터와 동형)과 회전 그룹 (위에서 언급 한 SO (3))의 "semi-direct product"입니다.

CMAttitude에서 CATransform3D 행렬을 얻으려면 객체의 일부 위치를 가정해야합니다. 그것이 0이라면, 당신이 말했듯이 0001로 행렬을 채 웁니다.

이 질문에 당신을 위해 관심의 대상이 될 수 있습니다 : Apple gyroscope sample code

+0

이 좋은 유익한 답변을 주셔서 감사합니다! –

+0

당신은 환영합니다. 나는 대답이 너무 이론적이지 않기를 바란다 :) –

관련 문제