프로그래밍[Univ]/그래픽스

[Graphics] 점의 좌표 표현 및 변환

Cloud Travel 2013. 4. 14. 11:26

* 3차원 물체 표현

 - 메쉬를 이용해경계면을 그린다.(경계면 표현을 통해 3D생성)

 - 삼각형 메쉬 : 평면이 보장되고 사격형에 비해 2배 느린 속도로 그려진다.(속도가 느리다)

 - 사각형 메쉬 : 평면이 보장되지 않는다.

 - 삼/사각형 메쉬이외에 평면, 다각형 메쉬등 다양하게 존재한다.

 - 매쉬가 많아질 수록 그리는 속도가 느려진다.

 - 가변 모델링(곡면표현을 섬세하게 할수록, 메쉬의 양이 증가하고 세밀한 표현이 가능하다)


* 렌더링 모델

 - Wire frame : 선 기반으로 그리는 속도가 빠르다

 - Solid frame : 면 기반으로 속도가 느리다. 외형 확인을 위해 가끔씩 사용한다.


* 어파인 공간(Affine space)

 - In vector space : V+V = V // S*V = V를 만족한다.

 - Vector space + 점 = 어파인 공간

  > 점과 Vector를 같은 것으로 생각하여 벡터 공간을 확장한다.

 

 - PQ는 그 선상에 있는 점의 합이라고 할 수 있다.

   V = P + t(Q-P) = (1-t)P + tQ ( 0 <= t <= 1)

 - 점의 계수 합이 1이 되는 경우에면 성립되며, 이 경우를 어파인 합이라고 한다.


* 좌표계(점의 표현 방법)

 - 원점과 기반 벡터로 구성되는 프레임

  ※ 기반벡터 : 크기와 방향이 동일하면 같은 vector로 취급

 - 원점 : 기반 벡터의 시작점

  ex) P = r + 3V1 + 2V2

  >> r : 원점, 임의점에서 점 P를 나타내기 위해서 임의점에서 원점으로 간후, P위치를 표현해야한다.


* 동차좌표

 - 위에서 보았듯이 벡터와 점의 표현이 다르다.

 - Vector의 차원을 하나 올림으로써 동일한 방법으로 표시한다.

  V = 3V1 + 2V2 + 0r  // P = 3V1 + 2V2 + r

 - 점(좌표)를 한 차원 높은 동차 좌표로 사상시킨다. (x,y,z) => (x,y,z,r)

 - 동차좌표 (x,y,z,r)은 3차원의 (x/r,y/r,z/r)위치이다.


* 기하변환

 >> Vector Processing : 이동시 정점만 이동후 물체를 재구성한다. 일단 좌표를 동차좌표로 사상시킨후 변환

 - 이동

  

 - 회전(3차원은 y축 기준회전)

- 크기조절

  

 - 전단


* 복합변환

 - 행렬에 앞쪽에 곱해나간다.

 - S1, R1, S2, R2  >> R2*S2*R1*S1*P 식으로 작성

 - R2*S2*R1*S1*P = C*P


* 원점 기준 회전

 - 물체 자체를 원점에 기준하여 회전시킨다.

 


* 중심점 기준 회전

 - 특정 위치를 잡아서 물체를 회전

 

 1. 중심점이 원점으로 오게 물체를 이동시킨다.

 2. 원점을 기준으로 회전 시킨다.

 3. 1의 반대방향으로 물체를 이동시킨다.

 - 이러한 프로세싱이 필요하기 때문에 코드 작성시 scaling rotation후 이동시키는게 좋다.


* 구조 왜곡 변환

 1) 테이퍼링 : Z에 따라 x,y크기 조절(a>b)

 2) 휨 : 축을 따라 물체가 휜다.(a>c)

 3) 비틀림 : z에 따라 회전각 변환(d>e)

 


* 그래픽 변환

 1) 강체변환 : 이동, 회전변환. 물체의 모습은 불변

 2) 유사변환 

  - 강체변환 + 균등 크기조절, 반사변환

  - 물체면 사이의 각이 유지된다

  - 물체를 이루는 정점간의 거리가 일정한 비율로 유지됨

 3) 어파인 변환

  - 유사변환 + 차등 크기 조절, 전단 변환

  - 물체의 타입이 유지, 평행선이 보존

  - 변환행렬의 마지막행(어파인 행렬) 값 = ( 0 0 0 1 )이된다.

 4) 원근 변환

  - 평행선이 만남

  - 직선이 직선으로 유지 

  - 변환행렬의 마지막 행 = ( 0 0 0 1 )을 만족하지 않는다.

 5) 선형변환 : 3)+4), 선형조합으로 표시되는 변환