회전의 문제점은 대부분의 사람들이 이해하기 쉽기 때문에 오일러 각도로 생각한다는 것입니다.
그러나 대부분의 사람들은 오일러 각 이 3 개의 순차적 인 각 이라는 점을 잊습니다 . 즉, 첫 번째 축을 중심으로 회전하면 다음 회전이 첫 번째 원래 회전을 기준으로하므로 오일러 각도를 사용하여 3 개의 각 축을 중심으로 벡터를 독립적으로 회전 할 수 없습니다.
이것은 두 개의 행렬을 곱할 때 행렬로 직접 변환됩니다.이 곱셈은 한 행렬을 다른 행렬의 공간으로 변환하는 것으로 생각할 수 있습니다.
이것은 쿼터니언을 사용할 때에도 3 개의 순차적 회전으로 발생합니다.
쿼터니언이 gi 블 잠금 솔루션 이 아니라는 사실을 강조하고 싶습니다 . 쿼터니언을 사용하여 오일러 각도를 표현한 경우 실제로는 고정 잠금이 항상 발생합니다. 문제는 문제가, 표현하지 3 연속 단계.
해결책?
3 축을 중심으로 벡터를 독립적으로 회전시키는 솔루션은 은 단일 축과 단일 각도 결합 하는 것입니다. 이렇게하면 순차적 곱셈을 수행해야하는 단계를 없앨 수 있습니다. 이것은 효과적으로 다음과 같이 번역됩니다 :
내 회전 행렬은 X와 Y 및 Z를 중심으로 한 회전 결과를 나타냅니다.
오일러 해석보다는
내 회전 행렬은 X, Y, Z를 중심으로 한 회전을 나타냅니다.
이것을 명확히하기 위해 Wikipedia Euler의 회전 정리에서 인용 할 것입니다.
오일러의 회전 정리에 따르면, 고정 점에 대한 강체 또는 좌표계의 회전 또는 회전 순서는 고정 점을 통과하는 고정 축 (오일러 축이라고 함)에 대해 주어진 각도 θ에 의한 단일 회전과 같습니다. 오일러 축은 일반적으로 단위 벡터 u →로 표시됩니다. 따라서, 3 차원에서의 임의의 회전은 벡터 u →와 스칼라 θ의 조합으로 표현 될 수있다. 쿼터니언은이 축 각도 표현을 4 개의 숫자로 인코딩하고 R3의 원점을 기준으로 점을 나타내는 위치 벡터에 해당 회전을 적용하는 간단한 방법을 제공합니다.
3 개의 행렬을 곱하면 항상 3 개의 순차적 회전이 나타 납니다 .
이제 3 축 주위의 회전을 결합하려면 X, Y, Z 주위의 회전을 나타내는 단일 각도와 단일 각도가 필요합니다. 다시 말해, 순차 회전을 제거하려면 Axis / Angle 또는 쿼터니언 표현을 사용해야합니다.
이는 일반적으로 초기 방향 (방향은 축 각도로 생각할 수 있음)으로 시작하여 일반적으로 쿼터니언 또는 축 각도로 표시 한 다음 목적지 방향을 나타내도록 해당 방향을 수정하여 수행됩니다. 예를 들어, ID 쿼터니언으로 시작한 다음 차이로 회전하여 대상 방향에 도달합니다. 이 방법으로 자유도를 잃지 않습니다.