3D 회전을 나타내는 방법
기하학 에서는 수학적 변환 으로서 3차원 으로 회전 을 표현하기 위해 다양한 형식주의 가 존재한다. 물리학에서 이 개념은 회전(또는 각도) 운동학 이 순전히 회전 운동 을 정량적 으로 기술하는 과학인 고전역학 에 적용된다. 주어진 순간의 물체의 방향 은 동일한 도구로 설명되는데, 이는 공간에서의 기준 배치에서 실제 관측된 회전보다는 공간에서의 기준 배치에서 가상의 회전으로 정의되기 때문이다.
오일러의 회전 정리 에 따르면 강체 (또는 고정된 원점 을 가진 3차원 좌표계 )의 회전은 어떤 축을 중심으로 한 하나의 회전으로 설명된다. 그러한 회전은 최소 3개의 실제 매개변수로 고유하게 설명될 수 있다. 그러나, 다양한 이유로, 그것을 대표할 수 있는 몇 가지 방법이 있다. 이들 표현들 중 많은 것들은 각각 아직 3도의 자유도만을 가지고 있지만 필요한 최소 3개 의 매개변수 이상을 사용한다.
회전표현이 사용되는 예는 자동 관찰자가 표적을 추적해야 하는 컴퓨터 비전 에 있다. 3개의 직교 단위 벡터 가 본체에 고정된 강체 본체를 고려한다(물체의 로컬 좌표계 의 세 축을 나타냄). 기본적인 문제는 이 세 개의 단위 벡터 의 방향을 명시하는 것이며, 따라서 관측자의 좌표계에 관해서, 공간에서의 기준 배치로 간주되는 강체 본체의 방향을 명시하는 것이다.
회전과 동작 회전 형식은 회전 이 가리키는 하나의 고정점 을 가진 유클리드 공간 의 적절한 (방향 보존) 움직임에 초점을 맞춘다. 고정된 지점을 가진 물리적 동작이 중요한 경우(질량 중심 프레임 또는 관절의 움직임 등)이기는 하지만, 이 접근방식은 모든 동작에 대한 지식을 만들어낸다. 유클리드 공간의 어떤 적절한 움직임도 원점을 중심으로 한 회전과 번역 으로 분해된다. 이들의 구성 순서가 어떻게 되든, "순수" 회전 구성요소는 변경되지 않을 것이며, 이는 전체 동작에 의해 고유하게 결정된다.
또한 "순수" 회전을 해당 부속 공간 의 지점 지도가 아닌 유클리드 구조를 갖춘 벡터 공간에서 선형 지도 로 이해할 수 있다. 즉, 회전 형식주의는 3도 자유도를 포함하는 움직임의 회전 부분만 포착하고, 또 다른 3도 자유도를 포함하는 번역 부분은 무시한다.
컴퓨터에서 회전을 숫자로 나타낼 때, 오일러 회전과 함께 발생할 수 있는 짐벌 잠금 을 피하기 때문에 쿼터니온 표현이나 축+각도 표현을 선호하는 사람도 있다.[1]
형식주의 대안 회전 행렬 위 에서 언급한 단위 벡터 3종도 근거라고 한다. 기준(회전되지 않은) 좌표 축 의 관점 에서 현재(회전된) 위치에서 이 기준 벡터의 좌표 (구성요소)를 지정하면 회전이 완전히 설명된다. u ^ {\ displaystyle {\hat {\mathbf {u }}}, v ^ {\databf {v}}, w ^ {\ displaystyle {\hat {\mathbf {w}}}} 등 세 개의 단위 벡터는 각각 3개의 좌표로 구성되며 총 9개의 파라미터를 산출한다.
이러한 매개변수는 회전 행렬 이라 불리는 3 × 3 행렬 A 의 요소로 기록될 수 있다. 일반적으로 이들 벡터의 좌표는 행렬의 열을 따라 배열된다(단, 위에서 정의한 벡터의 좌표가 행에[2] 의해 배열되는 회전 행렬의 대체 정의가 존재하고 널리 사용되고 있다는 점에 유의한다).
A = [ u ^ x v ^ x w ^ x u ^ y v ^ y w ^ y u ^ z v ^ z w ^ z ] {\displaystyle \mathbf {A} =\left[{\begin{array}{ccc}{\hat {\mathbf {u} }}_{x}&{\hat {\mathbf {v} }}_{x}&{\hat {\mathbf {w} }}_{x}\\{\hat {\mathbf {u} }}_{y}&{\hat {\mathbf {v} }}_{y}&{\hat {\mathbf {w} }}_{y}\\{\hat {\mathbf {u} }}_{z}&{\hat {\mathbf {v} }}_{z}&{\hat {\mathbf {w} }}_{z}\\\end{array}}\right]} 회전 행렬의 원소들이 모두 독립적인 것은 아니다. 오일러의 회전 정리가 지시하는 대로 회전 행렬은 3도 자유도에 불과하다.
회전 행렬에는 다음과 같은 속성이 있다.
{ 1 , e ± i θ } = { 1 , cas θ + i 죄를 짓다 θ , cas θ − i 죄를 짓다 θ } \displaystyle \왼쪽\{1,e^{\pm i\theta }\right\}=\{1,\cos \theta +i\sin \cos \cos \theta -i\sin \}}}}}} 여기서 i 는 속성 이2 i = -1인 표준 가상 단위 다. A 의 결정인자 는 +1로, 고유값의 산물과 동일하다. A 의 흔적 은 1 + 2 cos θ 이며, 그 고유값의 합에 상당한다. 고유값 표현식에 나타나는 각도 θ 은 오일러 축 및 각도 표현 각도에 해당한다. 고유값 1에 해당하는 고유 벡터는 축이 유일한 (비제로) 벡터로서 회전 행렬과 함께 좌-다중(회전)하여 변하지 않기 때문에 수반되는 오일러 축이다.
위의 속성은 다음과 같다.
u ^ = v ^ = w ^ = 1 u ^ ⋅ v ^ = 0 u ^ × v ^ = w ^ , {\displaystyle {\begin{aligned} {\hat {\mathbf {u} }} = {\hat {\mathbf {v} }} = {\hat {\mathbf {w} }} &=1\\{\hat {\mathbf {u} }}\cdot {\hat {\mathbf {v} }}&=0\\{\hat {\mathbf {u} }}\times {\hat {\mathbf {v} }}&={\hat {\mathbf {w} }}\,,\end{aligned}}} 이는 (u ^, v ^, w ^ ) {\displaystyle({\hat {\mathbf {u}}}},{\hatbf {v},{\hattbf {w}}}}}}}} 이(가) 3D 직교 기준 을 형성한다고 말하는 또 다른 방법이다. 이 문장은 총 6개의 조건(교차 제품에는 3이 포함됨)으로 구성되며, 필요한 경우 회전 행렬이 3도 자유도에 불과하게 된다.
행렬 A 와1 A 로2 대표되는 두 개의 연속 회전은 그룹의 요소로서 쉽게 결합된다.
A 총계 = A 2 A 1 {\displaystyle \mathbf {A} _{\text{total}=\mathbf {A} _{2}\mathbf {A} _{1}} (회전하는 벡터는 오른쪽에서 곱하기 때문에 순서를 참고하십시오.)
벡터를 회전 매트릭스를 사용하여 회전할 수 있는 용이성뿐만 아니라 연속 회전을 조합하는 용이성은 회전 매트릭스를 다른 표현에 비해 간결하지 않더라도 유용하고 널리 사용되는 회전 매트릭스로 만든다.
오일러 축 및 각도(회전 벡터) 오일러의 회전 정리 로부터 우리는 어떤 회전도 어떤 축을 중심으로 한 하나의 회전으로 표현될 수 있다는 것을 안다. 축은 단위 벡터(기호를 제외한 고유함)로, 회전에 의해 변하지 않는다. 각도의 크기 또한 특이하며, 그 기호는 회전축의 기호로 결정된다.
축은 3차원 단위 벡터 로 나타낼 수 있다.
e ^ = [ e x e y e z ] {\displaystyle {\hat {\mathbf {e}}}}}}}={\\\bmatrix}e_{x}\e_{z}\end{bmatrix}}}}}}} 그리고 스칼라 θ 에 의한 각도.
축이 정상화되기 때문에 자유도는 2도 에 불과하다. 각도는 이 회전 표현에 3번째 자유도를 더한다.
회전 벡터 또는 오일러 벡터 로 회전을 표현하고자 할 수 있는데, 방향은 축을 명시하고 길이는 θ ,
r = θ e ^ . {\displaystyle \mathbf {r} =\theta {\hat {\mathbf {e}}}\, } 회전 벡터는 3개 의 스칼라 값(성분)만을 가진 3차원 회전을 나타내며, 3개의 자유도를 나타내기 때문에 일부 맥락에서 유용하다. 이는 3개의 오일러 각도의 시퀀스에 기초한 표현에도 해당된다(아래 참조).
회전각 θ 이 0이면 축이 고유하게 정의되지 않는다. 각각 오일러 축과 각도로 대표되는 두 개의 연속 회전을 결합하는 것은 간단하지 않으며, 사실 유한 회전이 실제로 벡터(Vector)가 아니라는 것을 보여주는 벡터(Vector) 덧셈의 법칙을 충족시키지 못한다. 회전 행렬이나 쿼터니온 표기법을 사용하고 제품을 계산한 다음 오일러 축과 각도로 다시 변환하는 것이 가장 좋다.
오일러 회전 지구의 오일러 회전. 내성 (녹색), 사전 처리 (파란색) 및 너트 (빨간색) 오일러 회전 뒤에 있는 아이디어는 좌표계의 전체 회전을 오일러 각 중 하나에 증분으로 각각이 되는 세 가지 간단한 구성 회전(예과 , 견과 , 내적 회전 )으로 나누는 것이다. 외부 매트릭스는 기준 프레임의 축 중 하나를 중심으로 한 회전을 나타내며, 내부 매트릭스는 이동 프레임 축 중 하나를 중심으로 회전을 나타낸다. 중간 행렬은 노드의 선이 라고 불리는 중간 축 주위의 회전을 나타낸다.
그러나 오일러 각도의 정의는 독특하지 않고 문헌에는 많은 다른 관습들이 사용된다. 이러한 규약은 회전이 수행되는 축과 그 순서에 따라 달라진다(회전이 상호 작용하지 않기 때문이다).
일반적으로 사용 중인 규약은 연속 회전이 일어나는 축(구성되기 전) 을 지수(1, 2, 3) 또는 문자(X, Y, Z)로 지정하여 표시한다. 공학계와 로봇공학계는 일반적으로 3-1-3 오일러 각도를 사용한다. 독립 회전을 구성한 후에는 더 이상 축을 중심으로 회전하지 않는다는 점에 유의하십시오. 대부분의 외부 매트릭스는 나머지 두 개를 회전시켜 두 번째 회전 매트릭스를 노드 라인 위로 남기고, 세 번째 회전 매트릭스는 본체와 교차하는 프레임의 매트릭스를 남긴다. 3 × 3 × 3 = 27개 의 기본 회전 조합이 있지만 이 중 3 × 2 × 2 = 12개만 오일러 각도로 임의 3D 회전을 나타내는 데 사용할 수 있다. 이 12개의 조합은 (XXY와 같은) 같은 축 주변의 연속적인 회전을 피하며, 이는 나타낼 수 있는 자유도를 감소시킬 것이다.
따라서 오일러 각도는 외부 프레임이나 공동 움직이는 회전된 차체 프레임의 측면에서 표현되는 것이 아니라 혼합물로 표현된다. 이 문제를 피하기 위해 다른 규칙(예: 회전 행렬 또는 쿼터니언 )을 사용한다.
항공 방향 에서 항공기의 방향은 일반적 으로 헤딩 , 고도 및 뱅크 (또는 동의어, 요 , 피치 및 롤링 )라고 불리는 z-y--x ″ 관행에 따라 본질적 인 Tait-Bryan 각도 로 표현된다.
쿼터니온스 4차원 벡터 공간 을 형성하는 쿼터니온은 이 글에서 언급된 다른 표현들에 비해 몇 가지 장점 때문에 회전을 표현하는 데 매우 유용하다는 것이 입증되었다.
회전의 쿼터니온 표현은 버시버 (정규화된 쿼터니온)로 기록된다.
q ^ = q i i + q j j + q k k + q r = [ q i q j q k q r ] {\displaystyle {\hat {\mathbf {q} }}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}} 위의 정의는 쿼터를 (Wertz 1980) 및 (Markley 2003)에서 사용된 규약에 따른 배열로 저장한다. 예를 들어 (Coutsias 1999)와 (Schmidt 2001)에서 사용된 대안 정의는 다른 요소들이 한 위치 아래로 이동하면서 "scalar" 용어를 첫 번째 쿼터니온 요소로 정의한다.
오일러 축의 관점에서
e ^ = [ e x e y e z ] {\displaystyle {\hat {\mathbf {e}}}}}}}={\\\bmatrix}e_{x}\e_{z}\end{bmatrix}}}}}}} 및 각도 θ 이 버저의 구성 요소는 다음과 같이 표현된다.
q i = e x 죄를 짓다 θ 2 q j = e y 죄를 짓다 θ 2 q k = e z 죄를 짓다 θ 2 q r = cas θ 2 {\displaystyle {\begin{aligned}q_{i}&=e_{x}\sin {\frac {\theta }{2}}\\q_{j}&=e_{y}\sin {\frac {\theta }{2}}\\q_{k}&=e_{z}\sin {\frac {\theta }{2}}\\q_{r}&=\cos {\frac {\theta }{2}}\end{aligned}}} 검사 결과 쿼터니온 파라메트리제이션은 다음 제약 조건을 준수하는 것으로 나타났다.
q i 2 + q j 2 + q k 2 + q r 2 = 1 {\displaystyle q_{i}^{2}+q_{j}^{2}+q_{k}^{2}+q_{r}^{2}+q_{r}^{2}=1} (우리의 정의에서) 마지막 용어는 흔히 스칼라 용어로 불리며, 복잡한 숫자의 수학적 확장으로 이해될 때 쿼터니온에서 유래한 것으로, 다음과 같이 쓰여진다.
a + b i + c j + d k 와 함께 a , b , c , d ∈ R {\displaystyle a+bi+cj+dk\qquad {\text{}a,b,c,d\in \mathb {R}} 여기서 {i , j , k } 은(는) 하이퍼 복합 수를 만족하는 경우
i 2 = j 2 = k 2 = − 1 i j = − j i = k j k = − k j = i k i = − i k = j {\displaystyle {\ccccc}i^{2}=&j^{2}&j^{2}=&j^{2}=&-1\ij&=&j&=&j&=&k&=&k&=&j&=ki&=&ik&=&ik&j&j&d}}{array}}}}}}}}} 복합 회전을 지정하는 데 사용되는 쿼터니온 곱셈은 곱셈이 역행하지 않기 때문에 원소의 순서를 반드시 고려해야 한다는 점을 제외하고 복잡한 숫자 의 곱셈과 같은 방식으로 수행된다. 행렬 표기법에서는 쿼터니온 곱셈을 다음과 같이 쓸 수 있다.
q ~ ⊗ q = [ q r q k − q j q i − q k q r q i q j q j − q i q r q k − q i − q j − q k q r ] [ q ~ i q ~ j q ~ k q ~ r ] = [ q ~ r − q ~ k q ~ j q ~ i q ~ k q ~ r − q ~ i q ~ j − q ~ j q ~ i q ~ r q ~ k − q ~ i − q ~ j − q ~ k q ~ r ] [ q i q j q k q r ] {\displaystyle{\tilde{\mathbf{q}}};\;\,q_{r}&.\와 같이^;\,q_{k}&, -q_{j}&.\와 같이^;\,q_{나는}\\-q_{k}&.\와 같이^;\,q_{r}&.\와 같이^;\,q_{나는}&.\와 같이^;\,q_{j}\\\.\;\,q_{j}&, -q_{나는}&.\와 같이^;\,q_{r}&.\와 같이^;\,q_{k}\\-q_{나는}&, -q_{j}&, -q_{k}&.\와 같이^;\,q_{r}\end{bmatrix}}{\begin{bmatrix}{\tilde{q}}_{나는}\\{\tilde{q}}_{j.\mathbf{q}={\begin{bmatrix}\ \otimes}\\{\tilde{q}}_{k}\\{\tilde{q}}_{r}\end{bmatri X}}={\begin{bmatrix}\.\;\,{\tilde{q}}_{r}&, -{\tilde{q}}_{k}&.\와 같이^;\,{\tilde{q}}_{j}&.\와 같이^;\,{\tilde{q}}_{나는}\\\.\;\,{\tilde{q}}_{k}&.\와 같이^;\,{\tilde{q}}_{r}&, -{\tilde{q}}_{나는}&.\와 같이^;\,{\tilde{q}}_{j}\\-{\tilde{q}}_{j}&.\와 같이^;\,{\tilde{q}}_{나는}&.\와 같이^;\,{\tilde{q}}_{r}&.\와 같이^;\,{\tilde{q}}_{k}\\-{\tilde{q}}_{나는}&-{\tilde.{q}}_{j}&, -{\tilde{q}}_{k}&.\와 같이^;\,{\tild e {q}_{r}\end{bmatrix}}{\\\\\\\\bmatrix}q_{i}\\q_{j}\q_\q_{r}\end{bmatrix}}}}}}} 따라서 연속적인 두 쿼터니온 회전을 결합하는 것은 회전 행렬을 사용하는 것만큼 간단하다. A 에2 이은 두 개 의1 연속 회전 행렬이 다음과 같이 조합된다.
A 3 = A 2 A 1 {\ displaystyle \mathbf {A} _{3}=\mathbf {A} _{2}\mathbf {A} _{1 }, 우리는 이것을 유사하게 간결한 방법으로 쿼터니온 매개변수로 나타낼 수 있다.
q 3 = q 2 ⊗ q 1 {\displaystyle \mathbf {q} _{3}=\mathbf {q} _{2}\otimes \mathbf {q} _{1}} 쿼터니온은 다음과 같은 특성 때문에 매우 인기 있는 파라메트리제이션이다.
행렬 표현보다 더 작고 반올림 오류 에 덜 취약함 Quaternion 요소는 방향 변화에 따라 (S 로4 3 표시됨) 단위 구에 걸쳐 연속적으로 변화하며 불연속 점프를 피한다(3차원 매개변수화와 일관됨). 쿼터니온 매개변수에 대한 회전 행렬의 표현은 삼각함수 를 포함하지 않는다. 쿼터니온 제품을 사용하여 쿼터니온으로 대표되는 두 개의 개별 회전을 결합하는 것은 간단하다. 회전 행렬과 마찬가지로 쿼터니온은 유효한 회전과 일치하는지 확인하기 위해 반올림 오류로 인해 때때로 리노마인화되어야 한다. 그러나 쿼터니온을 리노머라이징하는 계산 비용은 3 × 3 행렬을 정상화하는 것보다 훨씬 적다.
또한 쿼터니온은 3차원으로 회전하는 스핀오럴 특성을 포착한다. 느슨한 현이나 띠에 의해 그것의 (고정) 주위와 연결된 3차원 물체의 경우, 현이나 띠는 초기 미완성 상태에서 어떤 고정 축을 중심으로 두 번 완전히 돌린 후에 풀릴 수 있다. 대수적으로, 그러한 회전을 기술하는 쿼터는 스칼라 +1(초기), 스칼라 +1(스칼라 + 필벡터) 값에서 스칼라 -1(완전 회전 1회), 스칼라 +1(완전 회전 2회) 값으로 바뀐다. 이 사이클은 2회전마다 반복된다. 2n 턴(integer n > 0) 후, 중간 언더링 시도 없이 문자열/밴드를 2 턴에서 0 턴까지 동일한 절차를 적용할 때마다 2(n - 1) 턴 상태로 되돌릴 수 있다. 동일한 절차를 n번 적용하면 2n 접힌 물체가 풀리지 않거나 0회전 상태로 되돌아간다. 또한 언폴링 프로세스는 문자열/밴드 자체에 대한 회전으로 생성되는 비틀림을 제거한다. 간단한 3D 기계 모델을 사용하여 이러한 사실을 입증할 수 있다.
로드리게스 벡터 로드리게스 벡터 (때로는 깁스 벡터 (Rodrigues parameters 라고 하는 좌표를 가지고 있음)[3] [4] 는 다음과 같이 회전의 축과 각도로 표현할 수 있다.
g = e ^ 햇볕에 그을리다 θ 2 {\displaystyle \mathbf {g} ={\hat {\mathbf {e}}}}}}\tan {\frac {\theta}{2}}:} 이 표현은 3-sphere에서 3차원 순수 벡터 하이퍼플레인까지 단위 쿼터를 매핑하는 Gnomonic 투영법의 고차원 아날로그다.
그것은 180°에서 불연속성을 가지고 있다: 모든 회전 벡터 r은 rad 라디안의 각도를 가지기 때문에 그것의 탄젠트는 무한대로 되는 경향이 있다.
Rodrigues 표현에서 회전 g 다음에 회전 f 가 오는 회전 g는 간단한 회전 구성 양식을 가진다.
( g , f ) = g + f − f × g 1 − g ⋅ f . {\displaystyle (\mathbf {g} ,\mathbf {f} )={\frac {\mathbf {g} +\mathbf {f} -\mathbf {f} \mathbf {g} \cdot \mathbf {f}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}\ }
오늘날, 이 공식을 증명하는 가장 간단한 방법은 (신실한) 더블트 표현에 있다 . 여기 서 g = n̂ tann a 등.
방금 언급한 Pauli 매트릭스 파생의 결합기 특징도 아래의 등가 쿼터니언 파생과 동일하다. 공간 회전 R과 관련된 쿼터를 다음과 같이 구성한다.
S = cas ϕ 2 + 죄를 짓다 ϕ 2 S . {\displaystyle S=\cos {\frac {\phi }{2}}+\sin {\frace }{{2}}\mathbf {S} .} R을A 사용한 회전 R의B 구성은 회전 RC =RR이며B A , 회전 축과 각도는 쿼터니온의 곱에 의해 정의된다.
A = cas α 2 + 죄를 짓다 α 2 A 그리고 B = cas β 2 + 죄를 짓다 β 2 B , {\displaystyle A=\cos {\frac {\alpha }{2}}+\sin {\frac {\alpha }{2}}\mathbf {A} \quad {\text{and}}\quad B=\cos {\frac {\beta }{2}}+\sin {\frac {\beta }{2}}\mathbf {B} ,} 그것은
C = cas γ 2 + 죄를 짓다 γ 2 C = ( cas β 2 + 죄를 짓다 β 2 B ) ( cas α 2 + 죄를 짓다 α 2 A ) . {\displaystyle C=\cos {\frac {\gamma }{2}}+\sin {\frac {\gamma }{2}}\mathbf {C} ={\Big (}\cos {\frac {\beta }{2}}+\sin {\frac {\beta }{2}}\mathbf {B} {\Big )}{\Big (}\cos {\frac {\alpha }{2}}+\sin {\frac {\alpha }{2}}\mathbf {A} {\Big )}. } 이 쿼터니온 제품을 다음으로 확장
cas γ 2 + 죄를 짓다 γ 2 C = ( cas β 2 cas α 2 − 죄를 짓다 β 2 죄를 짓다 α 2 B ⋅ A ) {\displaystyle \cos {\frac {\gamma }{2}}+\sin {\frac {\gamma }{2}}\mathbf {C} ={\Big (}\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\mathbf {B} \cdot \mathbf {A} {\Big )}} + ( 죄를 짓다 β 2 cas α 2 B + 죄를 짓다 α 2 cas β 2 A + 죄를 짓다 β 2 죄를 짓다 α 2 B × A ) . {\displaystyle +{\Big (}\sin {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}\mathbf {B} +\sin {\frac {\alpha }{2}}\cos {\frac {\beta }{2}}\mathbf {A} +\sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\mathbf {B} \times \mathbf {A} {\Big )}. } 이 방정식의 양쪽을 앞의 방정식에서 비롯되는 정체성으로 나눈다.
cas γ 2 = cas β 2 cas α 2 − 죄를 짓다 β 2 죄를 짓다 α 2 B ⋅ A , {\displaystyle \cos {\frac {\gamma }{2}}=\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\mathbf {B} \cdot \mathbf {A} ,} 그리고 평가하다
햇볕에 그을리다 γ 2 C = 햇볕에 그을리다 β 2 B + 햇볕에 그을리다 α 2 A + 햇볕에 그을리다 β 2 햇볕에 그을리다 α 2 B × A 1 − 햇볕에 그을리다 β 2 햇볕에 그을리다 α 2 B ⋅ A . {\displaystyle \tan {\frac {\gamma }{2}}\mathbf {C} ={\frac {\tan {\frac {\beta }{2}}\mathbf {B} +\tan {\frac {\alpha }{2}}\mathbf {A} +\tan {\frac {\beta }{2}}\tan {\frac {\alpha }{2}}\mathbf {B} \times \mathbf {A} }{1-\tan {\frac {\beta }{2}}\tan {\frac {\alpha }{2}}\mathbf {B} \cdot \mathbf {A} }}.}
이것은 Rodrigues의 합성 회전 축에 대한 공식으로, 두 구성 요소 회전 축의 관점에서 정의된다. 그는 1840년에 이 공식을 도출했다(408페이지 참조).[3] 세 개의 회전 축 A , B , C 는 구면 삼각형을 형성하며, 이 삼각형의 측면에 의해 형성된 평면들 사이의 이면각은 회전각으로 정의된다.
수정된 Rodrigues 매개변수(MRPs)는 다음과 같이 오일러 축과 각도로 표현할 수 있다.
p = e ^ 햇볕에 그을리다 θ 4 . {\displaystyle \mathbf {p} ={\hat {\mathbf {e}}}}}}\tan {\frac {\theta}{4}}\, } 수정된 Rodrigues 벡터는 3-sphere에서 3차원 순수 벡터 하이퍼플레인까지의 입체 투영 매핑 유닛이다.
케일리-클레인 매개변수 Wolfram Mathworld 의 정의를 참조하십시오.
고차원 아날로그 벡터 변환 법칙 축 n을 둘러싼 유클리드 공간의 3D 벡터 p 의 각도 η을 통한 능동 회전은 다음과 같이 점 및 교차 제품 측면에서 쉽게 기록할 수 있다.
p ′ = p ∥ n + cas η p ⊥ + 죄를 짓다 η p ∧ n {\displaystyle {\textbf{p}'=p_{\p}}{\textbf {{n}+cos{\eta}\,{\textbf{p}_{\perp}}}}}\\textbf {n}}} 어디에
p ∥ = p ⋅ n {\displaystyle p_{\data.}={\textbf {p}\cdot {\textbf {n}} p 를 따라 n 의 세로 구성 요소로서, 도트 제품에 의해 주어진다.
p ⊥ = p − ( p ⋅ n ) n {\displaystyle {\textbf{p}_{\perp }={\textbf {p}-({\textbf {p}-)({\textbf {n}}){\textbf {n}}}} n 에 대한 p 의 가로 구성요소
p ∧ n {\displaystyle {\textbf {p}\textbf {n}} p 와 n 의 교차 제품 이다.
위 의 공식은 p 의 가로 부분이 n 에 수직인 평면에서 회전하는 반면 p의 세로 요소는 변하지 않고 있음을 보여준다. 이 평면은 p 자체 의 가로 부분과 p 와 n 모두에 수직인 방향으로 스팬된다. 회전은 각 angle에 걸친 2D 회전으로서 방정식에서 직접 확인할 수 있다.
수동 회전은 동일한 공식으로 설명할 수 있지만 η 또는 n 의 역 기호로 설명할 수 있다.
격식어간 변환식 회전 매트릭스 £ 오일러 각도 오일러 각도(φ , θ , ψ ) 는 분석 형식의 회전 행렬을 검사 하여 회전 행렬 A {\displaystyle \scriptstyle \mathbf {A} } 에서 추출할 수 있다.
회전 행렬 → 오일러 각도(z-x-z 외연) x-컨벤션(x-convention)을 이용하여 3-1-3의 외연 오일러 각도 ,, θ , ψ (z축 주변, x축 주변, 그리고 다시 Z {\ displaystyle \scriptstyle Z} -axis )를 다음과 같이 얻을 수 있다.
ϕ = atan2 ( A 31 , A 32 ) θ = 아르코스 ( A 33 ) ψ = − atan2 ( A 13 , A 23 ) {\displaystyle {\begin}\phi &=\operatorname {atan2} \left(A_{31},A_{32}\right)\\ \\theta &=\arccos \left(A_{33}\right)\\\\psi &=-\operatorname {atan2} \left(A_{13},A_{23}\right)\ended}}}}} 는 atan2(a, b)arctan .mw-parser-output .sfrac{white-space:nowrap}.mw-parser-output.sfrac.tion,.mw-parser-output.sfrac .tion{디스플레이:inline-block, vertical-align:-0.5em, font-size:85%;text-align:센터}.mw-parser-output.sfrac.num,.mw-parser-output.sfrac .den{디스플레이:블록, line-height:1em, 마진:00.1em}.mw-parser-output에 해당합니다.그것이 또한 고려하는 부분은 점(b, a)atan2, 보십시오에 있는데 Sfrac .den{border-top:1px 고체}.mw-parser-output .sr-only{국경:0;클립:rect(0,0,0,0), 높이:1px, 마진:-1px, 오버 플로: 숨어 있었다. 패딩:0;위치:절대, 너비:1px}a/b.
변환을 실시할 때는 다음과 같은 몇 가지 상황을 고려해야 한다.[5]
[-suff, ,]3 간격에는 일반적으로 두 가지 해결책이 있다. 위의 공식은 θ 이 [0, π] 간격 내에 있을 때만 작용한다. 특수 케이스 A 33 = 0 의 경우 , and 과 from 은11 A와 A 에서12 파생된다. 무한히 많으나, 셀 수 없이 많은 해결책들이 이 간격[-time, π]3 밖에 있다. 모든 수학 해법이 주어진 적용에 적용되는지는 상황에 따라 달라진다. 오일러 각도(z-y ′-x ″ 내인성) → 회전 행렬 회전 매트릭스 A 는 축에 대한 회전으로 생성된 3개의 행렬에 곱하여 3-2-1의 고유 오일러 각도에서 생성된다.
A = A 3 A 2 A 1 = A Z A Y A X {\displaystyle \mathbf {A} _{3}\mathbf {A} _{2}\mathbf {A} _{1}=\mathbf {A} _{Z}\mathbf {A} _{Y}\mathbf {A} _{X}}}}}}}} 회전 축은 사용 중인 특정 규칙에 따라 달라진다. x-컨벤션의 경우 회전은 각도 ϕ , θ 및 ψ 가 있는 x- , y- , z-ax에 관한 것이며, 개별 행렬은 다음과 같다.
A X = [ 1 0 0 0 cas ϕ − 죄를 짓다 ϕ 0 죄를 짓다 ϕ cas ϕ ] A Y = [ cas θ 0 죄를 짓다 θ 0 1 0 − 죄를 짓다 θ 0 cas θ ] A Z = [ cas ψ − 죄를 짓다 ψ 0 죄를 짓다 ψ cas ψ 0 0 0 1 ] {\displaystyle{\begin{정렬}\mathbf{A}_{X}&, ={\begin{bmatrix}1&, 0&, 0\\0&,\cos \phi&-\sin \phi \\0&, \sin \phi&\cos \phi \end{bmatrix}}{A}_{Y}& \\[5px]\mathbf, ={\begin{bmatrix}\cos\theta&0&,\sin \theta \\0&, 1&, 0\\-\sin \theta&0&,\cos \theta \end{bmatrix}},){\begin{bma{A}_{Z}& \\[5px]\mathbf.Trix};0\\0&, 0&,\psi&-\sin \psi&0\\\sin \psi&\cos \psi 및 \cos. 1\end{bmatrix}\end{aigned}} 이것은 생산된다.
A = [ cas θ cas ψ − cas ϕ 죄를 짓다 ψ + 죄를 짓다 ϕ 죄를 짓다 θ cas ψ 죄를 짓다 ϕ 죄를 짓다 ψ + cas ϕ 죄를 짓다 θ cas ψ cas θ 죄를 짓다 ψ cas ϕ cas ψ + 죄를 짓다 ϕ 죄를 짓다 θ 죄를 짓다 ψ − 죄를 짓다 ϕ cas ψ + cas ϕ 죄를 짓다 θ 죄를 짓다 ψ − 죄를 짓다 θ 죄를 짓다 ϕ cas θ cas ϕ cas θ ] {\displaystyle \mathbf{A}={\begin{bmatrix}\cos, -\cos\sin\psi +\sin \phi \sin\theta\cos \psi 및 \phi, \sin\psi +\cos \sin \phi \phi\sin \theta \cos\psi \\\cos\sin \psi 및 \theta, \cos \phi \cos \psi +\sin \phi \sin \theta \sin \psi&-\sin \phi \cos\psi +\cos \phi \sin\theta\sin\psi \\-\sin \theta&\sin\와 같이\cos \psi 및 \theta.파이\cos \theta&\co s \phi \cos \\end{bmatrix}} 참고: 이는 거의 모든 공학 및 물리학 분야에서 사용되는 관례인 우측 시스템에 유효하다.
이러한 오른손잡이 회전 행렬의 해석은 점 변환(활성 )과 반대로 좌표 변환(패시브 )을 표현한다는 것이다. A 는 로컬 프레임 1 에서 글로벌 프레임 0 까지의 회전을 표현 하기 때문에(즉, A는 프레임 1 의 축을 w.r.t 프레임 0 으로 인코딩한다), 기초 회전 매트릭스는 위와 같이 구성된다. Because the inverse rotation is just the rotation transposed, if we wanted the global-to-local rotation from frame 0 to frame 1 , we would write A ⊤ = ( A Z A Y A X ) ⊤ = A X ⊤ A Y ⊤ A Z ⊤ {\displaystyle \mathbf {A} ^{\top }=(\mathbf {A} _{Z}\mathbf {A} _{Y}\mathbf {A} _{X})^{\top }=\mathbf {A} _{X}^{\top }\mathbf {A} _{Y}^{\top }\mathbf {A} _{Z}^{\top }}} .
회전 매트릭스 £ 오일러 축/각도 오일러 각도 θ 이 π 의 배수가 아닌 경우, 오일러 축 ê 과 각도 θ 은 다음과 같이 회전 행렬 A 의 요소로부터 계산할 수 있다.
θ = 아르코스 A 11 + A 22 + A 33 − 1 2 e 1 = A 32 − A 23 2 죄를 짓다 θ e 2 = A 13 − A 31 2 죄를 짓다 θ e 3 = A 21 − A 12 2 죄를 짓다 θ {\displaystyle {\begin{aligned}\theta &=\arccos {\frac {A_{11}+A_{22}+A_{33}-1}{2}}\\e_{1}&={\frac {A_{32}-A_{23}}{2\sin \theta }}\\e_{2}&={\frac {A_{13}-A_{31}}{2\sin \theta }}\\e_{3}&={\frac {A_{21}-A_{12}}{2\sin \theta }}\end{aligned}}} 또는 다음과 같은 방법을 사용할 수 있다.
회전 행렬의 아이겐데 구성은 아이겐 값 1과 코스 θ ± i sin θ 을 산출한다. 오일러 축은 1의 고유값에 해당하는 고유 벡터로, θ 은 나머지 고유값에서 계산할 수 있다.
오일러 축은 매트릭스 I - A의 null-space에 걸쳐 정규화된 벡터이기 때문에 단수 값 분해를 사용하여 찾을 수도 있다.
오일러 축 ê 과 각도 θ 에 해당하는 회전 행렬을 다른 방법으로 변환하려면 다음과 같이 로드리거스의 회전 공식 (적절한 수정으로)에 따라 계산할 수 있다.
A = I 3 cas θ + ( 1 − cas θ ) e ^ e ^ T + [ e ^ ] × 죄를 짓다 θ {\displaystyle \mathbf {A} =\mathbf {I} _{3}\cos \theta +(1-\cos \theta ){\hat {\mathbf {e} }}{\hat {\mathbf {e} }}^{\mathsf {T}}+\left[{\hat {\mathbf {e} }}\right]_{\times }\sin \theta } I3 × × × identity matrix를 사용하여
[ e ^ ] × = [ 0 − e 3 e 2 e 3 0 − e 1 − e 2 e 1 0 ] {\displaystyle \left[{\hattbf{e}}}}}{\matrix}0&-e_{3}\e_{3}\{3}#0&e_{1}\-e_{2}&e_{2}&e_{1}&e_{1}&e_{bmatrix}}}}}}}}}}}}}}}}}}}:{bmatrix}}}}}}}}}}}}}}}:{bmatrix}}}}}}}}}}}}}} 교차 제품 행렬 이다.
이렇게 하면 다음과 같이 확장된다.
A 11 = ( 1 − cas θ ) e 1 2 + cas θ A 12 = ( 1 − cas θ ) e 1 e 2 − e 3 죄를 짓다 θ A 13 = ( 1 − cas θ ) e 1 e 3 + e 2 죄를 짓다 θ A 21 = ( 1 − cas θ ) e 2 e 1 + e 3 죄를 짓다 θ A 22 = ( 1 − cas θ ) e 2 2 + cas θ A 23 = ( 1 − cas θ ) e 2 e 3 − e 1 죄를 짓다 θ A 31 = ( 1 − cas θ ) e 3 e 1 − e 2 죄를 짓다 θ A 32 = ( 1 − cas θ ) e 3 e 2 + e 1 죄를 짓다 θ A 33 = ( 1 − cas θ ) e 3 2 + cas θ {\displaystyle {\reasoned} A_{11}&=(1-\cos \theta )e_{1}^{2}+\cos \theta \\A_{12}&=(1-\cos \theta )e_{1}e_{2}-e_{3}\sin \theta \\A_{13}&=(1-\cos \theta )e_{1}e_{3}+e_{2}\sin \theta \\A_{21}&=(1-\cos \theta )e_{2}e_{1}+e_{3 }\sin \theta \\A_{22}&=(1-\cos \theta )e_{2}^{2}+\cos \theta \\A_{23}&=(1-\cos \theta )e_{2}e_{3}-e_{1}\sin \theta \\A_{31}&=(1-\cos \theta )e_{3}e_{1}-e_{2}\sin \theta \\A_{32}&=(1-\cos \theta )e_{3}e_{2}+e_{1}\sin \theta \\A_{33}&=(1-\cos \theta )e_{3}^{2}+\cos \theta \end{aligned}}} 회전 매트릭스 £4 q와 -q 는 동일 한 회전을 나타내기 때문에 회전 행렬에서 쿼터를 계산할 때 부호 모호성이 있다.
쿼터를 계산하는 한 가지 방법
q = [ q i q j q k q r ] = q i i + q j j + q k k + q r {\displaystyle \mathbf{q} ={\matrix}q_{i}\\q_{j}\q_{r}\end{bmatrix}}=q_{i}\mathbf {i}+q_{j}\matbf {j}+q_{k}\mathbf {k}{k}{k}}}}}}}}}}mathbf {k_{k_{r}}}}}}}}}}}}}}}}}}}}}}mathbf { 회전 매트릭스 A는 다음과 같다.
q r = 1 2 1 + A 11 + A 22 + A 33 q i = 1 4 q r ( A 32 − A 23 ) q j = 1 4 q r ( A 13 − A 31 ) q k = 1 4 q r ( A 21 − A 12 ) {\displaystyle {\begin{aligned}q_{r}&={\frac {1}{2}}{\sqrt {1+A_{11}+A_{22}+A_{33}}}\\q_{i}&={\frac {1}{4q_{r}}}\left(A_{32}-A_{23}\right)\\q_{j}&={\frac {1}{4q_{r}}}\left(A_{13}-A_{31}\right)\\q_{k}&={\frac {1}{4q_{r}}}\left(A_{21}-A_{12}\right)\end{aligned}}} q 를 계산하는 다른 수학적으로 동등한 세 가지 방법이 있다. 분모가 0에 가까운 상황을 피함으로써 수치적 부정확성을 줄일 수 있다. 다른 세 가지 방법 중 하나는 다음과 같다.[6]
q i = 1 2 1 + A 11 − A 22 − A 33 q j = 1 4 q i ( A 12 + A 21 ) q k = 1 4 q i ( A 13 + A 31 ) q r = 1 4 q i ( A 32 − A 23 ) {\displaystyle {\begin{aligned}q_{i}&={\frac {1}{2}}{\sqrt {1+A_{11}-A_{22}-A_{33}}}\\q_{j}&={\frac {1}{4q_{i}}}\left(A_{12}+A_{21}\right)\\q_{k}&={\frac {1}{4q_{i}}}\left(A_{13}+A_{31}\right)\\q_{r}&={\frac {1}{4q_{i}}}\left(A_{32}-A_{23}\right)\end{aligned}}} 쿼터니언 q 에 해당하는 회전 행렬은 다음과 같이 계산할 수 있다.
A = ( q r 2 − q ˇ T q ˇ ) I 3 + 2 q ˇ q ˇ T + 2 q r Q {\displaystyle \mathbf {A} =\left(q_{r}^{2}-{\check {\mathbf {q} }}^{\mathsf {T}}{\check {\mathbf {q} }}\right)\mathbf {I} _{3}+2{\check {\mathbf {q} }}{\check {\mathbf {q} }}^{\mathrm {T} }+2q_{r}\mathbf {\mathcal {Q}} } 어디에
q ˇ = [ q i q j q k ] , Q = [ 0 − q k q j q k 0 − q i − q j q i 0 ] {\displaystyle {\check {\mathbf {q} }}={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\end{bmatrix}}\,,\quad \mathbf {\mathcal {Q}} ={\begin{bmatrix}0&-q_{k}&q_{j}\\q_{k}&0&-q_{i}\\-q_{j}&q_{i}&0\end{bmatrix}}} 어떤 것을 주는지
A = [ 1 − 2 q j 2 − 2 q k 2 2 ( q i q j − q k q r ) 2 ( q i q k + q j q r ) 2 ( q i q j + q k q r ) 1 − 2 q i 2 − 2 q k 2 2 ( q j q k − q i q r ) 2 ( q i q k − q j q r ) 2 ( q j q k + q i q r ) 1 − 2 q i 2 − 2 q j 2 ] {\displaystyle \mathbf{A}={\begin{bmatrix}1-2q_{j}^{2}-2q_{k}^{2}&, 2\left(q_{나는}q_{j}-q_{k}q_{r}\right)&, 2\left(q_{나는}q_{k}+q_{j}q_{r}\right)\\2\left(q_{나는}q_{j}+q_{k}q_{r}\right)&, 1-2q_{나는}^{2}-2q_{k}^{2}&, 2\left(q_{j}q_{k}-q_{나는}q_{r}\right)\\2\left(q_{나는}q_{k}-q_{j}q_{r}\right)&, 2\left(q_{j}q_{k}+q_{나는}q_{r}\right)&, 1-2q_{나는}^{2}-2q_{j}^{2}\end{bmatrix}}} 또는 동등하게
A = [ − 1 + 2 q i 2 + 2 q r 2 2 ( q i q j − q k q r ) 2 ( q i q k + q j q r ) 2 ( q i q j + q k q r ) − 1 + 2 q j 2 + 2 q r 2 2 ( q j q k − q i q r ) 2 ( q i q k − q j q r ) 2 ( q j q k + q i q r ) − 1 + 2 q k 2 + 2 q r 2 ] {\displaystyle \mathbf{A}={\begin{bmatrix}-1+2q_{나는}^{2}+2q_{r}^{2}&, 2\left(q_{나는}q_{j}-q_{k}q_{r}\right)&, 2\left(q_{나는}q_{k}+q_{j}q_{r}\right)\\2\left(q_{나는}q_{j}+q_{k}q_{r}\right)&, -1+2q_{j}^{2}+2q_{r}^{2}&, 2\left(q_{j}q_{k}-q_{나는}q_{r}\right)\\2\left(q_{나는}q_{k}-q_{j}q_{r}\right)&, 2\left(q_{j}q_{k}+q_{나는}q_{r}\right)&, -1+2q_{k}^{2}+2q_{r}^{2}\end{bmatrix}} } 오일러 앵글 파운드의 쿼터니온 오일러 각도(z-x-z 외연) → 쿼터니온 우리는 다음 알고리즘에 대해 x-컨벤션 3-1-3 외연 오일러 각도 를 고려할 것이다. 알고리즘의 조건은 사용된 규약에 따라 달라진다.
우리는 쿼터를 계산할 수 있다.
q = [ q i q j q k q r ] = q i i + q j j + q k k + q r {\displaystyle \mathbf{q} ={\matrix}q_{i}\\q_{j}\q_{r}\end{bmatrix}}=q_{i}\mathbf {i}+q_{j}\matbf {j}+q_{k}\mathbf {k}{k}{k}}}}}}}}}}mathbf {k_{k_{r}}}}}}}}}}}}}}}}}}}}}}mathbf { 오일러 각(ϕ , θ , ψ ) 에서 다음과 같이 한다.
q i = cas ϕ − ψ 2 죄를 짓다 θ 2 q j = 죄를 짓다 ϕ − ψ 2 죄를 짓다 θ 2 q k = 죄를 짓다 ϕ + ψ 2 cas θ 2 q r = cas ϕ + ψ 2 cas θ 2 {\displaystyle {\begin{aligned}q_{i}&=\cos {\frac {\phi -\psi }{2}}\sin {\frac {\theta }{2}}\\q_{j}&=\sin {\frac {\phi -\psi }{2}}\sin {\frac {\theta }{2}}\\q_{k}&=\sin {\frac {\phi +\psi }{2}}\cos {\frac {\theta }{2}}\\q_{r}&=\cos {\frac {\phi +\psi }{2}}\cos {\frac {\theta }{2}}\end{aligned}}} 오일러 각도(z-y ′-x ″ 내인성) → quaternion 요 (ψ ), 피치 (θ ), 롤(ϕ ) 각도에 해당하는 쿼터니온. 또는 z-y ′-x ″ 규약에 따른 본질적 인 Tait-Bryan 각도 는 다음과 같이 계산할 수 있다.
q i = 죄를 짓다 ϕ 2 cas θ 2 cas ψ 2 − cas ϕ 2 죄를 짓다 θ 2 죄를 짓다 ψ 2 q j = cas ϕ 2 죄를 짓다 θ 2 cas ψ 2 + 죄를 짓다 ϕ 2 cas θ 2 죄를 짓다 ψ 2 q k = cas ϕ 2 cas θ 2 죄를 짓다 ψ 2 − 죄를 짓다 ϕ 2 죄를 짓다 θ 2 cas ψ 2 q r = cas ϕ 2 cas θ 2 cas ψ 2 + 죄를 짓다 ϕ 2 죄를 짓다 θ 2 죄를 짓다 ψ 2 {\displaystyle{\begin{정렬}q_{나는}&, =\sin{\frac{\phi}{2}}\cos{\frac{\theta}{2}}\cos{\frac{\psi}{2}}-\cos{\frac{\phi}{2}}\sin{\frac{\theta}{2}}\sin{\frac{\psi}{2}}\\q_{j}&, =\cos}\sin{\frac{\theta}{2}{\frac{\phi}{2}}\cos{\frac{\psi}{2}}+\sin{\frac{\phi}{2}}\cos{\frac{\theta}{2}}\sin{\frac{\psi}{2}}\\q_{k}&a.융점, =\cos{\f rac {\phi }{2}}\cos {\frac {\theta }{2}}\sin {\frac {\psi }{2}}-\sin {\frac {\phi }{2}}\sin {\frac {\theta }{2}}\cos {\frac {\psi }{2}}\\q_{r}&=\cos {\frac {\phi }{2}}\cos {\frac {\theta }{2}}\cos {\frac {\psi }{2}}+\sin {\frac {\phi }{2}}\sin {\frac {\theta }{2}}\sin {\frac {\psi }{2}}\end{aligned}}} Qaternion → 오일러 각도(z-x-z 외연) 회전 쿼터를 지정함
q = [ q i q j q k q r ] = q i i + q j j + q k k + q r , {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}\,,} x-컨벤션 3-1-3 외측 오일러 각도 ( (, θ , ψ ) 는 다음을 통해 계산할 수 있다.
ϕ = atan2 ( ( q i q k + q j q r ) , − ( q j q k − q i q r ) ) θ = 아르코스 ( − q i 2 − q j 2 + q k 2 + q r 2 ) ψ = atan2 ( ( q i q k − q j q r ) , ( q j q k + q i q r ) ) {\displaystyle {\displaystyle}\phi &=\atan2} \left(왼쪽(q_{i}q_{k}q_{j}q_{r}\right),-\left(q_{j}q_{k}q_{i}q_{r}q_{r}\ri}\rig)\rig)\rig)\right) \\theta &=\arccos \left(-q_{i}^{2}-q_{j}^{2}+q_{k}^{2}+q_{r}^{2}\right)\\\psi &=\operatorname {atan2} \left(\left(q_{i}q_{k}-q_{j}q_{r}\right),\left(q_{j}q_{k}+q_{i}q_{r}\right)\right)\end{aligned}}} Qaternion → 오일러 각도(z-y--x ″ 내인성) 회전 쿼터를 지정함
q = [ q i q j q k q r ] = q i i + q j j + q k k + q r , {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}\,,} 요 (Yaw ), 피치 및 롤 각도 또는 z-y″-x following 관행에 따른 고유 Tait-Bryan 각도 는 다음과 같이 계산할 수 있다.
굴리다 = atan2 ( 2 ( q r q i + q j q k ) , 1 − 2 ( q i 2 + q j 2 ) ) 투구하다 = 아크신 ( 2 ( q r q j − q k q i ) ) 요를 치다 = atan2 ( 2 ( q r q k + q i q j ) , 1 − 2 ( q j 2 + q k 2 ) ) {\displaystyle {\databled}{\text{roll}&=\atan2} \좌측(q_{r}q_{j}q_{k}\우측), 1-2\좌측(q_{i}^{2}^{j}^{j}^{2}\우측) \\{\text{i}}&=\arcsin \left(q_{r}q_{j}-q_{k}q_{i}\오른쪽) \\{\text}}&=\cHB 이름 {atan2} \left(2\왼쪽(q_{r}q_{k}{j}\오른쪽), 1-2\좌측(q_{j}^{{j}^{2}+q_{2}^{k}^{2}\오른쪽)\end{aigned}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 오일러 축-각각 £ 쿼터니언 오일러 축 ê 과 각도 θ 을 주어 쿼터니온
q = [ q i q j q k q r ] = q i i + q j j + q k k + q r , {\displaystyle \mathbf {q} ={\begin{bmatrix}q_{i}\\q_{j}\\q_{k}\\q_{r}\end{bmatrix}}=q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} +q_{r}\,,} 으로 계산할 수 있다.
q i = e ^ 1 죄를 짓다 θ 2 q j = e ^ 2 죄를 짓다 θ 2 q k = e ^ 3 죄를 짓다 θ 2 q r = cas θ 2 {\displaystyle {\begin{aligned}q_{i}&={\hat {e}}_{1}\sin {\frac {\theta }{2}}\\q_{j}&={\hat {e}}_{2}\sin {\frac {\theta }{2}}\\q_{k}&={\hat {e}}_{3}\sin {\frac {\theta }{2}}\\q_{r}&=\cos {\frac {\theta }{2}}\end{aligned}}} 회전 쿼터 q , 정의
q ˇ = [ q i q j q k ] . {\displaystyle {\check{\mathbf {q}}}}}}={\\bmatrix}q_{i}\q_\j}\q_{k}\end{bmatrix}}\,\, } 그 다음 오일러 축 and과 각도 θ 을 계산하면 다음과 같다.
e ^ = q ˇ ‖ q ˇ ‖ θ = 2 아르코스 q r {\displaystyle {\mathbf {e}{}}}}{}&={\frac {\\cHBF {q}}}}}{}}}}}{\\cHBF {q}}}}}\\\\theta &{r}\end}}}}}}}}}}}}}}} 파생상품의 전환공식 회전 매트릭스 £ 각도 속도 각도 속도 벡터
ω = [ ω x ω y ω z ] {\displaystyle {\bmothymbol {\omega }={\bmatrix}\omega _{x}\\\omega _{z}\end{bmatrix}}}}}} 다음 관계를 통해 회전 행렬 dA /dt의 시간 파생 모델에서 추출할 수 있다.
[ ω ] × = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] = d A d t A T {\displaystyle [{\boldsymbol {\omega }}]_{\times }={\begin{bmatrix}0&-\omega _{z}&\omega _{y}\\\omega _{z}&0&-\omega _{x}\\-\omega _{y}&\omega _{x}&0\end{bmatrix}}={\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {A} ^{\mathsf {T}}} 이 파생은 Iofe로부터 다음과[7] 같이 각색된다.
벡터 r 의0 경우 r (t )=A (t )r 을0 고려하여 다음과 같이 구분하십시오.
d r d t = d A d t r 0 = d A d t A T ( t ) r ( t ) {\displaystyle {\frac {\mathrm {d} \mathbf {r} }{\mathrm {d} t}}={\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {r} _{0}={\frac {\mathrm {d} \mathbf {A} }{\mathrm {d} t}}\mathbf {A} ^{\mathsf {T}}(t)\mathrm {r} (t)} 벡터의 파생상품은 팁의 선형 속도 다. A 는 회전 행렬이므로, 정의상 r (t ) 의 길이는 항상 r 의0 길이와 같으며, 따라서 시간에 따라 변하지 않는다. 따라서 r (t ) 가 회전할 때, 그것의 끝은 원을 따라 이동하며, 끝의 선형 속도는 원에 접선한다. 즉, 항상 r (t )에 수직이다. 이 특정한 경우, 선형 속도 벡터와 각도 속도 벡터 사이의 관계는
d r d t = ω ( t ) × r ( t ) = [ ω ] × r ( t ) {\displaystyle {\frac {\mathbf {r}{}{\mathbf {d}t}={\mathbmbol {\omega }(t)\mathbf {r}=[{\mathbol {\\omega }]_{\mathbf {r}(t)}}}}}} (원형 모션 및 교차 제품 참조).
상술한 방정식의 전이성 에 의해,
d A d t A T ( t ) r ( t ) = [ ω ] × r ( t ) {\displaystyle {\frac {\mathrm {a}{}{\mathbf {d}t}\mathbf {A}^{\mathbf {T}(t)\mathbf {r}=[{\boldsymbol{\omega }}]_\time {r}}\mathb {r} 그 말은
d A d t A T ( t ) = [ ω ] × {\displaystyle {\frac {\mathrm {d} \mathbf {A}{}}\mathbf {d}t}^{\mathsf {T}}(t)=[{\boldsymbol{\omega }}}}{\time }}}}}} quaternion £ 각도 속도 각도 속도 벡터
ω = [ ω x ω y ω z ] {\displaystyle {\bmothymbol {\omega }={\bmatrix}\omega _{x}\\\omega _{z}\end{bmatrix}}}}}} 다음과 같은 쿼터니온 dq / dt 의 파생상품에서 얻을 수 있다.[8]
[ 0 ω x ω y ω z ] = 2 d q d t q ~ {\displaystyle {\bmatrix}0\\\omega _{x}\\\omega _{y}\end{bmatrix}}=2{\frac {\d}\mathbf {q}{\mathbf {d}}}{\tilde {\mathbf {q}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 여기서 q ~ {\ textstyle {\tilde {\mathbf {q}}}} 은(는) q {\ textstyle \mathbf {q} 의 결합(수)이다.
반대로 쿼터니온의 파생상품은
d q d t = 1 2 [ 0 ω x ω y ω z ] q . {\displaystyle {\frac {\mathrm {d} \mathbf {q}{}}{\mathbf {d}t}={\frac {1}{1}:{n\bmatrix0\\\\\omega _{x}\nd}\mathbf {q}, \}}}}}}}}}}}}}}}.
기하 대수학에서의 로터 기하 대수학 (GA)의 형식주의는 쿼터니온 방법의 확장 및 해석을 제공한다. Central to GA는 벡터의 기하학적 산물로서, 전통적 인 내측과 교차 생산물의 확장으로서, 다음과 같이 주어진다.
a b = a ⋅ b + a ∧ b {\displaystyle \mathbf {ab} =\mathbf {a} \cdot \mathbf {b} +\mathbf {a} \cdot \mathbf {b} \mathbf {b} } \mathbf {b}}}} 여기서 기호 ∧ 은 외부 제품 또는 쐐기 제품 을 나타낸다. 벡터 a 와 b 의 이 제품은 내부 제품에서 스칼라 부분과 쐐기 제품에서 바이벡터 부분이라는 두 가지 용어를 생산한다. 이 이벡터는 벡터의 교차 생산물이 돌아오는 면에 직각으로 평면을 설명한다.
GA의 이벡터들은 벡터에 비해 몇가지 특이한 성질을 가지고 있다. 기하학적 산물 아래에서, 이벡터는 음의 정사각형을 가지고 있다: 이벡터 x̂ŷ 는 xy-plane을 묘사한다. 그것의 정사각형은 (x̂ŷ )2 = x̂x̂ŷ 이다. 단위 기반 벡터는 서로 직교하기 때문에 기하학적 제품은 비대칭 외부 제품으로 감소한다. x̂ 와 ŷ 은 -1 인자의 비용으로 자유롭게 교환할 수 있다. 기본 벡터 자체가 정사각형을 +1로 만들기 때문에 제곱은 -x̂x̂ŷŷ = -1 로 감소한다.
이 결과는 일반적으로 모든 이브렉터에 대해 유지되며, 그 결과 이브렉터는 가상 의 단위와 유사한 역할을 한다. 기하 대수학에서는 아날로그에 있는 이벡터를 로터 인 쿼터니온에 사용한다.
R = 생략하다 ( − B ^ θ 2 ) = cas θ 2 − B ^ 죄를 짓다 θ 2 , {\displaystyle \mathbf{R} =\exp \left({-}-{\hattbf{B}}}}{2}}\right)=\cos {\frac {\frac{}-{2}}-{\chatbf{B}}}}}}}}}\sin {\ca}}} 여기서 B̂ 은 회전면 을 설명하는 단위 바이벡터다. B̂ 는 -1로 제곱하기 때문에 R 의 파워 시리즈 확장은 삼각함수 를 생성한다. 벡터 a 를 회전 벡터 b 에 매핑하는 회전 공식은 다음과 같다.
b = R a R † {\displaystyle \mathbf {b} =\mathbf {RaR}^{\dager }}} 어디에
R † = 생략하다 ( 1 2 B ^ θ ) = cas θ 2 + B ^ 죄를 짓다 θ 2 {\displaystyle \mathbf {R} ^{\dagger }=\exp \left({\frac {1}{2}}{\hat {\mathbf {B} }}\theta \right)=\cos {\frac {\theta }{2}}+{\hat {\mathbf {B} }}\sin {\frac {\theta }{2}}} R {\ displaystyle \scriptstyle R} 의 역방향 이다(B {\ displaystyle \scriptstyle B} 의 벡터 순서를 바꾸는 것은 부호를 변경하는 것과 동일).
예. 축을 중심으로 회전
v ^ = 1 3 ( x ^ + y ^ + z ^ ) {\displaystyle {\hatsbf {v}}}}}={\frac {1}{\sqrt {3}\좌측값\hatsbf {x}}}}}}+{\mathbf {y}}}}}{\hat {\mathbf {z}}}}}오른쪽)} v̂ 를 이중 바이브레이터로 변환하여 수행할 수 있다.
B ^ = x ^ y ^ z ^ v ^ = i v ^ , {\displaystyle {\hatsbf {B}}}}}}}{{\hat {\mathbf {y}}}{{\hat {\mathbf {z}}}{\hat {\mathbf {v}}}}}{\hat {\mathbf {v}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 여기서 i = x̂ŷẑ 는 단위 체적 요소로서, 3차원 공간의 유일한 3차원(삼각형)이다. 결과는
B ^ = 1 3 ( y ^ z ^ + z ^ x ^ + x ^ y ^ ) . {\displaystyle {\hat {\mathbf {B} }}={\frac {1}{\sqrt {3}}}\left({\hat {\mathbf {y} }}{\hat {\mathbf {z} }}+{\hat {\mathbf {z} }}{\hat {\mathbf {x} }}+{\hat {\mathbf {x} }}{\hat {\mathbf {y} }}\right)\,. } 그러나 3차원 공간에서는 3D 로 모든 사물과 통근하고 -1로 제곱한다는 사실을 이용하여 B̂ = iv̂ 라는 표현을 남기는 것이 더 간단한 경우가 많다. 이 평면에서 각도 θ 에 의한 x̂ 벡터의 회전은 다음과 같다.
x ^ ′ = R x ^ R † = e − i v ^ θ 2 x ^ e i v ^ θ 2 = x ^ cas 2 θ 2 + i ( x ^ v ^ − v ^ x ^ ) cas θ 2 죄를 짓다 θ 2 + v ^ x ^ v ^ 죄를 짓다 2 θ 2 {\displaystyle {\hat {\mathbf {x} }}'=\mathbf {R} {\hat {\mathbf {x} }}\mathbf {R} ^{\dagger }=e^{-\mathbf {i} {\hat {\mathbf {v} }}{\frac {\theta }{2}}}{\hat {\mathbf {x} }}e^{i{\hat {\mathbf {v} }}{\frac {\theta }{2}}}={\hat {\mathbf {x} }}\cos ^{2}{\frac {\theta }{2}}+\mathbf {i} \left({\hat {\mathbf {x} }}{\hat {\mathbf {v} }}-{\hat {\mathbf {v } }}{\hat {\mathbf {x} }}\right)\cos {\frac {\theta }{2}}\sin {\frac {\theta }{2}}+{\hat {\mathbf {v} }}{\hat {\mathbf {x} }}{\hat {\mathbf {v} }}\sin ^{2}{\frac {\theta }{2}}} 라는 것을 인식하면서
i ( x ^ v ^ − v ^ x ^ ) = 2 i ( x ^ ∧ v ^ ) {\displaystyle \mathbf {i} ({\hat {\mathbf {x} }}{\hat {\mathbf {v} }}-{\hat {\mathbf {v} }}{\hat {\mathbf {x} }})=2\mathbf {i} ({\hat {\mathbf {x} }}\wedge {\hat {\mathbf {v} }})} 그리고 -v̂x̂v̂ 은 v̂ 에 수직인 평면에 대한 x̂ 의 반사로 회전 연산에 기하학적 해석을 제공한다: 회전은 v̂ 에 평행한 구성 요소를 보존하고 수직인 구성 요소만 변화시킨다. 그런 다음 항을 계산한다.
v ^ x ^ v ^ = 1 3 ( − x ^ + 2 y ^ + 2 z ^ ) 2 i x ^ ∧ v ^ = 2 i 1 3 ( x ^ y ^ + x ^ z ^ ) = 2 3 ( y ^ − z ^ ) {\displaystyle{\begin{정렬}{\hat{\mathbf{v}}}{\hat{\mathbf{)}}}{\hat{\mathbf{v}}}&={\frac{1}{3}}}{나는}{\hat{\mathbf{)}\left(-{\hat{\mathbf{x}}}+2{\hat{\mathbf{y}}}+2{\hat{\mathbf{z}}}\right)\\2\mathbf}\wedge{\hat{\mathbf{v}}}&=2\mathbf{나는}{\frac{1}{\sqrt{3}}}\left({\hat{\mathbf{)}}}{\hat{\mathbf{y}}}와{.\hat{\m atsbf{x}}}{{\hatt{\mathbf{z}}}}}}\{\frac {2}{\sqrt{3}}\좌우}}\hattbf {y}}}}}}}}}{\hatmathbf {z}\right}\end{aigned}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 회전 결과는 다음과 같다.
x ^ ′ = x ^ ( cas 2 θ 2 − 1 3 죄를 짓다 2 θ 2 ) + 2 3 y ^ 죄를 짓다 θ 2 ( 죄를 짓다 θ 2 + 3 cas θ 2 ) + 2 3 z ^ 죄를 짓다 θ 2 ( 죄를 짓다 θ 2 − 3 cas θ 2 ) {\displaystyle {\hat {\mathbf {x} }}'={\hat {\mathbf {x} }}\left(\cos ^{2}{\frac {\theta }{2}}-{\frac {1}{3}}\sin ^{2}{\frac {\theta }{2}}\right)+{\frac {2}{3}}{\hat {\mathbf {y} }}\sin {\frac {\theta }{2}}\left(\sin {\frac {\theta }{2}}+{\sqrt {3}}\cos {\frac {\theta }{2}}\right)+{\frac {2}{3}}{\hat {\mathbf {z} }}\sin {\frac {\theta }{2}}\left(\s {\frac {\theta }{2}}-{\sqrt{3}}\cos {\frac {\theta }{2}}\오른쪽)에 있음 이 결과에 대한 간단한 점검은 각도 θ = 2 / 3π 이다. 그러한 회전은 x̂ 를 ŷ 에 매핑해야 한다. 실제로 회전은 다음과 같이 감소한다.
x ^ ′ = x ^ ( 1 4 − 1 3 3 4 ) + 2 3 y ^ 3 2 ( 3 2 + 3 1 2 ) + 2 3 z ^ 3 2 ( 3 2 − 3 1 2 ) = 0 x ^ + y ^ + 0 z ^ = y ^ {\displaystyle{\begin{정렬}{\hat{\mathbf{)}}}'&, ={\hat{\mathbf{)}}}\left({\frac{1}{4}}-{\frac{1}{3}}{\frac{3}{4}}\right)+{\frac{2}{3}}{\hat{\mathbf{y}}}{\frac{\sqrt{3}}{2}}\left({\frac{\sqrt{3}}{2}}와{\sqrt{3}}{\frac{1}{2}}\right)+{\frac{2}{3}}{\hat{\mathbf{z}}}{\frac{\sqrt{3}}{2}}\left({\frac{\sqrt{3}}{2}}-{\sqrt{.3}}{ \frac {1}{2}}\\오른쪽)\ \&=0{\hat{\mathbf{x}}}}{}}}}{}}}{}}}}{\mathbf {y}}}}}={\hattbf {y}}}}{\mathbf {}}}}}}} 예상대로 이 회전식은 벡터뿐만 아니라 모든 멀티플렉터 에 유효하다. 또 오일러 각도를 사용하면 조작의 복잡성이 크게 줄어든다. 복합 회전은 로터를 곱하여 발생하므로 오일러 각도의 총 로터는
R = R γ ′ R β ′ R α = 생략하다 ( − i z ^ ′ γ 2 ) 생략하다 ( − i x ^ ′ β 2 ) 생략하다 ( − i z ^ α 2 ) {\displaystyle \mathbf {R} =\mathbf {R} _{\gamma '}\mathbf {R} _{\beta '}\mathbf {R} _{\alpha }=\exp \left({\frac {-\mathbf {i} {\hat {\mathbf {z} }}'\gamma }{2}}\right)\exp \left({\frac {-\mathbf {i} {\hat {\mathbf {x} }}'\beta }{2}}\right)\exp \left({\frac {-\mathbf {i} {\hat {\mathbf {z} }}\alpha }{2}}\right)} 그렇지만
x ^ ′ = R α x ^ R α † 그리고 z ^ ′ = R β ′ z ^ R β ′ † . {\displaystyle {\begin{aligned}{\hat {\mathbf {x} }}'&=\mathbf {R} _{\alpha }{\hat {\mathbf {x} }}\mathbf {R} _{\alpha }^{\dagger }\quad {\text{and}}\\{\hat {\mathbf {z} }}'&=\mathbf {R} _{\beta '}{\hat {\mathbf {z} }}\mathbf {R} _{\beta '}^{\dagger }\,. \end{정렬}}} 이 로터들은 이렇게 지수에서 다시 나온다.
R β ′ = cas β 2 − i R α x ^ R α † 죄를 짓다 β 2 = R α R β R α † {\displaystyle \mathbf {R} _{\beta '}=\cos {\frac {\beta }{2}}-\mathbf {i} \mathbf {R} _{\alpha }{\hat {\mathbf {x} }}\mathbf {R} _{\alpha }^{\dagger }\sin {\frac {\beta }{2}}=\mathbf {R} _{\alpha }\mathbf {R} _{\beta }\mathbf {R} _{\alpha }^{\dagger }} 여기서 R 은β 원래 좌표에서의 회전을 의미한다. γ 회전도 이와 유사하게,
R γ ′ = R β ′ R γ R β ′ † = R α R β R α † R γ R α R β † R α † . {\displaystyle \mathbf {R} _{\gamma '}=\mathbf {R} _{\beta '}\mathbf {R} _{\gamma }\mathbf {R} _{\beta '}^{\dagger }=\mathbf {R} _{\alpha }\mathbf {R} _{\beta }\mathbf {R} _{\alpha }^{\dagger }\mathbf {R} _{\gamma }\mathbf {R} _{\alpha }\mathbf {R} _{\beta }^{\dagger }\mathbf {R} _{\alpha }^{\dagger }\,. } R γ 및 R α 통근(동일한 평면의 회전은 통근해야 함)과 총 회전자가 되는 점에 유의한다.
R = R α R β R γ {\displaystyle \mathbf {R} =\mathbf {R} _{\alpha }\mathbf {R} _{\gamma }}} 따라서 오일러 각도의 복합 회전은 원래의 고정 프레임에서 일련의 등가 회전이 된다.
기하 대수학에서 로터는 거의 3차원의 쿼터니온과 동일하게 작용하지만, 이 형식주의의 힘은 그 일반성이다: 이 방법은 어떤 차원이든 있는 공간에서 적절하고 유효하다. 3D에서 회전은 3도 자유도를 가지며, 각 선형 독립면(bivector)은 회전이 일어날 수 있다. 쿼터니온 쌍을 사용해 4D로 회전할 수 있어 자유도가 6도인 것으로 알려졌으며 기하학적 대수 접근방식은 이 결과를 검증한다: 4D에서는 회전 생성기로 사용할 수 있는 6개의 선형 독립형 바이브레이터가 있다.
각도-각도-각도 회전은 축과 각도로 모델링할 수 있다. 로터를 통과하는 축이 있는 자이로스코프 및 로터의 회전으로 입증된 축 주위의 회전 양과 같이, 축 이 방향을 지정하는 단위 벡터인 ng l e ∗ (x i s ){\displaystyle angle*(축) 으로 표현할 수 있다. 로터 축의 원점으로부터, 어떤 방향에서든, 동일한 회전 축으로, 각도의 스케일이 원점으로부터의 거리와 동일하다. 공간의 다른 어떤 지점에서도 마찬가지로 원점이 아닌 출발점으로 대표되는 방향에 상대적으로 적용된 동일한 방향 벡터는 단위 벡터가 지정한 동일한 축을 중심으로 동일한 변화를 적용한다. n g l e ∗ x i s {\displaystyle angle*axis} 스케일링은 Angle-Agle-Agle 표기법에서 고유한 좌표를 제공한다. 두 좌표 사이의 차이는 즉시 두 방향 사이의 회전 축과 각도를 산출한다.
쿼터니온의 자연 로그는 3개의 회전 축을 중심으로 3개의 각도로 곡선 공간을 나타내며, 유러각과 유사하지만 독립된 순서로 호 길이로 표현된다.[9] 회전의 추가에 대한 Lie 제품 공식 정의가 있는데, 이는 연속적으로 적용되는 각 회전의 최소 단계의 합계라는 것이다. 이는 회전이 연속적인 회전이 아닌 동일한 순간의 모든 회전의 결과라는 것을 의미한다.
회전 축은 표준 데카르트 X , Y , Z {\displaystyle X,Y,Z} 축에 정렬되어 있다. 특히 회전 중인 프레임이 IK 체인에서와 같이 서로 고정되어 있을 때 이러한 회전은 간단히 추가되고 빼질 수 있다. 동일한 기준 프레임에 있는 두 물체 사이의 차이는 단순히 방향만 빼면 찾을 수 있다. 로드리게스 포뮬라의 적용은 외부 선원에서 적용되거나 현재 회전과 관련된 선원에서 이루어지는 회전은 여전히 승수가 필요하며, 로드리게스 포뮬라의 적용이 제공된다.
각 차축 좌표로부터의 회전은 다른 모든 차축과 동시에 지정된 축에 수직으로 평면을 회전시키는 것을 의미한다. 측정이 각도로 고려될 수 있지만, 그 표현은 실제로 곡선의 호 길이인 것이다. 각도는 곡선이 관성 방향으로 현재 지점에 적용되는 델타인 점 주위의 회전을 의미한다.
관찰 참고 사항: 로그 쿼터는 고리 또는 회전 옥타브(옥타브)를 가지고 있다. 즉, 4㎛({\displaystyle \pi }) 이상의 회전에는 관련 곡선이 있다 . 이 경계선에 접근하는 사물의 곡선들은 엄청나게 빠른 궤도를 도는 것처럼 보인다.
'인간이 읽을 수 있는' 각도에서 1-규격을 사용하여 각도를 더 '적절하게' 보이도록 크기를 조정할 수 있다. 섭씨온도는 화씨보다 더 정확하다고 간주될 수 있다.
Q = [ X Y Z ] {\displaystyle {Q}={\begin{bmatrix}X\\ Y\\Z\end{bmatrix}} 기타 관련 값은 즉시 도출할 수 있다.
V o r V 2 = X X + Y Y + Z Z V 1 = X + Y + Z {\displaystyle {\begin{matrix} V 또는 V _{2}={\sqrt {XX+ YY+ZZ}\\V _{1}= X + Y + Z \end{matrix}} 총 회전 각도...
θ = V \displaystyle \theta = V } 회전축...
A x i s ( l n Q ) = [ X θ Y θ Z θ ] {\displaystyle Axis(lnQ)={\begin{bmatrix}{\frac {X}{\theta}}\{\frac {Y}{\theta}\}\\\frac {Z}{\theta }}}}{\theta }}}{bmatrix}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 쿼터니온 표현 q = [ cas θ 2 죄를 짓다 θ 2 X Q 죄를 짓다 θ 2 Y Q 죄를 짓다 θ 2 Z Q ] {\displaystyle q={\begin{bmatrix}\cos {\frac {\theta }{2}}\\\sin {\frac {\theta }{2}}{\frac {X}{ Q }}\\\sin {\frac {\theta }{2}}{\frac {Y}{ Q }}\\\sin {\frac {\theta }{2}}{\frac {Z}{ Q }}\end{bmatrix}}} 기본 매트릭스 계산 이는 벡터(1,0,0),(0,1,0),(0,0,1) 회전과 감소 상수를 통해 만들어졌다.
입력 Q = [ X Y Z ] {\displaystyle {Q}=[{X}}}{ Y}{Z}]}
q r = cas θ q i = 죄를 짓다 θ ⋅ X Q q j = 죄를 짓다 θ ⋅ Y Q q k = 죄를 짓다 θ ⋅ Z Q {\displaystyle {\begin{matrix}q_{r}=\cos \theta \\q_{i}=\sin \theta \cdot {\frac {X}{ Q }}\\q_{j}=\sin \theta \cdot {\frac {Y}{ Q }}\\q_{k}=\sin \theta \cdot {\frac {Z}{ Q }}\end{matrix}}} 결과 행렬을 계산하는 데 사용되는...
[ 1 − 2 q j 2 − 2 q k 2 2 ( q i q j − q k q r ) 2 ( q i q k + q j q r ) 2 ( q i q j + q k q r ) 1 − 2 q i 2 − 2 q k 2 2 ( q j q k − q i q r ) 2 ( q i q k − q j q r ) 2 ( q j q k + q i q r ) 1 − 2 q i 2 − 2 q j 2 ] {\displaystyle {\begin{bmatrix}1-2q_{j}^{2}-2q_{k}^{2}&2(q_{i}q_{j}-q_{k}q_{r})&2(q_{i}q_{k}+q_{j}q_{r})\\2(q_{i}q_{j}+q_{k}q_{r})&1-2q_{i}^{2}-2q_{k}^{2}&2(q_{j}q_{k}-q_{i}q_{r})\\2(q_{i}q_{k}-q_{j}q_{r})&2(q_{j}q_{k}+q_{i}q_{r})&1-2q_{i}^{2}-2q_{j}^{2}\end{bmatrix}}} 대체 기준 계산 또는 이것을 사용할 수 있다.
주어진: A = [ X , Y , Z ] {\displaystyle {A}=[X,Y,Z]}
각도 축 θ = A {\ displaystyle \theta = A} 및 [x , y , z ] {\displaystyle [x,y,z]} = A {\ displaystyle {\frac {A}{ A}}}}}}
Compute some partial expressions: x y = x y ( 1 − cos θ ) w x = x sin θ x x = x x ( 1 − cos θ ) y z = y z ( 1 − cos θ ) w y = y sin θ y y = y y ( 1 − cos θ ) x z = x z ( 1 − cos θ ) w z = z sin θ z z = z z ( 1 − cos θ ) {\displaystyle {\begin{matrix}x_{y}=xy(1-\c os \theta )&w_{x}=x\sin \theta &x_{x}=xx(1-\cos \theta )\\y_{z}=yz(1-\cos \theta )&w_{y}=y\sin \theta &y_{y}=yy(1-\cos \theta )\\x_{z}=xz(1-\cos \theta )&w_{z}=z\sin \theta &z_{z}=zz(1-\cos \theta )\end{matrix}}}
Compute the resulting matrix: [ cos θ + x x x y + w z w y + x z w z + x y cos θ + y y y z − w x x z − w y w x + y z cos θ + z z ] {\displaystyle {\begin{bmatrix}\cos \theta +x_{x}&x_{y}+w_{z}&w_{y}+x_{z }}\\w_{z}+x_{y } }}&\cos \theta +y_{y } }}&y_{z}-w_{x}\\x_{z}-w_{y}-w_{w_{x}+y_{z}\cos \theta +z_{z}\end{bmatrix}}}}}}}}}
Expanded : [ cos θ + x 2 ( 1 − cos θ ) x y ( 1 − cos θ ) + z sin θ y sin θ + x z ( 1 − cos θ ) z sin θ + x y ( 1 − cos θ ) cos θ + y 2 ( 1 − cos θ ) y z ( 1 − cos θ ) − x sin θ x z ( 1 − cos θ ) − y sin θ x sin θ + y z ( 1 − cos θ ) cos θ + z 2 ( 1 − cos θ ) ] {\dis Playstyle{\begin{bmatrix}\cos, xy(1-\cos \theta)+z\sin \theta&\theta +xz(1-\cos \theta)\\z\sin \theta +xy(1-\cos \theta)& y\sin,\cos \theta +y^ᆲ(1-\cos \theta)&,\theta \\xz(1-\cos \theta)-y\sin \theta 및 yz(1-\cos \theta)-x\sin,x\sin \theta +yz(1-\cos \theta)&, \cos \theta +z^{2}(1-\cos \the +x^ᆱ(1-\cos \theta)& \theta.있을)\end{bmatrix}}}
벡터 회전 벡터 v = ( X , Y, Z ) {\ displaystyle v=(X , Y, Z ) {\displaystyle Q=(X,Y ,Z )} 을(를) 회전 벡터 Q = ( X ,Y ,Z )} 주위에 회전하십시오.
회전각은 θ = Q {\ displaystyle {\theta }={ Q }}} 이(가) 될 것이다.
벡터가 회전할 각도의 코사인 곱하기, 회전축의 각도의 사인 곱하기, 벡터의 도트 곱하기 각도의 마이너스 코사인 곱하기, 회전축의 도트 곱하기 각도의 각도의 코사인 곱하기 값을 계산한다.
V ′ = c o s ( θ ) ∗ v + s i n ( θ ) ∗ ( Q Q × v ) + ( 1 − c o s ( θ ) ) ( Q Q ⋅ v ) ∗ Q Q {\displaystyle V'=cos(\theta )*v+sin(\theta )**({\frac {Q}{{Q}\time v)+({\frac {Q}{{Q}}}}{\frac {Q}{{{{{frecdot v}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 일부 주의사항: 도트 제품은 회전하는 벡터와 회전축 사이의 각도의 코사인 V 길이를 곱한 값을 포함하며, 교차 제품은 회전하는 벡터와 회전축 사이의 각도의 사인을 포함한다.
회전 벡터 회전 Rodrigues 복합 회전 공식 사용
주어진 회전 벡터 Q = ( X , Y , Z ) {\displaystyle {Q}=(X, Y ,Z) 및 프레임을 회전시키는 다른 회전 벡터 A = (X , Y,Z ) {\displaystyle {A}=(X ,Y,Z) 의 경우.
초기 회전 벡터에서 각도 및 축을 추출하십시오.
θ = Q 2 {\displaystyle \theta ={\frac {Q}{2}}: γ = A 2 {\displaystyle \gamma ={\frac { A}{2}}: 현재 프레임에 대해 정규화된 회전 축:
Q n = Q Q {\displaystyle Q_{n}={\frac {Q}{Q}}}}} 프레임을 회전하기 위한 회전 축 정규화:
A n = A A {\displaystyle A_{n}={\frac {A}{A}}}} 회전 결과 각도는
α = 2 c o s − 1 ( c o s ( θ ) c o s ( γ ) + s i n ( θ ) s i n ( γ ) Q n ⋅ A n ) {\displaystyle \alpha =2cos^{-1}(cos(\theta )cos(\gamma )+sin(\theta )sin(\gamma )Q_{n}\cdot A_{n}}}}}}}}} 또는 α = 2 c o s − 1 ( cas ( θ − γ ) ( 1 − ( Q n ⋅ A n ) ) + cas ( θ + γ ) ( 1 + ( Q n ⋅ A n ) ) ) {\displaystyle \alpha =2cos^{-1}({\cos(\theta -\gamma )}(1-(Q_{n}\cdot A_{n})) +{\cos(\theta +\gamma )}(1+(Q_{n}\cdot A_{n})}} 결과, 비정상적인 회전 축:
r = s i n ( γ ) c o s ( θ ) A n + s i n ( θ ) c o s ( γ ) Q n + s i n ( θ ) s i n ( γ ) A n × Q n [\displaystyle r=sin(\displaystyle)]cos(\theta) A_{n}+신(\theta )cos(\gamma )Q_{n}+신(\theta )신(\gamma ) A_{n}\time Q_{n}}} 또는 r = ( A n × Q n ) ( cas ( θ − γ ) − cas ( θ + γ ) ) + A n ( 죄를 짓다 ( θ + γ ) + 죄를 짓다 ( θ − γ ) ) + Q n ( 죄를 짓다 ( θ + γ ) − 죄를 짓다 ( θ − γ ) ) {\displaystyle r=(A_{n}\time Q_{n})({\cos({\theta }-\gamma )}-{\cos({\theta }+\gamma )}}+++++++++) A_{n}({\sin(\theta +\gamma )}+{\sin(\theta -\gamma )}+ Q_{n}({\sin(\theta +\gamma )}-{\sin({\theta }-\gamma )}} Rodrigues Rotation Formula는 위 결과 각도의 죄를 벡터 정상화에 사용할 수 있지만, 큰 범위에 대해서는 실패하므로 결과 축을 다른 벡터처럼 정상화할 수 있다.
R n = r r {\displaystyle R_{n}={\frac {r}{ r }}} 그리고 최종 프레임 회전 좌표:
R = α R n {\displaystyle R=\alpha R_{n}} 고정 축을 중심으로 회전 회전 벡터 Q {\ displaystyle{Q} 는 세 개의 축을 나타낸다 . 이러한 축은 위의 '회전 벡터 회전'을 사용하여 회전을 회전하는 속기로 사용할 수 있다. 이러한 표현은 코드 조각으로 가장 잘 표현된다.
다른 표현식에 사용되는 상수를 설정하십시오.
constance nx = Q.x / Q.length, const ny = Q.y / Q.length, const angle = Q.z / Q.length, const s = Math.sin(각 ); const c1 = Math.cos(각 ); 위의 값을 사용하여...
// 이 회전 벡터는 cnx = c *nx xAxis = { x : cnx*nx + c1, y : cnx*ny + s*nz , z : cnx*nz - s*nny }을(를) 나타내는 프레임의 'x'를 계산한다. 또는
// 이 회전 벡터는 cnny = c * ny; yAxis = { x : (cny*nx) - s*nz , y : (cny*nny) + c1 , z : (cny*nz) + s*nx }을 나타내는 프레임의 'y'를 계산한다. 또는
// 이 회전 벡터는 const cnz = c * nz; zAxis = { x : (cnz*nx ) + s*ny, y : (cnz*nny ) - s*nx , z : (cnz*nz ) + c1 }을(를) 나타내는 프레임의 'z' 계산 기본 매트릭스에서 변환 행렬의 결정인자를 계산한다...
d e t = ( b a s i s r i g h t X + b a s i s u p Y + b a s i s f o r w a r d Z ) − 1 2 {\displaystyle det={\frac {(basis_{right_{X}}+basis_{up_{up_}}} Y}}+basis_{{Z}}-1}{2}}:} 회전 각도로 변환...
θ = a r c c o s ( d e t ) ∗ 2 ; \displaystyle \theta =arccos(detail)*2;} y z = b a s i s u p Z − b a s i s f o r w a r d Y ; {\displaystyle yz=basis_{up_{Z}-basis_{forward_{{{{}-basis_} Y};} x z = b a s i s f o r w a r d X − b a s i s r i g h t Z ; {\displaystyle xz=basis_{X}-basis_{right_{Z};} x y = b a s i s r i g h t Y − b a s i s u p X ; {\displaystyle xy=limit_{right_{{n1} Y}-basis_{up_{X};} 정규 요인을 계산한다...
n o r m a l = 1 / ( y z 2 + x z 2 + x y 2 ) ; {\displaystyle normal=1/{\sqrt {(}}yz^{2}+xz^{2}+xy^{2};; } n = [ y z ⋅ n o r m a l x z ⋅ n o r m a l x y ⋅ n o r m a l ] {\displaystyle n={\bmatrix}yz\cdot normal\xz\cdot normal\xy\cdot normal\end{bmatrix}}}} {\displaystyle } 결과 각도 각도 각도:
n ⋅ θ \displaystyle {n}\cdot \theta } 정상 벡터(Y)로부터의 변환 정규를 회전으로 나타내며, 이는 벡터(0 , 1 , 0 ) {\displaystyle(0,1,0)} 이 (가) 'up'인 것으로 가정한다. 일부 다른 차축이 1차 축으로 간주되면 좌표를 간단히 바꿀 수 있다.
이는 정규화된 입력 벡터를 정상 방향으로 가정한다.
N = [ n o r m a l X n o r m a l Y n o r m a l Z ] {\displaystyle N={\begin{bmatrix}normal_{X}\\normal_{normal_}{normal_}} Y}\\normal_{Z}\end{bmatrix}} 각도는 단순히 x/z 좌표(또는 Z가 'up'이면 y,x, X가 'up'이면 y,z)의 합이다...
a n g l e = N x + N z {\displaystyle angle=N_{x} + N_{z} } 각도가 0이면 작업이 완료되고 (0 , 0, 0 ) {\displaystyle(0,0,0)} 이( 가) 있는 결과
r = 1 / ( a n g l e ) {\displaystyle r=1/(각도)} 일부 임시 값. 이 값은 나중에 부분 참조될 뿐...
t = [ N x ⋅ r N y N z ⋅ r ] {\displaystyle t={\begin{bmatrix}N_{x}\cdot r\\\ N_{y}\\N_{z}\cdot r\end{bmatrix}}} Y 축에 투영된 정규 분포를 회전할 각도로 사용...
t a r g e t a n g l e = c o s − 1 ( t Y ) {\displaystyle target_{angle}=cos^{-1}(t_{}) Y}} r e s u l t = [ t Z ⋅ t a r g e t a n g l e 0 − t X ⋅ t a r g e t a n g l e ] {\displaystyle result={\begin{bmatrix}t_{Z}\cdot target_{angle}\0\-t_{X}\cdot target_{angle}\end{bmatrix}}}}}}} 기준을 사용하여 정규 분포 정렬 정상 집합만 있는 회전의 기본 접선 및 양접선은 불규칙한 접선 및 양접선을 초래한다. 또는 기본 매트릭스를 작성하고 위에서 언급한 방법을 사용하여 기본 매트릭스를 변환하십시오. 위의 정규 분포를 계산하고 변환할 행렬을 계산하십시오.
n o r m a l t w i s t = ( t Z 2 + t X 2 ) {\displaystyle normal_{twist}={{\sqrt{{{}}^{2}+t_{X}^{2}}}}}}}}}}}}}} [ ( N y ⋅ − t X n o r m a l t w i s t ) N x t Z n o r m a l t w i s t ( N z ⋅ t Z n o r m a l t w i s t ) − ( N x ⋅ − t X n o r m a l t w i s t ) N y 0 ( − ( N y ⋅ t Z n o r m a l t w i s t ) N z − t X n o r m a l t w i s t ] {\displaystyle {\begin{bmatrix}(N_{y}\cdot {\frac {-t_{X}}{normal_{twist}}}})& N_{x}&{\frac {t_{Z}}{normal_{twist}}\(N_{z})\cdot {\frac {t_{Z}{twist}}-(N_{x})\cdot {\frac{-t_{X}{t}}}}}}{st}}}}}&}}}}}}}}}&}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} N_{y}&0\\(-(N_{y}\cdot {\frac {t_{Z}}}}{정상_{twist}}}) &N_{z}&{\frac {-t_{X}}{정상_{twist}}\end{bmatrix}}} 그런 다음 기본을 사용하여 쿼터니온 변환을 로깅합니다...
정규 분포를 직접 정렬 또는 이것은 로그 쿼터로 결과를 산출하는 직접적인 연산이다. 위의 결과 벡터를 계산하고...
t X n = t X ⋅ n o r m a l t w i s t t Z n = t Z ⋅ n o r m a l t w i s t s = M a t h . s i n ( t a r g e t a n g l e ) c = 1 − M a t h . c o s ( t a r g e t a n g l e ) {\displaystyle {\begin{matrix}t_{X_{n}}=t_{X}\cdot normal_\t_{n}}=t_{Z}\cdot normal_{twist}\s=Math.sin(대상_{angle}) \\c=1-Math.cos(target_{angle})\end{matrix}} 이게 각도야.
a n g l e = a c o s ( ( t Y + 1 ) ∗ ( 1 − t X n ) / 2 − 1 ) ; {\displaystyle angle=acos((t_{Y}+1)*(1-t_{X_{n})/2-1);} 이 부분적인 제품들은 아래에서 사용되고 있다.
y z = s ⋅ n X x z = ( 2 − c ⋅ ( n X 2 + n Z 2 ) ) ⋅ t Z n x y = s ⋅ n X ∗ t Z n + s ⋅ n Z ⋅ ( 1 − t X n ) {\displaystyle {\begin{matrix}yz=s\cdot n_{X}\\xz=(2-c\cdot (n_{X}^{2}+n_{Z}^{2}))\cdot t_{Z_{n}}\\xy=s\cdot n_{X}*t_{Z_{n}}+s\cdot n_{Z}\cdot (1-t_{X_{n}})\end{matrix}}} 정규화된 회전 벡터(회전 축) 계산...
n = [ y z ( y z 2 + x z 2 + x y 2 ) x z ( y z 2 + x z 2 + x y 2 ) x y ( y z 2 + x z 2 + x y 2 ) ] {\displaystyle n={\begin{bmatrix}{\frac {yz}{{\sqrt {(}}yz^{2}+xz^{2}+xy^{2})}}\\{\frac {xz}{{\sqrt {(}}yz^{2}+xz^{2}+xy^{2})}}\\{\frac {xy}{{\sqrt {(}}yz^{2}+xz^{2}+xy^{2})}}\end{bmatrix}}} 마지막으로 로그 쿼터를 계산하십시오.
f i n a l r e s u l t = a n g l e ⋅ n {\displaystyle final_{final}={angle}\cdot{n}}} 축각으로부터의 변환 입력축 a = [ X Y Z ] {\displaystyle {a}=[{X}}{ Y}{Z}]} 이(가) 정규화됨 . 0회전이 있을 경우 (0 , 0 , 0 ) {\displaystyle(0,0,0) 으로 결과 표시
θ = a n g l e \displaystyle \theta =angle} r e s u l t = θ ∗ a {\displaystyle result=\theta *{a}}
참고 항목 참조
추가 읽기 Shuster, M.D. (1993). "A Survey of Attitude Representations" (PDF) . Journal of the Astronautical Sciences . 41 (4): 439–517. Bibcode :1993JAnSc..41..439S . Archived from the original (PDF) on 2019-09-25. Taubin, G. (2011). "3D Rotations" . IEEE Computer Graphics and Applications . 31 (6): 84–89. doi :10.1109/MCG.2011.92 . PMID 24808261 . Coutsias, E.; Romero, L. (2004). "The Quaternions with an application to Rigid Body Dynamics" . Sandia Technical Report . Sandia National Laboraties. SAND2004-0153. Markley, F. Landis (2003). "Attitude Error Representations for Kalman Filtering". Journal of Guidance, Control and Dynamics . 26 (2): 311–7. Bibcode :2003JGCD...26..311M . doi :10.2514/2.5048 . hdl :2060/20020060647 . Goldstein, H. (1980). Classical Mechanics (2nd ed.). Addison–Wesley. ISBN 0-201-02918-9 . Wertz, James R. (1980). Spacecraft Attitude Determination and Control . D. Reidel . ISBN 90-277-1204-2 . Schmidt, J.; Niemann, H. (2001). "Using Quaternions for Parametrizing 3-D Rotations in Unconstrained Nonlinear Optimization". Proceedings of the Vision Modeling and Visualization Conference 2001 . pp. 399–406. ISBN 3898380289 . Landau, L.; Lifshitz, E.M. (1976). Mechanics (3rd ed.). Pergamon Press . ISBN 0-08-021022-8 . Klumpp, A.R. (December 1976). "Singularity-Free Extraction of a Quaternion from a Direction-Cosine Matrix". Journal of Spacecraft and Rockets . 13 (12): 754–5. Bibcode :1976JSpRo..13..754K . doi :10.2514/3.27947 . Doran, C.; Lasenby, A. (2003). Geometric Algebra for Physicists . Cambridge University Press. ISBN 978-0-521-71595-9 . Terzakis, G.; Lourakis, M.; Ait-Boudaoud, D. (2018). "Modified Rodrigues Parameters: An Efficient Representation of Orientation in 3D Vision and Graphics" . Journal of Mathematical Imaging and Vision . 60 (3): 422–442. doi :10.1007/s10851-017-0765-x . Rowenhorst, D.; Rollett, A.D.; Rohrer, G.S.; Groeber, M.; Jackson, M.; Konijnenberg, P.J.; De Graef, M. (2015). "Consistent representations of and conversions between 3D rotations" . Modelling and Simulation in Materials Science and Engineering . 23 (8): 083501. Bibcode :2015MSMSE..23h3501R . doi :10.1088/0965-0393/23/8/083501 . 외부 링크