변환
- 변환이란 어떠한 점 또는 벡터를 사용자가 원하는 점이나 벡터로 이동시키거나 회전 시키는 것.
- 캐릭터의 이동, 캐릭터의 회전
- 카메라의 이동, 카메라의 회전
- 스케일(scale)
○ 좌표계
- 좌표계는 하나의 기준. 한 점을 측정하기 위한 하나의 기준과 방법일 뿐이며 물리적으로 점 자체가 이동하는 것은 아니다.
종류로는 직죠좌표계, 원기둥 좌표계, 구면 좌표계가 있다.
○ 직교 좌표계
- 3차원 공간에서 어떠한 점이나 벡터의 위치를 지정할때 가장 일반적으로 사용하는 좌표계(Direct3D, OpenGL에서 사용된다.)
○ 이동 변환
- 하나의 좌표를 이동 시키는 것.
- 모든 물체는 하나 이상의 좌표로 표현 할 수 있으며 하나의 이동 변환ㅇ르 통해서 물체를 구성하는 여러 개의 좌표에 같은 이동변환을 수행.
- 2차원 직교 좌표계에서 이동변환
○ 회전 변환
- 주어진 크기 만큼 회전축을 기준으로 회전하는 변환
◎ 2차원 평면 회전
- 회전점 또는 고정점 기준으로 좌표를 회전하는 것.
- 4개의 모서리 좌표가 모여서 하나의 사각형을 이루므로 4개의 좌표를 회전변환하면 사각형의 회전변환을 수행 할 수 있음.
- 회전점은 원점(0,0)이다. 원점이 아닐 경우 좌표들을 원점으로 이동 변환한 우에 회전변환을 수행하고 다시 원래의 위치로 이동변환 해야 한다.
◎ 2차원 평면 회전의 3차원 확장
- 3차원 회전변환은 x,y,z축 각각을 기준으로 회전하여 회전변환을 수행 할 수 있다.
ex) 3차원 좌표P를 x축을 기준으로 30 회전시킨 후, y축을 기준으로 60 회전시키기
○ 오일러 변환
- x,y,z축을 각각 회전축으로 했을때 각 회전축에 대한 회전각으로 3차원 공간 회전 변환 행렬을 정의
- 회전 행렬이나 좌표축 자세를 표현하는 직관적인 방법
- z-y-x 오일러 변환
○ 동차 좌표계
- 3차원 좌표를 세개의 요소로 표현할 경우 점인지, 벡터인지 혼동 될수 있기 때문에 4개의 요소로 표현한 동차 좌표를 이용한다.
○ 동차 좌표계에서의 이동변환
X' = x + dx
Y' = y + dy
Z' = z + dz
○ 동차 좌표계에서의 크기변환 행렬
X' = X x a
Y' = Y x a
Z' = Z x a
- 한개체를 x,y,z방향으로 Sx, Sy, Sz배 확대, 축소한다.
○ 동차 좌표계에서의 회전 행렬
- X축 중심으로 θ 회전 Rx
- Y축 중심으로 θ 회전 Ry
- Z축 중심으로 θ 회전 Rz
- 개체를 i축 주위로 라디안만큼 회전 i축상에 있는 모든 점들은 변하지 않는다.
○ 변환의 결합
- 행렬들을 하나로 결합하는 이유는 효율을 높이기 위해서다.
[예]수천개의 정점을 가진 물체가 있다. 이 물체가 크기 조정, 회전 후에 마지막으로 평행 되어야 한다고 하면 모든 정점을 세 형랠과 각각 곱하는 대신
세 행렬을 하나로 결합한 후 그 행렬들을 모든 정점들에 적용한다.
이동행렬 =T, 회전행렬 R, 크기변형 = S
C=TRS이다.
[변환의 결합은 순서가 중요하다. 왜냐하면 행렬의 곱셈에서 교환법칙은 적용되지 않기 때문이다. AB ≠ BA]