gamemath-chapter 03 변환
TRANSCRIPT
3 장 변환
이장에서는 무엇을 배우나 ?
변환 좌표계 이동변환 회전변환 크기변환 동차좌표계 좌표계의 변환
1. 변환의 목적
첫째 . 한 정점의 위치벡터를 이동시키기 위한 것 → 이동변환 ( 위치변환 )
ex) 미사일이 포물선을 그리며 이동 , 탱크
가 앞뒤로 움직이는것 둘째 . 방향 벡터의 자세를 변화시키는 데 사용
된다 → 회전변환 ( 자세변환 )
ex) 포를 쏠 각도를 조절하는것 .
2. 좌표계
좌표계는 하나의 기준이다
변환을 수학적으로 설명하기 위해서는 기준인 좌표계가 있어야 하며 , 이좌표계를 통한 좌표로 변환을 서술해야 한다
종류
① 직교 ② 원기둥 ③ 구면
① 직교 좌표계
공간상에 어떠한 점이나 벡터를 표현할 때 유용하게 사용
② 원기둥 좌표계 비행 시뮬레이션 게임처럼 자신을 원점으
로 했을 때 어떤 좌표의 거리와 방향 , 높이가 중요할 경우 편리
(x, y, z) = (rcosθ, rsinθ, z)
③ 구면 좌표계
(x, y, z) = (ρcosθsinφ, ρsinθsinφ, ρcosφ)
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)
4. 회전 변환
주어진 각도만큼 회전축을 기준으로 회전하는 변환
①2 차원 평면
② 2 차원 평면 회전의 3 차원확장
③ 3 차원 공간 회전
• 공간회전축을 x,y,z 회전축으로 분해하
여 표현할 수 있다 . (1)변환의 연결예를 들어 x 축을 기준으로 30˚ 회전시킨 후 , y 축을 기준으로
60˚ 회전시키려면
주의해야 할 점은 x 축으로 30˚ 를 회전하면 좌표축 전체가 이동하기 때문에
y 축의 위치도 바뀐다는 점이다 . 따라서 순서가 바뀌면 안된다 .
(2) 오일러 변환
x,y,z 축을 각각 회전축으로 했을 때 각 회전축에 대한 회전각으로 3 차원 공간 회전 변환 행렬을 정의한다 .
Z-Y-X 오일러 변환
④ 회전 행렬의 성질
회전 행렬끼리의 곱은 회전 행렬이다
RT(θ)=R-1(θ)
R=[XYZ] 와 같은 열벡터로 구성되었다고 하면
|X|=|Y|=|Z|=1
X·Y=X·Z=Y·Z=0 ∴ 회전행렬은 직교행렬
5. 크기 변환
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
② 동차 좌표계에서의 변환
ww
zzz
yyy
xxx
=∆+=∆+=∆+=
'
'
'
'
이동변환 (translation) 물체를 정의하는 모든 점에 대해 3 개의 변수들을 이동
∆∆∆
=∆∆∆
1000
100
010
001
),,(z
y
x
zyxT
x
y
z
x
y
z
회전 (Rotation)
회전 (rotation) 3 차원 회전은 각 축에 대해 독립적으로 이루어진다 .
−
=
1000
0100
00cossin
00sincos
)(θθθθ
θzR
−
=
1000
0cossin0
0sincos0
0001
)(θθθθ
θxR
−=
1000
0cos0sin
0010
0sin0cos
)(θθ
θθ
θyR
x
y
z
x
y
z
크기 변형 (Scaling)
크기 변형 (scaling) 모든 3 차원에서 독립적인 확대 및 축소 변형
=
1000
000
000
000
),,(γ
βα
γβαS
x
y
z
x
y
z
시어 (Shear)
zz
yy
zyxx
==
++=
'
'
cotcot' θθ
시어 (shear) 하나의 객체는 6 개의 독립적인 방법으로 비틀기 가능
=
1000
0100
0010
0cotcot1
),(
φθ
φθxH
x
y
z
x
y
z
7. 좌표계의 변환
실제 3D 프로그래밍에서는 좌표계를 기준으로 변환을 수행
하나의 좌표계보다 여러 개의 좌표계상에서 각각의 물체를 표현하는 것이 더 편리
① 월드 좌표계와 로컬 좌표계B: 월드 좌표계로서 3 차원 공간상의 가장 기본이 되는 고정된 좌표계T: 움직이는 로봇 손의 끝단을 나타내는 좌표계로 , 로봇의 관절이 움직임에 따라 B 에 대해서 회전과 이동 변환이 수행된 좌표계S: 로봇이 작업을 할 작업 테이블의 원점 좌표계며 , 이 또한 B 에 대해서 회전과 이동 변화이 수행된 좌표계이다
G: 작업 테이블의 기준 좌표계 S 에 대해서 회전과 이동 변환이 수행된 좌표계이며 테이블 위에 놓여있는 보트의 위치와 자세를 묘사
월드 좌표계 : B로컬 좌표계 : T,S,G
② 좌표계의 변환
(1) 좌표계의 이동 변환 AP=BP+d
AP=T BP
∆∆∆
=∆∆∆
1000
100
010
001
),,(z
y
x
zyxT
(2) 좌표계의 회전변환
AP=R BP
(3) 동차 변환 행렬
AP=R BP + d
(4) 변환의 연결
수고하셨습니다 ^________^;;