개체 회전에 대한 간단한 쿼터니언 구현이 있습니다. 같은 축 정렬 벡터 (즉, X, Y 또는 Z 축을 따라)에 대해 회전을 나타내는 두 쿼터니언을 만들면 결과는 크기의 합계에 의한 단일 회전과 같습니다 (즉, PI/2 회전 후 PI/2는 다시 PI로 회전하는 것과 같습니다). 좋습니다.쿼터니언 연결은 축 정렬시에만 작동합니다.
회전 축이 축 정렬되지 않은 경우 연결이 예상대로 (PI/2로 회전하면 PI/2가 다시 이 아니며이 PI로 회전하는 것과 동일 함) 분기됩니다. 그 좋지 않다.
며칠 동안 내 코드를 보면서, 나는 틀린 것을 보지 못했기 때문에 지금 물어 보도록하겠습니다. 나는 쿼터니언이 어떻게 작동하는지 근본적으로 오해하고 있습니까? 솔직히 저는 쿼터니언을 완전히 이해하지 못하기 때문에 쿼터니언에 대해 축 각 회전의 관점에서 추론하고 있습니다.
그렇지 않으면 내 코드를 살펴볼 수 있습니까? :-) 방금 Java로 작성된 모든 것을 Android 용 GitHub로 푸시했습니다. https://github.com/wtracy/quaternions Quaternions 디렉토리 아래에는 Eclipse 프로젝트가 있습니다. (이클립스가 무엇이든 읽을 필요는 없지만 편리하다.) 쿼터니언 클래스는 src/폴더 아래있다. 테스트/폴더에는 JUnit 테스트와 Quaternion 클래스를 실행하는 데 필요한 클래스의 스텁이 있습니다.
나는 코드와 테스트를 쉽게 수행 할 수 있도록 최선을 다했습니다. 내 코드에서 버그를 찾기 위해 인터넷에 질문하는 바보 같은 생각이 들지만, 나는 아이디어가 깨끗합니다. :-P
올바른 트랙에 나를 붙여 주셔서 감사합니다. 나는 여전히 w에 이상한 값을 얻고 있지만, 적어도 나는 올바른 길을 가고 있다는 것을 알고있다. – wtracy