2010-12-07 5 views
1

회전을 계산할 때 WiiM + 자이로를 사용하고 있습니다. 쿼터니언을 사용하여 C#에서 자이로 스코프 각도 표현

I은 ​​요, 피치 및 롤 축을 따라 턴의 속도를 통합하고 각각의 읽기

angleSum

라는 벡터에 보관 angleSum (판독)의 초기에서, Y, p 및 R 회전을 나타낸다 정위.

-

Q = Quaternion.createfromyawPitchRoll (1) angleSum.yaw, angleSum.pitch, angleSum.roll *() :

나는 다음과 같이 표현하기 위해 (내가 전적으로 익숙 해요) 사원 수를 사용

그러나 wiimote를 한 방향으로 90도 회전시키고 차례에 대해 qx, qy 및 qz를 인쇄하면 모든 판독 값이 차례에 의해 영향을받습니다 (두 가지 모두 크기가 작지만 90도 회전과 뒤가 모두 표시됨). 그들 중)

내 질문은 매우 기본입니다 : 정확히 어떻게이 쿼터니온 구조를 사용하여 방향을 나타낼 수 있습니까? 나는 yaw, pitch, roll의 관점에서 절대 (또는 가장 상대적인) 방향이 필요합니다.

감사합니다.

답변

1

quaternion은 정의 축 (일반적으로 {x, y, z, w}으로 표시) 주위의 축과 회전 구성 요소로 느슨하게 정의 된 4 차원 구조입니다. the method you've referenced,을 보시고 요, 피치 및 롤을 각도 대신 radians에 공급한다고 가정하겠습니다. 그러면 테이블에서 가장 일반적인 구현 실수가 제거됩니다.

귀하의 구현이 정확하다고 가정하면 q.x, q.yq.z은 모든 순환 게재로 변경 될 것으로 예상됩니다. 4 차원 객체를 정의한다는 것을 기억하십시오. 사원 수는 요, 피치, 롤에 다시 사원 수 변환 고려,보다 인간 친화적 인 오일러 표기 판독을 얻을 수 같은 을 거라고 경우 Euler angles.

로하지 같은 이다. XNA에서 그렇게하기위한 Here's a discussion.

+0

설명해 주셔서 감사합니다. 그러나 오일러 각으로 다시 변환하면, 처음에 쿼터니온을 생성하는 목적은 무엇입니까? 나는 어떤 연산도 수행하지 않는다. (내 각도는 처음에는도 단위로, 라디안으로 변환하고 쿼터니온을 만드는 데 사용한다.) – Imelza

+0

나의 최종 목표는 자이로 스코프의 방향을 yaw, pitch 및 롤) 쿼터니언을 어떻게 사용하면 좋을까요? – Imelza