dist
설명
는 두 쿼터니언 distance
= dist(quatA,quatB
)quatA
와 quatB
간의 각거리(단위: 라디안)를 반환합니다.
예제
쿼터니언 거리 계산하기
한 쿼터니언과 쿼터니언 벡터의 각 요소 사이의 쿼터니언 거리를 계산합니다. 오일러 각을 사용하여 쿼터니언을 정의합니다.
q = quaternion([0,0,0],"eulerd","ZYX","frame")
q = quaternion
1 + 0i + 0j + 0k
qArray = quaternion([0,45,0;0,90,0;0,180,0;0,-90,0;0,-45,0],"eulerd","ZYX","frame")
qArray = 5x1 quaternion array
0.92388 + 0i + 0.38268j + 0k
0.70711 + 0i + 0.70711j + 0k
6.1232e-17 + 0i + 1j + 0k
0.70711 + 0i - 0.70711j + 0k
0.92388 + 0i - 0.38268j + 0k
quaternionDistance = rad2deg(dist(q,qArray))
quaternionDistance = 5×1
45.0000
90.0000
180.0000
90.0000
45.0000
dist
에 대한 두 인수가 모두 벡터이면, 쿼터니언 거리는 서로 대응하는 요소들 사이의 거리로 계산됩니다. 두 쿼터니언 벡터 사이의 쿼터니언 거리를 계산합니다.
angles1 = [30,0,15; ... 30,5,15; ... 30,10,15; ... 30,15,15]; angles2 = [30,6,15; ... 31,11,15; ... 30,16,14; ... 30.5,21,15.5]; qVector1 = quaternion(angles1,"eulerd","ZYX","frame"); qVector2 = quaternion(angles2,"eulerd","ZYX","frame"); rad2deg(dist(qVector1,qVector2))
ans = 4×1
6.0000
6.0827
6.0827
6.0287
참고로 쿼터니언과 그 쿼터니언의 음수는 둘 다 동일한 회전을 표현합니다. 쿼터니언과 그 쿼터니언의 음수를 계산합니다.
qPositive = quaternion([30,45,-60],"eulerd","ZYX","frame")
qPositive = quaternion
0.72332 - 0.53198i + 0.20056j + 0.3919k
qNegative = -qPositive
qNegative = quaternion
-0.72332 + 0.53198i - 0.20056j - 0.3919k
쿼터니언과 그 음수 쿼터니언 간의 거리를 구합니다.
dist(qPositive,qNegative)
ans = 0
쿼터니언의 성분과 그 음수 쿼터니언의 성분이 서로 달라 보이지만, 이 두 표현은 동일한 회전을 나타냅니다.
입력 인수
quatA,quatB
— 서로의 거리를 계산할 두 쿼터니언
quaternion
객체 | quaternion
객체로 구성된 배열
서로의 거리를 계산할 두 쿼터니언으로, quaternion
객체 또는 임의 차원의 quaternion
객체로 구성된 배열이 쉼표로 구분되어 지정됩니다. quatA
와 quatB
의 크기는 서로 호환되어야 합니다.
size(quatA) == size(quatB)
또는numel(quatA) == 1
또는numel(quatB) == 1
또는[Adim1,…,AdimN] = size(quatA)
이고[Bdim1,…,BdimN] = size(quatB)
인 경우i = 1:N
에 대해Adimi==Bdimi
또는Adim==1
또는Bdim==1
입니다.쿼터니언 인수 중 하나가 쿼터니언을 하나만 포함하는 경우, 이 함수는 그 쿼터니언과 다른 인수의 각 쿼터니언 사이의 거리를 반환합니다.
출력 인수
distance
— 각거리(단위: 라디안)
숫자형 스칼라 | 숫자형 배열
각거리(단위: 라디안)로, 숫자형 스칼라 또는 숫자형 배열로 지정됩니다. 차원은 size(quatA)
와 size(quatB)
의 합집합 중 최댓값입니다.
데이터형: single
| double
알고리즘
dist
함수는 두 쿼터니언 간의 각거리를 반환합니다.
쿼터니언은 다음과 같이 축 (ub,uc,ud)와 회전 각도 θq로 정의될 수 있습니다. .
쿼터니언이 형식으로 주어졌을 때(a가 실수부임), q의 각도를 로 구할 수 있습니다.
두 쿼터니언 p와 q 그리고 곱 가 있습니다. p가 q에 가까워지면 z의 각도는 0이 되고 z는 단위 쿼터니언에 가까워집니다.
두 쿼터니언 사이의 각거리는 로 표현할 수 있습니다.
quaternion
데이터형 구문을 사용하면 각거리가 다음과 같이 계산됩니다.
angularDistance = 2*acos(abs(parts(p*conj(q))));
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
버전 내역
R2019b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)