27
3장 변환

GameMath-Chapter 03 변환

Embed Size (px)

Citation preview

Page 1: GameMath-Chapter 03 변환

3 장 변환

Page 2: GameMath-Chapter 03 변환

이장에서는 무엇을 배우나 ?

변환 좌표계 이동변환 회전변환 크기변환 동차좌표계 좌표계의 변환

Page 3: GameMath-Chapter 03 변환

1. 변환의 목적

첫째 . 한 정점의 위치벡터를 이동시키기 위한 것 →  이동변환 ( 위치변환 )

ex) 미사일이 포물선을 그리며 이동 , 탱크

가 앞뒤로 움직이는것 둘째 . 방향 벡터의 자세를 변화시키는 데 사용

된다 → 회전변환 ( 자세변환 )

ex) 포를 쏠 각도를 조절하는것 .

 

Page 4: GameMath-Chapter 03 변환

2. 좌표계

좌표계는 하나의 기준이다

변환을 수학적으로 설명하기 위해서는 기준인 좌표계가 있어야 하며 , 이좌표계를 통한 좌표로 변환을 서술해야 한다

종류

① 직교 ② 원기둥 ③ 구면

Page 5: GameMath-Chapter 03 변환

① 직교 좌표계

공간상에 어떠한 점이나 벡터를 표현할 때 유용하게 사용

Page 6: GameMath-Chapter 03 변환

② 원기둥 좌표계 비행 시뮬레이션 게임처럼 자신을 원점으

로 했을 때 어떤 좌표의 거리와 방향 , 높이가 중요할 경우 편리

(x, y, z) = (rcosθ, rsinθ, z)

Page 7: GameMath-Chapter 03 변환

③ 구면 좌표계

(x, y, z) = (ρcosθsinφ, ρsinθsinφ, ρcosφ)

Page 8: GameMath-Chapter 03 변환

3. 이동 변환

이동 변환은 기본적으로 하나의 좌표를 이동시키는 것이다

이동 크기를 더해줌으로써 수행

       d=[4,3]

P1=(0.0)    →    P1'=(4,3)

P2=(4,0)    →    P2'=(8,3)

P3=(4,2)    →    P3'=(8,5)

P4=(0,2)    →    P4'=(4,5)

Page 9: GameMath-Chapter 03 변환

4. 회전 변환

주어진 각도만큼 회전축을 기준으로 회전하는 변환

①2 차원 평면

Page 10: GameMath-Chapter 03 변환

② 2 차원 평면 회전의 3 차원확장

Page 11: GameMath-Chapter 03 변환

③ 3 차원 공간 회전

• 공간회전축을 x,y,z 회전축으로 분해하

여 표현할 수 있다 . (1)변환의 연결예를 들어 x 축을 기준으로 30˚ 회전시킨 후 , y 축을 기준으로

60˚ 회전시키려면

주의해야 할 점은 x 축으로 30˚ 를 회전하면 좌표축 전체가 이동하기 때문에

y 축의 위치도 바뀐다는 점이다 . 따라서 순서가 바뀌면 안된다 .

Page 12: GameMath-Chapter 03 변환

(2) 오일러 변환

x,y,z 축을 각각 회전축으로 했을 때 각 회전축에 대한 회전각으로 3 차원 공간 회전 변환 행렬을 정의한다 .

Z-Y-X 오일러 변환

Page 13: GameMath-Chapter 03 변환
Page 14: GameMath-Chapter 03 변환

④ 회전 행렬의 성질

회전 행렬끼리의 곱은 회전 행렬이다

RT(θ)=R-1(θ)

R=[XYZ] 와 같은 열벡터로 구성되었다고 하면

|X|=|Y|=|Z|=1

X·Y=X·Z=Y·Z=0 ∴ 회전행렬은 직교행렬

Page 15: GameMath-Chapter 03 변환

5. 크기 변환

Page 16: GameMath-Chapter 03 변환

6. 동차 좌표계

① 동차 좌표 모조 좌표 (dummy coordinate) 를 추가하여 n×n 행렬로 연산

3 차원에서 회전과 크기 변형은 가능하지만 평행 이동과투영은 불가능

