SlideShare a Scribd company logo
1 of 30
Download to read offline
게임 수학 강의 노트 05 - 사원수(Quaternion)
강영민
동명대학교
2015년 2학기
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 1 / 30
사원수
사원수(quaternion)는 스칼라(scalar) 값과 3차원 벡터를 묶어 구성한
복소수(complex number)
3차원 벡터 v = (a, b, c)를 각각의 축 방향 단위 벡터인 기저 i, j, k로
표현하면 ai + bj + ck
사원수는 여기에 스칼라 값 d가 추가된 d + ai + bj + ck
기저를 제외하고 표현하면 (d, (a, b, c))와 같이 표현
벡터 기호로 표현하면 (d, v)
스칼라 값은 기저가 실수의 단위 값인 1이라고 이해하면 사원수는
1, i, j, k를 기저로 하는 벡터
로보틱스와 컴퓨터 그래픽스 분야에서 회전을 다루는 데에 빈번히
이용
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 2 / 30
사원수의 연산 - 덧셈과 뺄셈
사원수 덧셈: 성분별로 더하면 된다.
두 개의 사원수 ˆp와 ˆq가 각각 (sp, vp)와 (sq, vq)일 때, 덧셈은
ˆp + ˆq = (sp + sq, vp + vq)
ˆp = (ap, bp, cp, dp)와 ˆq = (aq, bq, cq, dq)
ˆp + ˆq = (ap + aq, bp + bq, cp + cq, dp + dq)
뺄셈
ˆp − ˆq = (ap − aq, bp − bq, cp − cq, dp − dq)
스칼라와 벡터로 나누어 표현하면 다음과 같다.
ˆp = (sp, vp), ˆq = (sq, vq)
ˆp + ˆq = (sp − sq, vp − vq)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 3 / 30
사원수의 연산 - 스칼라 곱셈
사원수와 어떤 스칼라 λ를 곱하는 것은 모든 성분에 이 스칼라 값을
곱하는 것이다.
λˆp = (λsp, λvp) = (λap, λbp, λcp, λdp)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 4 / 30
사원수의 연산 - 사원수 곱셈 1/4
두 사원수 ˆp와 ˆq를 곱하려면 어떻게 해야 할까?
사원수는 서로 다른 허수 i, j, k를 가진 벡터와 스칼라의 합인 복소수
허수들 사이의 곱
i2
= j2
= k2
= −1
ij = k, jk = i, ki = j
ji = −k, kj = −i, ik = −j
ˆpˆq는 다음과 같이 표현 가능
ˆp = dp + api + bpj + cpk
ˆq = dq + aqi + bqj + cqk
ˆpˆq = dpdq + dp + dpaqi + dpbqj + dpcqk +
apidq + apiaqi + apibqj + apicqk +
bpjdq + bpjaqi + bpjbqj + bpjcqk +
cpkdq + cpkaqi + cpkbqj + cpkcqk
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 5 / 30
사원수의 연산 - 사원수 곱셈 2/4
정리하면 다음과 같다.
ˆpˆq = dpdq + dpaqi + dpbqj + dpcqk + (1)
apdqi + apaqi2 + apbqij + apcqik +
bpdqj + bpaqji + bpbqj2 + bpcqjk +
cpdqk + cpaqki + cpbqkj + cpcqk2
허수의 곱이 나타나는 부분을 정리하면,
ˆpˆq = dpdq + dpaqi + dpbqj + dpcqk + (2)
apdqi − apaq + apbqk − apcqj +
bpdqj − bpaqk − bpbq + bpcqi +
cpdqk + cpaqj − cpbqi − cpcq
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 6 / 30
사원수의 연산 - 사원수 곱셈 3/4
허수별로 정리하면 다음과 같다.
ˆpˆq = dpdq − apaq − bpbq − cpcq
+dpaqi + apdqi + (bpcq − cpbq)i
+dpbqj + bpdqj + (cpaq − apcq)j
+dpcqk + cpdqk + (apbq − bpaq)k
계산의 의미는 다음과 같다.
ˆpˆq = dpdq − (apaq + bpbq + cpcq)
+dp(aqi + bqj + cqk)
+dq(api + bpj + cpk)
+(bpcq − cpbq)i + (cpaq − apcq)j + (apbq − bpaq)k
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 7 / 30
사원수의 연산 - 사원수 곱셈 4/4
벡터의 내적과 외적을 이용하여 설명하면,
ˆpˆq = dpdq − (vp · vq)
+dpvq + dqvp + vp × vq
사원수를 스칼라 값과 벡터 표현인 (d, v)로 표현하면,
ˆpˆq = (dp, vp)(dq, vq)
= (dpdq − vp · vq, dpvq + dqvp + vp × vq)
스칼라: 두 사원수가 가진 스칼라 값의 곱에서 두 사원수가 가진 벡터
내적을 뺀 것
벡터: 각 사원수가 가진 스칼라 값을 상대편의 벡터 부분에 곱한 결과 두
개를 더하고, 두 사원수가 가진 벡터를 서로 외적하여 얻는 벡터를 추가로
더하여 얻음
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 8 / 30
사원수의 연산 규칙
ˆp + ˆq = ˆq + ˆp
(ˆp + ˆq) + ˆr = ˆp + (ˆq + ˆr)
λˆp = ˆpλ
−λˆp = λ(−ˆp)
ˆpˆq ̸= ˆqˆp
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 9 / 30
켤레 사원수 1/2
켤레 사원수(공액 사원수, conjugate)
어떤 사원수 ˆp = (dp, vp)의 켤레 사원수를 ˆp∗
라고 표현
이 켤레 이 사원수는 (dp, −vp)의 값을 가짐
ˆp = (dp, vp) ⇒ ˆp∗
= (dp, −vp)
사원수의 크기는 벡터의 크기와 같은 방식으로 구한다.
|ˆq| = dqdq + aqaq + bqbq + cqcq
= d2
q + a2
q + b2
q + c2
q
= d2
q + vTv
= d2
q + v · v
= ˆqˆq∗
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 10 / 30
켤레 사원수 2/2
사원수의 항등원은 ˆi는 (1, 0, 0, 0)
사원수 ˆq의 역원 ˆq−1 은 ˆq∗/|ˆq|
ˆqˆi = ˆiˆq = ˆq
ˆqˆq−1
= ˆq−1
ˆq = ˆqˆq∗
/|q| = ˆi
켤레 사원수의 크기는 서로 동일하다.
|ˆq| = |ˆq∗
|
다음과 같은 연산 규칙도 중요
(ˆq + ˆr)∗
= ˆq∗
+ ˆr∗
(ˆqˆr)∗
= ˆr∗
ˆq∗
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 11 / 30
사원수 연산 법칙 정리
ˆp + ˆq = ˆq + ˆp
(ˆp + ˆq) + ˆr = ˆp + (ˆq + ˆr)
λˆp = ˆpλ
−λˆp = λ(−ˆp)
ˆpˆq ̸= ˆqˆp
ˆp = (dp, vp) =⇒ ˆp∗
= (dp, −vp)
|ˆq| = ˆqˆq∗
ˆqˆi = ˆq =⇒ ˆi = (1, 0, 0, 0)
ˆqˆp = ˆi =⇒ ˆp = ˆq−1
= ˆq∗
/|ˆq|
ˆqˆq−1
= ˆq−1
ˆq = ˆqˆq∗
/|q| = ˆi
|ˆq| = |ˆq∗
|
(ˆq + ˆr)∗
= ˆq∗
+ ˆr∗
(ˆqˆr)∗
= ˆr∗
ˆq∗
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 12 / 30
사원수와 회전: 곱셈
행렬로 표현했던 회전은 사원수를 이용하여 표현 가능
어떤 좌표 p(x, y, z)는 사원수 표현으로는 ˆp = (0, (x, y, z)) = (0, p)
이 좌표에 다음과 같은 사원수 ˆq를 곱하면 어떻게 되는지 보자.
ˆp = (0, p)
ˆq = (cos θ, sin θu), |u| = 1, |ˆq| = 1
벡터 u는 단위벡터 (u가 어떤 방향이나 축을 표현)
ˆp′
= (dp′ , p′
) = ˆqˆp = (− sin θu · p, cos θp + sin θu × p)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 13 / 30
사원수와 회전: 사원수의 벡터가 수직인 경우 1/2
p와 u가 서로 직교하는 경우
p
u
u × p
θ
|p|
|p| cos θ
|p| sin θ
|p| cos θ p
|p|
|p| sin θu×p
|p|
|p| cos θ p
|p| + |p| sin θu×p
|p|
= cos θp + sin θu × p
p′
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 14 / 30
사원수와 회전: 사원수의 벡터가 수직인 경우 2/2
어떤 단위 벡터 u와 임의의 벡터 p는 서로 직교하다고 가정
두 벡터를 외적한 u × p는 p를 u 축을 중심으로 90도 회전한 것
u, p, u × p는 직교 좌표계의 세 축 위
다음과 같은 세 벡터가 직교 좌표축
u, p
|p| , u×p
|p|
p를 u를 중심축으로 θ만큼 회전시킨 점 p′
이 점은 p
|p| 축 방향으로의 길이 α와 u×p
|p| 축 방향으로의 길이 β 를
안다면 α p
|p| + β u×p
|p| 로 표현 가능
α = |p| cos θ
β = |p| sin θ
회전된 좌표 p′ 는 cos θp + sin θu × p
두 사원수의 곱으로 얻은 사원수의 벡터 부분과 동일
스칼라 부분은 u ⊥ p의 경우라면 0
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 15 / 30
사원수와 회전: 일반적 경우 1/7
p와 u가 서로 직교하지 않는 일반적 경우
스칼라 부분 − sin θu · p이 0이 아님
스칼라 값이 0이 될 수 있도록 사원수 곱하기를 두 번 수행
하나의 사원수 ˆq를 곱하는 것이 아니라 그 역원 ˆq−1 도 같이 곱함
ˆp′
= ˆqˆpˆp∗
= (cos θ, sin θu)(0, p)(cos θ, − sin θu)
ˆqˆpˆp∗
= (− sin θu · p, cos θp + sin θu × p)(cos θ, − sin θu)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 16 / 30
사원수와 회전: 일반적 경우 2/7
사원수 곱셈 연산법에 따라 계산하면 다음을 얻는다.
ˆqˆpˆq∗
= (s, v)
s = − sin θ cos θu · p + sin θ cos θu · p + sin2
θ(u × p) · u
v = cos2
θp
+ sin θ cos θu × p
+(sin2
θu · p)u
− sin θ cos θp × u
− sin2
θu × p × u
u × p와 u는 서로 수직이므로, 이 둘의 내적 (u × p) · u이 0이다. 따라서 스칼라
부분인 s가 0.
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 17 / 30
사원수와 회전: 일반적 경우 3/7
u
p
u × p
(u × p) × u
(p · u)u
−(p · u)u
u × p × u는 p − (u · p)u
u × p × u는 u와 u × p에 동시에 수직인 직교축
길이는 p와 u의 내적을 통해 알 수 있고, 이를 u 축의 음의 방향으로
떨어트리면 됨
u × p × u = p − (p · u)u
ˆqˆpˆq∗
= (0, (cos2
θ − sin2
θ)p + 2 sin θ cos θu × p + (2 sin2
θu · p)u)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 18 / 30
사원수와 회전: 일반적 경우 4/7
cos 2θ = cos2
θ − sin2
θ
sin 2θ = 2 sin θ cos θ
이 항등식을 적용하면 다음을 얻을 수 있다.
ˆqˆpˆq∗
= (0, (cos 2θp + sin 2θ(u × p) + (2 sin2
θu · p)u)
1 = cos2 θ + sin2
θ이므로 sin2
θ = 1 − cos2 θ
2 sin2
θ는 sin2
θ + sin2
θ = sin2
θ + 1 − cos2 θ
1 − (cos2 θ − sin2
θ)이므로 다음 성립
2 sin2
θ = 1 − cos 2θ
ˆqˆpˆq∗
= (0, (cos 2θp + sin 2θ(u × p) + ((1 − cos 2θ)u · p)u)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 19 / 30
사원수와 회전: 일반적 경우 5/7
p
u
rotation plane
u × p
θ
sin θu × p
cos θp
u · p
cos θu · p (1 − cos θ)u · p
sin θ(u × p) + cos θp
((1 − cos θ)u · p)u
sin θ(u × p) + cos θp + ((1 − cos θ)u · p)u
p′
: rotated point
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 20 / 30
사원수와 회전: 일반적 경우 6/7
점 p가 축 u를 기준으로 회전
회전 과정에 지나는 곡선이 놓인 회색 평면 = 회전 평면
p와 u × p가 만드는 평면의 원점을 기준을 θ 만큼 회전하여 얻는 점
이 점은 p 축으로의 길이는 |p| cos θ
이 점의 u × p축 방향으로의 길이는 |p| sin θ
sin θ(u × p) + cos θp
이 점을 회전 평면 위로 옮기면 원하는 좌표
회전 평면으로 옮기는 데에 필요한 길이는 (1 − cos θ)u · p
이 길이만큼 u 축으로 옮겨 놓는 벡터는 ((1 − cos θ)u · p)u
회전의 결과 좌표는
p′
= sin θ(u × p) + cos θp + ((1 − cos θ)u · p)u
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 21 / 30
사원수와 회전: 일반적 경우 7/7
p′
= sin θ(u × p) + cos θp + ((1 − cos θ)u · p)u
어떤 점 p를 u 축을 중심으로 θ 만큼 회전하여 p′
를 얻고 싶을 때
ˆp = (0, p)
ˆq = (cos θ
2, sin θ
2u)
ˆp′ = (0, p′) = ˆqˆpˆq∗
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 22 / 30
사원수의 보간
사원수가 회전을 의미한다면, 그래픽스에서 두 사원수를 보간하는
일은 빈번
보간: t = 0에서 ˆq0 이고, t = 1에서 ˆq1 인 사원수 ˆqt 구하기
사원수는 행렬에 비해 보간이 쉽다는 장점
ˆq0 = (s0, u0, v0, w0)
ˆq1 = (s1, u1, v1, w1)
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 23 / 30
사원수의 보간: 단순한 선형보간
간단한 선형보간
ˆqt = (ts1 + (1 − t)s0, tu1 + (1 − t)u0, tv1 + (1 − t)v0, tw1 + (1 − t)w0)
즉, ˆqt = tˆq1 + (1 − t)ˆq0
매우 간단하고 빠르다는 장점
보간이 적용되는 동안 사원수의 길이가 길이가 변하는 단점
o
ˆq0
ˆq1
ˆqt
4D Hypersphere ˆqt
|ˆqt|
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 24 / 30
사원수의 보간: 간단한 개선 방법
사원수가 항상 초구면의 표면에 있도록 그 길이를 조정
ˆqt/|ˆqt|로 정규화
길이는 유지되지만 회전속도는 일정하지 않음
극단적인 상황: ˆq0 와 ˆq1 이 서로 반대 방향
선형 보간하여 얻는 사원수는 t = 0.5가 될 때까지는 초기의 회전각
t = 0.5 시점을 지나면 바로 다음 회전각으로 전환
사원수의 단순한 선형보간으로 얻어지는 각도의 변화와 각속도의 변화
θ ˙θ
t t
θ = cos−1
( ˆqt
|ˆqt| · ˆq0)
t = 0.5
(a) 각도의 변화 (b) 각속도의 변화
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 25 / 30
사원수의 보간: 구면보간(球面補間) 혹은 Slerp
사원수의 보간은 각도 θ가 선형으로 보간되어야 함
구면 보간을 통해 얻어야 하는 사원수 보간의 각도의 변화와 각속도의
변화
θ ˙θ
t t
θ = θdt
˙θ(t) = c
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 26 / 30
구면보간(球面補間): 등각속도 구면보간의 개념
구면보간
시작과 끝 회전을 표현하는 사원수 ˆq0 와 ˆq1 에 적절한 가중치 a(t)와
b(t) 적용
가중치가 적용된 두 사원수를 합성
현재 시간 t에 제한조건을 만족하는 a(t)와 b(t)를 찾는 작업
o
ˆq0
ˆq1
4D Hypersphere
a(t)
b(t)
ˆqt = a(t)ˆq0 + b(t)ˆq1
θt
θd
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 27 / 30
구면보간(球面補間): a(t) 구하기
ˆq0 에서 ˆq1 까지의 회전각 전체가 θd
시간 t에서 보간된 사원수 ˆqt 와 ˆq0 가 이루는 각이 θt
θd 에서 θt 를 뺀 각도를 θ1−t
a(t)와 |ˆq0|의 비(比)는 결국 |ˆqt| sin θ1−t 와 |ˆq0| sin θd 의 비
a(t) = sin θ1−t
sin θd
ˆq0
a(t)
sin θd sin θ1−t
θd
θ1−t
θt
ˆqt
ˆq1
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 28 / 30
구면보간(球面補間): b(t) 구하기
b(t)와 |ˆq1 의 비는 |ˆqt| sin θt 의 값과 |ˆq1| sin θd 가 이루는 비
b(t) = sin θt
sin θd
ˆq0
b(t)
sin θd
sin θt
θd
θ1−t
θt
ˆqt
ˆq1
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 29 / 30
구면보간(球面補間) 계산법
a(t)와 b(t)를 구하고 나면, 보간된 사원수 ˆqt
ˆqt = a(t)ˆq0 + b(t)ˆq1
사원수가 동일한 각속도로 부드럽게 보간된다. 이러한 보간 방법은
구면보간
“slerp”이라는 이름으로 종종 부름
이때 사원수의 크기는 언제나 1
θd = cos−1
(ˆq0 · ˆq1)
s = sin θd = 1 − (ˆq0 · ˆq1)2
ˆqt =
sin θ1−t
s
ˆq0 +
sin θt
s
ˆq1
강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 30 / 30

More Related Content

What's hot

CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
Takahito Tejima
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
Silicon Studio Corporation
 

What's hot (20)

5分でわかる Unity点群
5分でわかる Unity点群5分でわかる Unity点群
5分でわかる Unity点群
 
[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장
 
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
 
未出現事象の出現確率
未出現事象の出現確率未出現事象の出現確率
未出現事象の出現確率
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
 
PRML 4.1 Discriminant Function
PRML 4.1 Discriminant FunctionPRML 4.1 Discriminant Function
PRML 4.1 Discriminant Function
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
Two dimensionaltransformations
Two dimensionaltransformationsTwo dimensionaltransformations
Two dimensionaltransformations
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
 
PRML 2.3.2-2.3.4 ガウス分布
PRML 2.3.2-2.3.4 ガウス分布PRML 2.3.2-2.3.4 ガウス分布
PRML 2.3.2-2.3.4 ガウス分布
 
インフラエンジニアがUnityをやるべきたった一つの理由
インフラエンジニアがUnityをやるべきたった一つの理由インフラエンジニアがUnityをやるべきたった一つの理由
インフラエンジニアがUnityをやるべきたった一つの理由
 
PRML輪読#2
PRML輪読#2PRML輪読#2
PRML輪読#2
 
計算スケジューリングの効果~もし,Halideがなかったら?~
計算スケジューリングの効果~もし,Halideがなかったら?~計算スケジューリングの効果~もし,Halideがなかったら?~
計算スケジューリングの効果~もし,Halideがなかったら?~
 
PRML輪読#4
PRML輪読#4PRML輪読#4
PRML輪読#4
 
Motion blur
Motion blurMotion blur
Motion blur
 
GLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめGLSLによるシェーダーアートことはじめ
GLSLによるシェーダーアートことはじめ
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 

Viewers also liked

GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수
Mark Choi
 
фотоконкурс пошук
фотоконкурс пошукфотоконкурс пошук
фотоконкурс пошук
ksuha12
 
Beekeeper u creating a content calendar final(1)
Beekeeper u creating a content calendar final(1)Beekeeper u creating a content calendar final(1)
Beekeeper u creating a content calendar final(1)
Alex Cummings
 
історичний клуб пошук
історичний клуб пошукісторичний клуб пошук
історичний клуб пошук
ksuha12
 
Tutorial mail merge office 2007
Tutorial mail merge office 2007Tutorial mail merge office 2007
Tutorial mail merge office 2007
Billy Buhaiba
 
Avoid six mistakes-maria arrua
Avoid six mistakes-maria arruaAvoid six mistakes-maria arrua
Avoid six mistakes-maria arrua
Maria A. Arrua
 
Mortgage rates beginner's_guide-maria arrua
Mortgage rates beginner's_guide-maria arruaMortgage rates beginner's_guide-maria arrua
Mortgage rates beginner's_guide-maria arrua
Maria A. Arrua
 
статут пошук
статут пошукстатут пошук
статут пошук
ksuha12
 
Mortgage industry explained-maria arrua
Mortgage industry explained-maria arruaMortgage industry explained-maria arrua
Mortgage industry explained-maria arrua
Maria A. Arrua
 

Viewers also liked (19)

Fast CCL(connected component labeling) with GPU
Fast CCL(connected component labeling) with GPUFast CCL(connected component labeling) with GPU
Fast CCL(connected component labeling) with GPU
 
GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수GameMath-Chapter 04 사원수
GameMath-Chapter 04 사원수
 
인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개
 
쿼터니언
쿼터니언쿼터니언
쿼터니언
 
фотоконкурс пошук
фотоконкурс пошукфотоконкурс пошук
фотоконкурс пошук
 
Beekeeper u creating a content calendar final(1)
Beekeeper u creating a content calendar final(1)Beekeeper u creating a content calendar final(1)
Beekeeper u creating a content calendar final(1)
 
Aardappelplantbak final
Aardappelplantbak finalAardappelplantbak final
Aardappelplantbak final
 
історичний клуб пошук
історичний клуб пошукісторичний клуб пошук
історичний клуб пошук
 
Seriousgamejam ppt140822koukai
Seriousgamejam ppt140822koukaiSeriousgamejam ppt140822koukai
Seriousgamejam ppt140822koukai
 
数学的思考力ゲーム制作を通した低学年生の開発力向上の事例
数学的思考力ゲーム制作を通した低学年生の開発力向上の事例数学的思考力ゲーム制作を通した低学年生の開発力向上の事例
数学的思考力ゲーム制作を通した低学年生の開発力向上の事例
 
Tutorial mail merge office 2007
Tutorial mail merge office 2007Tutorial mail merge office 2007
Tutorial mail merge office 2007
 
Avoid six mistakes-maria arrua
Avoid six mistakes-maria arruaAvoid six mistakes-maria arrua
Avoid six mistakes-maria arrua
 
Hodgkins Lymphoma
Hodgkins Lymphoma Hodgkins Lymphoma
Hodgkins Lymphoma
 
Mortgage rates beginner's_guide-maria arrua
Mortgage rates beginner's_guide-maria arruaMortgage rates beginner's_guide-maria arrua
Mortgage rates beginner's_guide-maria arrua
 
Powerofgame140902koukai
Powerofgame140902koukaiPowerofgame140902koukai
Powerofgame140902koukai
 
статут пошук
статут пошукстатут пошук
статут пошук
 
Mortgage industry explained-maria arrua
Mortgage industry explained-maria arruaMortgage industry explained-maria arrua
Mortgage industry explained-maria arrua
 
Vanish unwantedthoughts
Vanish unwantedthoughtsVanish unwantedthoughts
Vanish unwantedthoughts
 
Intro to Ravelry
Intro to RavelryIntro to Ravelry
Intro to Ravelry
 

Similar to Quaternion and Rotation

기본 회전 공식
기본 회전 공식 기본 회전 공식
기본 회전 공식
cancan21st
 

Similar to Quaternion and Rotation (20)

정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
정수론적 알고리즘 - Sogang ICPC Team, 2020 Winter
 
기본 회전 공식
기본 회전 공식 기본 회전 공식
기본 회전 공식
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
 
Wasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 IWasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 I
 
Random walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equationRandom walk, brownian motion, black scholes equation
Random walk, brownian motion, black scholes equation
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부
 
2019 ppc answers
2019 ppc answers2019 ppc answers
2019 ppc answers
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
 
Gmm to vgmm
Gmm to vgmmGmm to vgmm
Gmm to vgmm
 
0207 1 gradient
0207 1 gradient0207 1 gradient
0207 1 gradient
 
Spherical Harmonics.pdf
Spherical Harmonics.pdfSpherical Harmonics.pdf
Spherical Harmonics.pdf
 
점, 선, 면
점, 선, 면점, 선, 면
점, 선, 면
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNN
 
Python Machine Learning - ML02 Linear Regression(선형회귀)
Python Machine Learning - ML02 Linear Regression(선형회귀)Python Machine Learning - ML02 Linear Regression(선형회귀)
Python Machine Learning - ML02 Linear Regression(선형회귀)
 
Taocp1 2 4
Taocp1 2 4Taocp1 2 4
Taocp1 2 4
 
확통 회귀분석
확통 회귀분석확통 회귀분석
확통 회귀분석
 
2012-12-25 사조사2급실기-공식
2012-12-25 사조사2급실기-공식2012-12-25 사조사2급실기-공식
2012-12-25 사조사2급실기-공식
 
선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)
 
Mathematics
MathematicsMathematics
Mathematics
 
0124 1 linear_algebra_basic_vector
0124 1 linear_algebra_basic_vector0124 1 linear_algebra_basic_vector
0124 1 linear_algebra_basic_vector
 

More from Young-Min kang (9)

[update] Introductory Parts of the Book "Dive into Deep Learning"
[update] Introductory Parts of the Book "Dive into Deep Learning"[update] Introductory Parts of the Book "Dive into Deep Learning"
[update] Introductory Parts of the Book "Dive into Deep Learning"
 
물리기반 모델링 기초 - 강의노트
물리기반 모델링 기초 - 강의노트물리기반 모델링 기초 - 강의노트
물리기반 모델링 기초 - 강의노트
 
Lec gp05 rigidbody2d
Lec gp05 rigidbody2dLec gp05 rigidbody2d
Lec gp05 rigidbody2d
 
Physics for Game: Part1 - Basics
Physics for Game: Part1 - BasicsPhysics for Game: Part1 - Basics
Physics for Game: Part1 - Basics
 
Algorithms summary (English version)
Algorithms summary (English version)Algorithms summary (English version)
Algorithms summary (English version)
 
Algorithms summary korean
Algorithms summary koreanAlgorithms summary korean
Algorithms summary korean
 
Game Physics Test
Game Physics TestGame Physics Test
Game Physics Test
 
Game salad 07
Game salad 07Game salad 07
Game salad 07
 
Game Salad Study
Game Salad StudyGame Salad Study
Game Salad Study
 

Quaternion and Rotation

  • 1. 게임 수학 강의 노트 05 - 사원수(Quaternion) 강영민 동명대학교 2015년 2학기 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 1 / 30
  • 2. 사원수 사원수(quaternion)는 스칼라(scalar) 값과 3차원 벡터를 묶어 구성한 복소수(complex number) 3차원 벡터 v = (a, b, c)를 각각의 축 방향 단위 벡터인 기저 i, j, k로 표현하면 ai + bj + ck 사원수는 여기에 스칼라 값 d가 추가된 d + ai + bj + ck 기저를 제외하고 표현하면 (d, (a, b, c))와 같이 표현 벡터 기호로 표현하면 (d, v) 스칼라 값은 기저가 실수의 단위 값인 1이라고 이해하면 사원수는 1, i, j, k를 기저로 하는 벡터 로보틱스와 컴퓨터 그래픽스 분야에서 회전을 다루는 데에 빈번히 이용 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 2 / 30
  • 3. 사원수의 연산 - 덧셈과 뺄셈 사원수 덧셈: 성분별로 더하면 된다. 두 개의 사원수 ˆp와 ˆq가 각각 (sp, vp)와 (sq, vq)일 때, 덧셈은 ˆp + ˆq = (sp + sq, vp + vq) ˆp = (ap, bp, cp, dp)와 ˆq = (aq, bq, cq, dq) ˆp + ˆq = (ap + aq, bp + bq, cp + cq, dp + dq) 뺄셈 ˆp − ˆq = (ap − aq, bp − bq, cp − cq, dp − dq) 스칼라와 벡터로 나누어 표현하면 다음과 같다. ˆp = (sp, vp), ˆq = (sq, vq) ˆp + ˆq = (sp − sq, vp − vq) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 3 / 30
  • 4. 사원수의 연산 - 스칼라 곱셈 사원수와 어떤 스칼라 λ를 곱하는 것은 모든 성분에 이 스칼라 값을 곱하는 것이다. λˆp = (λsp, λvp) = (λap, λbp, λcp, λdp) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 4 / 30
  • 5. 사원수의 연산 - 사원수 곱셈 1/4 두 사원수 ˆp와 ˆq를 곱하려면 어떻게 해야 할까? 사원수는 서로 다른 허수 i, j, k를 가진 벡터와 스칼라의 합인 복소수 허수들 사이의 곱 i2 = j2 = k2 = −1 ij = k, jk = i, ki = j ji = −k, kj = −i, ik = −j ˆpˆq는 다음과 같이 표현 가능 ˆp = dp + api + bpj + cpk ˆq = dq + aqi + bqj + cqk ˆpˆq = dpdq + dp + dpaqi + dpbqj + dpcqk + apidq + apiaqi + apibqj + apicqk + bpjdq + bpjaqi + bpjbqj + bpjcqk + cpkdq + cpkaqi + cpkbqj + cpkcqk 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 5 / 30
  • 6. 사원수의 연산 - 사원수 곱셈 2/4 정리하면 다음과 같다. ˆpˆq = dpdq + dpaqi + dpbqj + dpcqk + (1) apdqi + apaqi2 + apbqij + apcqik + bpdqj + bpaqji + bpbqj2 + bpcqjk + cpdqk + cpaqki + cpbqkj + cpcqk2 허수의 곱이 나타나는 부분을 정리하면, ˆpˆq = dpdq + dpaqi + dpbqj + dpcqk + (2) apdqi − apaq + apbqk − apcqj + bpdqj − bpaqk − bpbq + bpcqi + cpdqk + cpaqj − cpbqi − cpcq 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 6 / 30
  • 7. 사원수의 연산 - 사원수 곱셈 3/4 허수별로 정리하면 다음과 같다. ˆpˆq = dpdq − apaq − bpbq − cpcq +dpaqi + apdqi + (bpcq − cpbq)i +dpbqj + bpdqj + (cpaq − apcq)j +dpcqk + cpdqk + (apbq − bpaq)k 계산의 의미는 다음과 같다. ˆpˆq = dpdq − (apaq + bpbq + cpcq) +dp(aqi + bqj + cqk) +dq(api + bpj + cpk) +(bpcq − cpbq)i + (cpaq − apcq)j + (apbq − bpaq)k 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 7 / 30
  • 8. 사원수의 연산 - 사원수 곱셈 4/4 벡터의 내적과 외적을 이용하여 설명하면, ˆpˆq = dpdq − (vp · vq) +dpvq + dqvp + vp × vq 사원수를 스칼라 값과 벡터 표현인 (d, v)로 표현하면, ˆpˆq = (dp, vp)(dq, vq) = (dpdq − vp · vq, dpvq + dqvp + vp × vq) 스칼라: 두 사원수가 가진 스칼라 값의 곱에서 두 사원수가 가진 벡터 내적을 뺀 것 벡터: 각 사원수가 가진 스칼라 값을 상대편의 벡터 부분에 곱한 결과 두 개를 더하고, 두 사원수가 가진 벡터를 서로 외적하여 얻는 벡터를 추가로 더하여 얻음 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 8 / 30
  • 9. 사원수의 연산 규칙 ˆp + ˆq = ˆq + ˆp (ˆp + ˆq) + ˆr = ˆp + (ˆq + ˆr) λˆp = ˆpλ −λˆp = λ(−ˆp) ˆpˆq ̸= ˆqˆp 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 9 / 30
  • 10. 켤레 사원수 1/2 켤레 사원수(공액 사원수, conjugate) 어떤 사원수 ˆp = (dp, vp)의 켤레 사원수를 ˆp∗ 라고 표현 이 켤레 이 사원수는 (dp, −vp)의 값을 가짐 ˆp = (dp, vp) ⇒ ˆp∗ = (dp, −vp) 사원수의 크기는 벡터의 크기와 같은 방식으로 구한다. |ˆq| = dqdq + aqaq + bqbq + cqcq = d2 q + a2 q + b2 q + c2 q = d2 q + vTv = d2 q + v · v = ˆqˆq∗ 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 10 / 30
  • 11. 켤레 사원수 2/2 사원수의 항등원은 ˆi는 (1, 0, 0, 0) 사원수 ˆq의 역원 ˆq−1 은 ˆq∗/|ˆq| ˆqˆi = ˆiˆq = ˆq ˆqˆq−1 = ˆq−1 ˆq = ˆqˆq∗ /|q| = ˆi 켤레 사원수의 크기는 서로 동일하다. |ˆq| = |ˆq∗ | 다음과 같은 연산 규칙도 중요 (ˆq + ˆr)∗ = ˆq∗ + ˆr∗ (ˆqˆr)∗ = ˆr∗ ˆq∗ 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 11 / 30
  • 12. 사원수 연산 법칙 정리 ˆp + ˆq = ˆq + ˆp (ˆp + ˆq) + ˆr = ˆp + (ˆq + ˆr) λˆp = ˆpλ −λˆp = λ(−ˆp) ˆpˆq ̸= ˆqˆp ˆp = (dp, vp) =⇒ ˆp∗ = (dp, −vp) |ˆq| = ˆqˆq∗ ˆqˆi = ˆq =⇒ ˆi = (1, 0, 0, 0) ˆqˆp = ˆi =⇒ ˆp = ˆq−1 = ˆq∗ /|ˆq| ˆqˆq−1 = ˆq−1 ˆq = ˆqˆq∗ /|q| = ˆi |ˆq| = |ˆq∗ | (ˆq + ˆr)∗ = ˆq∗ + ˆr∗ (ˆqˆr)∗ = ˆr∗ ˆq∗ 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 12 / 30
  • 13. 사원수와 회전: 곱셈 행렬로 표현했던 회전은 사원수를 이용하여 표현 가능 어떤 좌표 p(x, y, z)는 사원수 표현으로는 ˆp = (0, (x, y, z)) = (0, p) 이 좌표에 다음과 같은 사원수 ˆq를 곱하면 어떻게 되는지 보자. ˆp = (0, p) ˆq = (cos θ, sin θu), |u| = 1, |ˆq| = 1 벡터 u는 단위벡터 (u가 어떤 방향이나 축을 표현) ˆp′ = (dp′ , p′ ) = ˆqˆp = (− sin θu · p, cos θp + sin θu × p) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 13 / 30
  • 14. 사원수와 회전: 사원수의 벡터가 수직인 경우 1/2 p와 u가 서로 직교하는 경우 p u u × p θ |p| |p| cos θ |p| sin θ |p| cos θ p |p| |p| sin θu×p |p| |p| cos θ p |p| + |p| sin θu×p |p| = cos θp + sin θu × p p′ 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 14 / 30
  • 15. 사원수와 회전: 사원수의 벡터가 수직인 경우 2/2 어떤 단위 벡터 u와 임의의 벡터 p는 서로 직교하다고 가정 두 벡터를 외적한 u × p는 p를 u 축을 중심으로 90도 회전한 것 u, p, u × p는 직교 좌표계의 세 축 위 다음과 같은 세 벡터가 직교 좌표축 u, p |p| , u×p |p| p를 u를 중심축으로 θ만큼 회전시킨 점 p′ 이 점은 p |p| 축 방향으로의 길이 α와 u×p |p| 축 방향으로의 길이 β 를 안다면 α p |p| + β u×p |p| 로 표현 가능 α = |p| cos θ β = |p| sin θ 회전된 좌표 p′ 는 cos θp + sin θu × p 두 사원수의 곱으로 얻은 사원수의 벡터 부분과 동일 스칼라 부분은 u ⊥ p의 경우라면 0 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 15 / 30
  • 16. 사원수와 회전: 일반적 경우 1/7 p와 u가 서로 직교하지 않는 일반적 경우 스칼라 부분 − sin θu · p이 0이 아님 스칼라 값이 0이 될 수 있도록 사원수 곱하기를 두 번 수행 하나의 사원수 ˆq를 곱하는 것이 아니라 그 역원 ˆq−1 도 같이 곱함 ˆp′ = ˆqˆpˆp∗ = (cos θ, sin θu)(0, p)(cos θ, − sin θu) ˆqˆpˆp∗ = (− sin θu · p, cos θp + sin θu × p)(cos θ, − sin θu) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 16 / 30
  • 17. 사원수와 회전: 일반적 경우 2/7 사원수 곱셈 연산법에 따라 계산하면 다음을 얻는다. ˆqˆpˆq∗ = (s, v) s = − sin θ cos θu · p + sin θ cos θu · p + sin2 θ(u × p) · u v = cos2 θp + sin θ cos θu × p +(sin2 θu · p)u − sin θ cos θp × u − sin2 θu × p × u u × p와 u는 서로 수직이므로, 이 둘의 내적 (u × p) · u이 0이다. 따라서 스칼라 부분인 s가 0. 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 17 / 30
  • 18. 사원수와 회전: 일반적 경우 3/7 u p u × p (u × p) × u (p · u)u −(p · u)u u × p × u는 p − (u · p)u u × p × u는 u와 u × p에 동시에 수직인 직교축 길이는 p와 u의 내적을 통해 알 수 있고, 이를 u 축의 음의 방향으로 떨어트리면 됨 u × p × u = p − (p · u)u ˆqˆpˆq∗ = (0, (cos2 θ − sin2 θ)p + 2 sin θ cos θu × p + (2 sin2 θu · p)u) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 18 / 30
  • 19. 사원수와 회전: 일반적 경우 4/7 cos 2θ = cos2 θ − sin2 θ sin 2θ = 2 sin θ cos θ 이 항등식을 적용하면 다음을 얻을 수 있다. ˆqˆpˆq∗ = (0, (cos 2θp + sin 2θ(u × p) + (2 sin2 θu · p)u) 1 = cos2 θ + sin2 θ이므로 sin2 θ = 1 − cos2 θ 2 sin2 θ는 sin2 θ + sin2 θ = sin2 θ + 1 − cos2 θ 1 − (cos2 θ − sin2 θ)이므로 다음 성립 2 sin2 θ = 1 − cos 2θ ˆqˆpˆq∗ = (0, (cos 2θp + sin 2θ(u × p) + ((1 − cos 2θ)u · p)u) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 19 / 30
  • 20. 사원수와 회전: 일반적 경우 5/7 p u rotation plane u × p θ sin θu × p cos θp u · p cos θu · p (1 − cos θ)u · p sin θ(u × p) + cos θp ((1 − cos θ)u · p)u sin θ(u × p) + cos θp + ((1 − cos θ)u · p)u p′ : rotated point 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 20 / 30
  • 21. 사원수와 회전: 일반적 경우 6/7 점 p가 축 u를 기준으로 회전 회전 과정에 지나는 곡선이 놓인 회색 평면 = 회전 평면 p와 u × p가 만드는 평면의 원점을 기준을 θ 만큼 회전하여 얻는 점 이 점은 p 축으로의 길이는 |p| cos θ 이 점의 u × p축 방향으로의 길이는 |p| sin θ sin θ(u × p) + cos θp 이 점을 회전 평면 위로 옮기면 원하는 좌표 회전 평면으로 옮기는 데에 필요한 길이는 (1 − cos θ)u · p 이 길이만큼 u 축으로 옮겨 놓는 벡터는 ((1 − cos θ)u · p)u 회전의 결과 좌표는 p′ = sin θ(u × p) + cos θp + ((1 − cos θ)u · p)u 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 21 / 30
  • 22. 사원수와 회전: 일반적 경우 7/7 p′ = sin θ(u × p) + cos θp + ((1 − cos θ)u · p)u 어떤 점 p를 u 축을 중심으로 θ 만큼 회전하여 p′ 를 얻고 싶을 때 ˆp = (0, p) ˆq = (cos θ 2, sin θ 2u) ˆp′ = (0, p′) = ˆqˆpˆq∗ 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 22 / 30
  • 23. 사원수의 보간 사원수가 회전을 의미한다면, 그래픽스에서 두 사원수를 보간하는 일은 빈번 보간: t = 0에서 ˆq0 이고, t = 1에서 ˆq1 인 사원수 ˆqt 구하기 사원수는 행렬에 비해 보간이 쉽다는 장점 ˆq0 = (s0, u0, v0, w0) ˆq1 = (s1, u1, v1, w1) 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 23 / 30
  • 24. 사원수의 보간: 단순한 선형보간 간단한 선형보간 ˆqt = (ts1 + (1 − t)s0, tu1 + (1 − t)u0, tv1 + (1 − t)v0, tw1 + (1 − t)w0) 즉, ˆqt = tˆq1 + (1 − t)ˆq0 매우 간단하고 빠르다는 장점 보간이 적용되는 동안 사원수의 길이가 길이가 변하는 단점 o ˆq0 ˆq1 ˆqt 4D Hypersphere ˆqt |ˆqt| 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 24 / 30
  • 25. 사원수의 보간: 간단한 개선 방법 사원수가 항상 초구면의 표면에 있도록 그 길이를 조정 ˆqt/|ˆqt|로 정규화 길이는 유지되지만 회전속도는 일정하지 않음 극단적인 상황: ˆq0 와 ˆq1 이 서로 반대 방향 선형 보간하여 얻는 사원수는 t = 0.5가 될 때까지는 초기의 회전각 t = 0.5 시점을 지나면 바로 다음 회전각으로 전환 사원수의 단순한 선형보간으로 얻어지는 각도의 변화와 각속도의 변화 θ ˙θ t t θ = cos−1 ( ˆqt |ˆqt| · ˆq0) t = 0.5 (a) 각도의 변화 (b) 각속도의 변화 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 25 / 30
  • 26. 사원수의 보간: 구면보간(球面補間) 혹은 Slerp 사원수의 보간은 각도 θ가 선형으로 보간되어야 함 구면 보간을 통해 얻어야 하는 사원수 보간의 각도의 변화와 각속도의 변화 θ ˙θ t t θ = θdt ˙θ(t) = c 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 26 / 30
  • 27. 구면보간(球面補間): 등각속도 구면보간의 개념 구면보간 시작과 끝 회전을 표현하는 사원수 ˆq0 와 ˆq1 에 적절한 가중치 a(t)와 b(t) 적용 가중치가 적용된 두 사원수를 합성 현재 시간 t에 제한조건을 만족하는 a(t)와 b(t)를 찾는 작업 o ˆq0 ˆq1 4D Hypersphere a(t) b(t) ˆqt = a(t)ˆq0 + b(t)ˆq1 θt θd 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 27 / 30
  • 28. 구면보간(球面補間): a(t) 구하기 ˆq0 에서 ˆq1 까지의 회전각 전체가 θd 시간 t에서 보간된 사원수 ˆqt 와 ˆq0 가 이루는 각이 θt θd 에서 θt 를 뺀 각도를 θ1−t a(t)와 |ˆq0|의 비(比)는 결국 |ˆqt| sin θ1−t 와 |ˆq0| sin θd 의 비 a(t) = sin θ1−t sin θd ˆq0 a(t) sin θd sin θ1−t θd θ1−t θt ˆqt ˆq1 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 28 / 30
  • 29. 구면보간(球面補間): b(t) 구하기 b(t)와 |ˆq1 의 비는 |ˆqt| sin θt 의 값과 |ˆq1| sin θd 가 이루는 비 b(t) = sin θt sin θd ˆq0 b(t) sin θd sin θt θd θ1−t θt ˆqt ˆq1 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 29 / 30
  • 30. 구면보간(球面補間) 계산법 a(t)와 b(t)를 구하고 나면, 보간된 사원수 ˆqt ˆqt = a(t)ˆq0 + b(t)ˆq1 사원수가 동일한 각속도로 부드럽게 보간된다. 이러한 보간 방법은 구면보간 “slerp”이라는 이름으로 종종 부름 이때 사원수의 크기는 언제나 1 θd = cos−1 (ˆq0 · ˆq1) s = sin θd = 1 − (ˆq0 · ˆq1)2 ˆqt = sin θ1−t s ˆq0 + sin θt s ˆq1 강영민 (동명대학교) 게임수학 - 사원수 2015년 2학기 30 / 30