Applied Geometry for Computer Graphics and CAD 책의 챕터 2.7 "Point and line geometry in homogeneous coordinates" 내용이다. 영문 독해가 되면 가능한 구글링해서 원서 pdf로 보길 권한다.
1. 개념
homogeneous coordinate를 알기 전에, 좌표의 변환에 대해 먼저 알아야한다. 좌표의 변환에는 세 가지가 있다.
종류 |
linear transformation |
affine transformation |
perspective transformation |
특징 |
1. 원점기준 변환 2. 변환 전 임의의 두 line이 평행했으면 변환 후에도 평행함 예) rotation |
1. 원점기준 변환이 아님 2. 변환 전 임의의 두 line이 평행했으면 변환 후에도 평행함 예) translation |
1. 원점기준 변환이 아님 2. 변환 전 임의의 두 line이 평행해도 변환 후에 평행함을 보장하지 못함 예) frustum 변환 |
translation을 선형변환과 똑같은 프로세스(매트릭스 곱셈)로 처리하기 위해, point를 vector와 함께 처리하기 위해 geometry에서는 homogeneous coordinate를 사용하게 된다. homogeneous coordinate는 2차원 공간에서 3차원으로, 3차원 공간에서 4차원으로 좌표를 나타낸 것이다.
------- 2차원
2. 점
(x,y,w)로 점의 좌표를 나타내는데, w 항이 1로 되기 위해서는 모두 w로 나눠줘야 한다. 따라서 (x/w,y/w,1)로 공간상의 정확한 좌표를 얻어낸다. 하지만 계산상에서 w가 1 외의 값을 갖는건 허용된다.
3. 선
선 또한 (x,y,w)로 나타낼 수 있다. 다만 geometry에서는 (a,b,c)로 대신하고, 이를 다음과 같이 식으로 나타낸다.
ax+by+c=0
4. 점 둘로 나타내지는 선
점 두 개를 지나는 선은 다음과 같이 나타낸다.
P_1, P_2에 대해, 선 L은
L=P_1×P_2
로 나타낼 수 있다.
L의 노말과 P_1, P_2를 각각 dot product하면 0이 되기 때문에 위와 같은 식을 유도할 수 있다.
<L,P_1>=0, <L,P_2>=0 이므로, L=P_1×P_2
5. 선 둘로 나타내지는 점
선 두 개를 모두 교차하는 점은 다음과 같이 나타낸다.
L_1, L_2에 대해, 점 P는
P=L_1×L_2
이렇게 단순한 매트릭스의 곱으로 나타낼 수 있다.
------- 3차원
7. 점
2차원에서 나타낸 바와 같이, (x,y,z,w)로 나타낸다.
8. 면
면 또한 (x,y,z,w)로 나타낼 수 있다. 다만 geometry에서는 (a,b,c,d)로 대신하고, 이를 다음과 같이 식으로 나타낸다.
ax+by+cz+d=0
9. 세 점으로 만드는 면
다음과 같이 임의의 면에 세 점을 대입한다.
위와 같이 wedge product로 유도할 수 있다. 이는 아래와 같다.
10. 세 면으로 만드는 점
위 9번과 같이 wedge product를 하면 된다. 대신 P=n0⋀n1⋀n2 으로 구한다.
11. 투영
2차원에서 나타낸 투영에 한 차원을 높혔다고 생각하면 된다. 결과 식도 비슷하다.
만약 parallel projection이라면, view V의 w에 1 대신 0을 넣으면 된다.
'Computer Graphics, Geometry - 수업' 카테고리의 다른 글
opengl vbo, ibo 등을 위한 함수 설명 및 ibo 그려보기 (0) | 2020.12.28 |
---|---|
collision detection library (0) | 2019.08.18 |
Intersection test (0) | 2018.07.16 |
BVH, Collision Detection(GJK+Minkowski sum) (1) | 2018.06.29 |