2010-03-21 1 views
4

GLGravity 아이폰 예. 오일러 각 대신 쿼터니온 회전을 사용하여 코드를 사용할 수 있습니까? 어떤 도움을 크게 ... 성공을하지 않고 내가 오랫동안에서이와 사투를 벌인거야, 이해할 수있을 것이다아이폰 GLGravity의 예를 사용하여 사원 수 가속도계를 사용 및 OpenGL은 짐벌 잠금 문제를 앓고하는 방법을 보여

그것은 구현하고 그것을 자신을 사용하기 전에 사물의 이론을 잘 이해를하는 데 도움이
+0

마지막으로, 개발자는 심지어 대해 걱정할 필요가 있는지 여부를 통해 conetention이 많이 있었다 쿼터니언. 내가 본 가장 일반적인 대안은 짐벌 잠금을 방지하기 위해 기준의 상대적인 프레임을 사용하기위한이었다 (- 성능 차이는 아마도 무시할 수 있었다 트레이드 오프는 사원 수는 약간 적은 코드를 필요하지만 이해하기 어려워 있다고 할 듯). 나는 링크를 게시 하겠지만 너무 길어서 찾을 수 없다. :( – FrustratedWithFormsDesigner

답변

3

. 다음은 Quaternions를 회전에 사용하는 방법에 대한 두 개의 소개 기사입니다. 둘 다 주로 축적 회전에 회전 보간 피하는 짐벌 락을 부드럽게 관련이 있습니다

Gamedev.net - Quaternion Powers

이제

Gamasutra - Rotating Objects Using Quaternions

까지 실제 코드가가는대로, 나는 것 점점하고 사용하는 것이 좋습니다,에 "업계의 힘 "자신의 롤링에 반대하는 벡터 수학 라이브러리. 내 제안은 Bullet Physics Middleware 프로젝트의 LinearMath 부분을 잡는 것입니다. Bullet 물리학 및 포함 된 선형 수학 라이브러리는 소니의 최고 엔지니어 중 일부가 개발했으며 수년간 활발한 개발 활동을 해오 고 있습니다. 자유롭게 사용할 수 있으며 라이센스 (Zlib 라이센스)에 제한되지 않고 전 세계의 전문 게임 개발자가 사용합니다. lib는 크로스 플랫폼/아키텍처이며 iPhone에서 PS3까지 컴파일됩니다.

는 LIB는 임의의 축, 예를 들어,에 대한 오일러 각도에서 또는 회전에서 사원 수를 만들 수있는 Quaternion 클래스를 제공합니다 setEulerZYX을 사용하십시오. 쿼터니언이 생기면 해당 쿼터니언에 적용 할 수있는 모든 공통 연산을위한 함수가 내장되어 있습니다. 플러스, 마이너스, 멀, 정규화, 슬립 및 훨씬 더.

실제로 최종 쿼터니언을 OpenGL 렌더링에 적용하기 위해 Transform 클래스를 사용하면 construct의 쿼터니언에서 매트릭스를 얻을 수 있습니다. 변환 클래스는 차례로 OpenGL에 전달할 호환 가능한 행렬을 직접 제공하는 함수 getOpenGLMatrix을 포함합니다.

는 LIB 또한 다른 유용한 행렬 및 벡터 클래스와 함수의 호스트를 포함한다.

잡아 google code의 최신 총알 DIST 또는 사용 전복에서 직접 코드의 단지 LinearMath 부분을 잡아 : 나는 확인 svn checkout http://bullet.googlecode.com/svn/trunk/src/LinearMath

+0

와우, 덕분에 유용한 정보! 내가 이론을 파고 약간의 시간을 할애하고 라이브러리에서 유용한 무언가를 구축하려고합니다. 이들은 실제로 그들을 공격하지 않았다 검색의 일 후에, 매우 유용한 링크입니다. –

관련 문제