2011-12-22 4 views
7

저는 3D 캐릭터 팔의 회전을 나타내는 쿼터니온이 있습니다. 그 캐릭터의 팔의 새로운 위치를 나타내는 라인이 있습니다. 그 선 위치는 두 개의 3D 점에 의해 주어집니다.Quaternion의 방향 벡터?

이것은 내가 가지고있는 유일한 데이터이며, Im은 3D 패키지 (Digital Rune)에서 2 방향 벡터를 사용하고 팔을 새로운 위치로 이동시키는 데 필요한 회전을 나타내는 Quaternion을 반환하는 메서드를 호출하려고합니다.

문제는 축이 서로 섞여서 마치 일반적으로 작동하지 않는 것처럼 이상한 동작을 보게되는 것입니다. 또한 3D 녀석의 팔을 나타내는 Quaternion 객체 (3D 패키지의 것)는 W, X, Y 및 Z를가집니다. X, Y 및 Z는 방향 벡터를 나타 냅니까? 그것이 내가 함수를 적절하게 호출해야하기 때문입니다. 나는 내 라인의 끝점에서 계산 된 방향 벡터와 함께 이것을 사용했지만, 내가 말했듯이 그것은 우스운 것처럼 보인다.

X, Y 및 Z가 방향 벡터가 아닌 경우 방향 벡터를 계산할 수 있도록 쿼터니언을 두 끝점으로 변환하는 방법은 무엇입니까?

+2

이것이 도움이 될 수 있습니다. http://stackoverflow.com/q/1171849/10468 and this http://stackoverflow.com/q/2646121/10468 – DarenW

답변

7

컨텍스트 (및 대부분의 컴퓨터 그래픽 컨텍스트)에서 quaternion is used to represent a rotation. X, Y, Z를 직접 사용하고 싶지는 않습니다. 대신 (위의 링크 된 자습서에서 설명한대로) rotation matrix을 생성하는 데 사용합니다. 그런 다음 회전 행렬을 다른 3D transformation matrix과 같이 사용해야합니다. 그것이 출현 한 쿼터니언에 설명 된대로 원점 주변의 점을 회전시킵니다.

쿼터니언의 X, Y 및 Z는 회전 축을 나타내지 만 쿼터니언은 회전의 크기도 특히 그리 어렵지 않게 인코딩합니다. 패키지가 쿼터니온을 반환하는 함수를 포함하는 경우 쿼터니온을 회전 행렬로 변환하는 함수도 포함해야합니다. 가능한 경우 패키지 된 함수를 사용해야합니다 (패키지를 생성 한 메서드와 동일한 규칙을 사용해야하므로).

쿼터니언 및 변환 행렬을 읽고 나면 올바른 함수 종류를 제공하는지 확인하고 문제의 함수에 대한 설명서를주의 깊게 다시 읽어야하며 올바른 종류의 인수를 제공하고 있는지 확인하고 올바른 방법 (수학에 익숙한 경우 라 할지라도 그것을 망칠만큼 쉽습니다 ...).