System.out.println("Hello, World");

'크기변환'에 해당되는 글 1건

  1. 2012.04.19 3D게임프로그래밍기본 - 변환 1

변환

 - 변환이란 어떠한 점 또는 벡터를 사용자가 원하는 점이나 벡터로 이동시키거나 회전 시키는 것.

 - 캐릭터의 이동, 캐릭터의 회전

 - 카메라의 이동, 카메라의 회전

 - 스케일(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]











Posted by 김마농