모조 좌표 w 를 추가하여 점을 p(x,y,z,w) 로 표시

=

w

z

y

x

p 초기에는 w=1 로 설정

아핀 변환의 문제점

동차 좌표로 해결

4×4 행렬로 통일하기 위해 동차 좌표를 이용

=

'

'

'

'

'

w

z

y

x

p

p 모든 아핀 변환을 동차 좌표의 행렬 곱으로 표현 가능

가 변환 합성이 용이

용 수치 계산의 감소

감 고속 계산을 위한 병렬 처리가 가능

장점

크기 변형

회전

비틀기

평행 이동

∆∆∆

=∆∆∆

1000

100

010

001

),,(z

y

x

zyxT

=

1000

000

000

000

),,(γ

βα

γβαS

=

1000

0100

00cossin

00sincos

)(θθθθ

θzR

=

1000

0100

0010

0cotcot1

),(

φθ

φθxH

Page 17: GameMath-Chapter 03 변환

② 동차 좌표계에서의 변환

ww

zzz

yyy

xxx

=∆+=∆+=∆+=

'

'

'

'

이동변환 (translation) 물체를 정의하는 모든 점에 대해 3 개의 변수들을 이동

∆∆∆

=∆∆∆

1000

100

010

001

),,(z

y

x

zyxT

x

y

z

x

y

z

Page 18: GameMath-Chapter 03 변환

회전 (Rotation)

회전 (rotation) 3 차원 회전은 각 축에 대해 독립적으로 이루어진다 .

=

1000

0100

00cossin

00sincos

)(θθθθ

θzR

=

1000

0cossin0

0sincos0

0001

)(θθθθ

θxR

−=

1000

0cos0sin

0010

0sin0cos

)(θθ

θθ

θyR

x

y

z

x

y

z

Page 19: GameMath-Chapter 03 변환

크기 변형 (Scaling)

크기 변형 (scaling) 모든 3 차원에서 독립적인 확대 및 축소 변형

=

1000

000

000

000

),,(γ

βα

γβαS

x

y

z

x

y

z

Page 20: GameMath-Chapter 03 변환

시어 (Shear)

zz

yy

zyxx

==

++=

'

'

cotcot' θθ

시어 (shear) 하나의 객체는 6 개의 독립적인 방법으로 비틀기 가능

=

1000

0100

0010

0cotcot1

),(

φθ

φθxH

x

y

z

x

y

z

Page 21: GameMath-Chapter 03 변환

7. 좌표계의 변환

실제 3D 프로그래밍에서는 좌표계를 기준으로 변환을 수행

하나의 좌표계보다 여러 개의 좌표계상에서 각각의 물체를 표현하는 것이 더 편리

Page 22: GameMath-Chapter 03 변환

① 월드 좌표계와 로컬 좌표계B: 월드 좌표계로서 3 차원 공간상의 가장 기본이 되는 고정된 좌표계T: 움직이는 로봇 손의 끝단을 나타내는 좌표계로 , 로봇의 관절이 움직임에 따라 B 에 대해서 회전과 이동 변환이 수행된 좌표계S: 로봇이 작업을 할 작업 테이블의 원점 좌표계며 , 이 또한 B 에 대해서 회전과 이동 변화이 수행된 좌표계이다

G: 작업 테이블의 기준 좌표계 S 에 대해서 회전과 이동 변환이 수행된 좌표계이며 테이블 위에 놓여있는 보트의 위치와 자세를 묘사

월드 좌표계 : B로컬 좌표계 : T,S,G

Page 23: GameMath-Chapter 03 변환

② 좌표계의 변환

(1) 좌표계의 이동 변환 AP=BP+d

AP=T BP

∆∆∆

=∆∆∆

1000

100

010

001

),,(z

y

x

zyxT

Page 24: GameMath-Chapter 03 변환

(2) 좌표계의 회전변환

AP=R BP

Page 25: GameMath-Chapter 03 변환

(3) 동차 변환 행렬

AP=R BP + d

Page 26: GameMath-Chapter 03 변환

(4) 변환의 연결

Page 27: GameMath-Chapter 03 변환

수고하셨습니다 ^________^;;