일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- LineTracer
- 컴퓨터 그래픽스
- 아두이노 컴파일러
- C언어
- 운영체제
- set
- directx
- priority_queue
- Arduino
- 라인트레이서
- stl
- arduino compiler
- c++
- 자료구조
- Array
- 시스템프로그래밍
- 아두이노
- Algorithm
- 아두이노 소스
- Stack
- Deque
- WinAPI
- html
- Visual Micro
- 수광 소자
- vector
- list
- map
- 통계학
- queue
- Today
- Total
Kim's Programming
3차원 그래픽스 기하변환 본문
3차원 기하변환
이동(Translation)
3차원 공간에서 객체의 이동은 2차원 객체와 마찬가지로 다면체를 구성하는 각 꼭지점을 이동시키고 난다음 이들을 연결하여 다면체를 새로 그리면 됩니다. 3차원 공간에서의 한점 P(x,y,z)가 각 축 방향으로 (tx,ty,tz)만큼 이동한점 P'(x',y',z')의 좌표는 다음과 같이 나타냅니다.
또한 동차좌표계를 이용한 행렬로 표현하면 다음과 같이 됩니다.
신축(Scale)
3차원 공간에서 P(x,y,z)를 원점을 기준으로 하여 각 축의 방향으로 (sx,sy,sz)배 만큼 신축변환을 수행한 점 P'(x',y',z')를 다음과 같이 표현이 가능하며
또한 동차좌표계를 이용한 행렬로 표현하면 다음과 같이 됩니다.
만약 원점이 기준이 아니라 (x0, y0, z0) 기준으로 신축하는 경우에는 다음과 같이 됩니다.
객체를 원점 중심으로 신축할 수 있게 움직여 준 다음 신축을 하게 됩니다.
회전(Rotation)
3차원 공간에서 회전변환은 주로 기준축을 중심으로 객체가 놓여있는 방향을 일정 각도로 바꾸게 합니다. 간단하게는 축을 기준으로 회전하게 되며 각 축을 중심으로 세타 만큼 회전하였을 때 회전변환된 점은 다음과 같이 구하게 됩니다.
축이 아니라 특정 선분을 기준으로 하면 그 선분을 축에 맞춰줘야 하는데 너무 복잡해 져서 생략하겠습니다.
3차원 기타변환
반사(Reflection)
2차원에서는 평면에서 객체의 반사를 직선이나 점에 대해서 대칭을 시켰습니다. 그에반해 3차원에서는 펴면에 대해서 반사를 시키게 됩니다. 3차원에서는 반사에 대한 3가지 경우가 있으며 xy평면, yz평면, xz평면에 대해서 반사를 하는 경우들이 있습니다.
밀림(Shearing)
2차원 평면에서의 밀림변환과 같이 3차원에서도 밀림을 하면 기울어 지거나 찌그러집니다. 3차원 공간에서도 일정 부분을 고정시키고 일정 방향으로 미는 경우 고정된 지점에서 멀수록 밀림이 더 많아집니다. 밀림은 x방향, y방향, z방향을 기준으로 밀릴 수 있습니다.
'Computer Theory > Computer Graphics' 카테고리의 다른 글
3차원 그래픽스 투영을 위한 변환 (4) | 2016.01.24 |
---|---|
3차원 그래픽스 투영의 종류 (0) | 2016.01.24 |
3차원 그래픽스 (0) | 2016.01.24 |
래스터 변환과 2차원 윈도우 (0) | 2016.01.24 |
2차원 그래픽스의 동차좌표계 변환 (0) | 2016.01.23 |