일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MYSQL
- union find
- Hash
- SQL
- 다익스트라
- DP
- binary search
- String
- two pointer
- Dijkstra
- 그래프
- Trie
- Brute Force
- Two Points
- 이진탐색
- 스토어드 프로시저
- Stored Procedure
- Today
- Total
codingfarm
26. 좌표 변환 본문
0. 소개
world 좌표계를 기준으로 주어지는 오브젝트들을 화면에 수월하게 그리기 위해선 카메라의 좌표를 기준으로 표현한 후, 화면에 출력하기 위해 view port 좌표계로 다시한번 변환할 수 있어야 한다.
이를 위해 좌표변환에 대해 알아야 한다.
1. 선형 변환
정의 : Rn에 속하는 임의의 벡터u, v와 스칼라 c에 대하여
1) T(u+v)=T(u)+T(v)
2) T(cu)=cT(u)
위 2개 조건을 만족하는 변환T:Rn→Rm 을 선형변환 이라 한다.
즉, 선형변환 T는
T(c1v1+c2v2)=c1T(v1)+c2T(v2)
위 등식을 만족한다.
1-1. 행렬 표현(표준 행렬)
A가 m×n 행렬 일때
TA(x)=Ax,x∈Rn
로 정의되는 행렬변환 TA:Rn→Rm은 선형변환이다.
e1=(1,0,0,⋯0)e2=(0,1,0,⋯0)e3=(0,0,1,⋯0)⋮en=(0,0,0,⋯1)
일 때
A=[T(e1)|T(e2)|⋯|T(en)]
위와 같은 행렬 A를 선형변환 T의 표준행렬이라 한다.
선형변환 T:Rn→Rm이 주어질 때
T(p)=pA,p∈Rn
를 만족하면 A를 선형변환 T의 표준행렬 또는 행렬표현이라 한다.
컴퓨터 그래픽스에서 쓰이는 기초적인 선형 변환은 아래와 같다.
1-2. 비례
비례변환 S는 아래처럼 정의된다
S(x,y,z)=(Sxx,Syy,Szz)
위 선형변환을 바탕으로 표준행렬을 구하면
S(ˆi)=(Sx,0,0)S(ˆj)=(0,Sy,0)S(ˆk)=(0,0,Sz)
s=[←s(ˆi)→←s(ˆj)→←s(ˆk)→]=[Sx000Sy000Sz]
그러므로
S(x,y,z)=[xyz][Sx000Sy000Sz]
2. 아핀변환
3. 좌표변환
용어
BP : B 좌표계 기준 점 P의 좌표
BP의 성분 : (BPX,BPY,BPZ)
ˆXB,ˆYB,ˆZB : B 좌표계의 각 주축들
AˆXB,AˆYB,AˆZB : B 좌표계의 각 주축들 (A 좌표계 기준)
점 BP의 좌표를 좌표계 A를 기준으로 변환하기
1. 임의의 좌표계

BˆU와 BˆV는 AˆX와 AˆY에 대응된다.
BP 를 AP 로 변환하는 방법에 대해 알아본다.
우선 BP를 A의 ˆXA 기준으로 바꾸어 본다. (APx를 구한다.)
BPu⋅AUB와 BPv⋅AVB 를 ˆXA에 투영한 길이의 합과 같다.
즉, 각 벡터간의 내적의 합이라 볼 수 있다.
APx=(BPu⋅AˆUB)⋅ˆXA+(BPv⋅AˆVB)⋅ˆXA=ˆXA(BPu⋅AˆUB+BPV⋅AˆVB)
이때 ˆXA는 Y 성분의 값이 0이므로 AˆUB와 AˆVB의 ˆXA성분만 곱해지게 되어 사실상 스칼라 끼리의 곱이라 볼 수 있다.
즉,
AˆUB=(AUB.x,AUB.y,AUB.z)
AˆVB=(AVB.x,AVB.y,AVB.z)
라 할때
APx=BPu⋅AUB.x+BPv⋅AVB.x=[BPu,BPv][AUb.xAVb.x]
이런식으로 APy 도 구하면
APy=BPu⋅AUB.x+BPv⋅AVB.x=[BPu,BPv][AUb.yAVb.y]
그러므로 AP는
AP=[APx,APy]=[BPu,BPv][AUB.uAUB.vAVB.uAVB.v]
편의상 B 좌표계의 주축을 ˆUB,ˆVB로 표현했찌만 ˆXB,ˆYB로 표현하면
AP=[APx,APy]=[BPx,BPy][AUB.xAUB.yAVB.xAVB.y]
이를 3차원으로 확장하면
AP=[APx,APy,APz]=[BPx,BPy,BPz][←AˆXB→←AˆYB→←AˆZB→]=BP⋅ARB
2. 좌표계 이동

B좌표계의 원점이 A좌표계 기준 AO위치에 있을경우 BP를 A좌표계에 대해 표현하면 아래와 같다.
AP=BP⋅ARB+AO
2. 카메라
'computer graphics > DirectX12' 카테고리의 다른 글
27-1. 텍스처적용 예제 코드 (0) | 2021.09.22 |
---|---|
27. 텍스처 적용(Texturing) (0) | 2021.09.19 |
24. 색이 변하는 구 (0) | 2021.08.19 |
23. Cube 그리기 (0) | 2021.08.10 |
22. 삼각형 그리기 2 (0) | 2021.08.05 |