Main Content

mtimes, *

쿼터니언 곱셈

설명

예제

quatC = A*BA 또는 B 중 하나가 쿼터니언인 경우 쿼터니언 곱셈을 구현합니다. A 또는 B 중 하나는 스칼라여야 합니다.

쿼터니언 곱셈을 사용하여 회전 연산자를 작성할 수 있습니다.

  • 프레임 회전의 시퀀스를 작성하려면, 원하는 회전 시퀀스의 순서대로 쿼터니언을 곱합니다. 예를 들어 p 쿼터니언을 적용한 후 q 쿼터니언을 적용하려면 순서대로 곱합니다(즉, pq). 회전 연산자는 (pq)v(pq)가 됩니다. 여기서 v는 쿼터니언 형식으로 지정된 회전할 객체를 나타내고 *는 켤레를 나타냅니다.

  • 점 회전의 시퀀스를 작성하려면 원하는 회전 시퀀스의 역순으로 쿼터니언을 곱합니다. 예를 들어 p 쿼터니언을 적용한 후 q 쿼터니언을 적용하려면 역순으로 곱합니다(즉, qp). 회전 연산자는 (qp)v(qp)가 됩니다.

예제

모두 축소

4×1 열 벡터 A와 스칼라 b를 만듭니다. Ab를 곱합니다.

A = quaternion(randn(4,4))
A = 4x1 quaternion array
      0.53767 +  0.31877i +   3.5784j +   0.7254k
       1.8339 -   1.3077i +   2.7694j - 0.063055k
      -2.2588 -  0.43359i -   1.3499j +  0.71474k
      0.86217 +  0.34262i +   3.0349j -  0.20497k

b = quaternion(randn(1,4))
b = quaternion
    -0.12414 +  1.4897i +   1.409j +  1.4172k

C = A*b
C = 4x1 quaternion array
      -6.6117 +   4.8105i +  0.94224j -   4.2097k
      -2.0925 +   6.9079i +   3.9995j -   3.3614k
       1.8155 -   6.2313i -    1.336j -     1.89k
      -4.6033 +   5.8317i + 0.047161j -    2.791k

입력 인수

모두 축소

곱할 입력값으로, quaternion 객체, 임의 차원의 quaternion 객체 배열, 실수형 스칼라 또는 임의 차원의 실수 배열로 지정됩니다. 숫자형 값은 데이터형이 single형 또는 double형이어야 합니다.

B가 비 스칼라이면 A는 스칼라여야 합니다.

곱할 입력값으로, quaternion 객체, 임의 차원의 quaternion 객체 배열, 실수형 스칼라 또는 임의 차원의 실수 배열로 지정됩니다. 숫자형 값은 데이터형이 single형 또는 double형이어야 합니다.

A가 비 스칼라이면 B는 스칼라여야 합니다.

출력 인수

모두 축소

쿼터니언 곱으로, quaternion 객체 또는 quaternion 객체 배열로 반환됩니다.

알고리즘

모두 축소

쿼터니언과 실수형 스칼라의 곱셈

쿼터니언이 다음과 같이 주어진 경우

q=aq+bqi+cqj+dqk,

q와 실수형 스칼라 β의 곱은 다음과 같습니다.

βq=βaq+βbqi+βcqj+βdqk

쿼터니언과 쿼터니언 스칼라의 곱셈

쿼터니언에 대한 기저 요소의 정의가 다음과 같은 경우

i2=j2=k2=ijk=-1,

이를 확장하여 쿼터니언 기저 요소 곱셈을 요약하는 테이블을 채울 수 있습니다.

 1ijk
11ijk
ii-1k−j
jj−k-1i
kkj−i-1

이 테이블을 읽을 때는 행을 먼저 읽습니다(예: ij = k 및 ji = −k).

두 쿼터니언 q=aq+bqi+cqj+dqk,p=ap+bpi+cpj+dpk가 주어질 경우 곱셈을 다음과 같이 전개할 수 있습니다.

z=pq=(ap+bpi+cpj+dpk)(aq+bqi+cqj+dqk)=apaq+apbqi+apcqj+apdqk+bpaqi+bpbqi2+bpcqij+bpdqik+cpaqj+cpbqji+cpcqj2+cpdqjk+dpaqk+dpbqki+dpcqkj+dpdqk2

쿼터니언 곱셈 테이블을 사용하여 방정식을 다음과 같이 단순화할 수 있습니다.

z=pq=apaq+apbqi+apcqj+apdqk+bpaqibpbq+bpcqkbpdqj+cpaqjcpbqkcpcq+cpdqi+dpaqk+dpbqjdpcqidpdq

참고 문헌

[1] Kuipers, Jack B. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace, and Virtual Reality. Princeton, NJ: Princeton University Press, 2007.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2018a에 개발됨

참고 항목

함수

객체