벡터(Vector)와 포인트(Point)
벡터와 포인트
포인트(Point) : 위치 O (방향 X, 크기 X)
벡터(Vector) : 방향 O, 크기 O (위치 X)
그래픽스 수학의 용어 표현
P,Q,R : 포인트 (point,위치)
u,v,w : 벡터(vector)
a,b,y : 스칼라(scalar) (그리스 알파벳)
a : 벡터를 행렬로 표기하는 경우 (소문자 알파벳)
M : 행렬
포인트와 위치 벡터의 구분
‘남산타워’를 예로 들자면,
‘실제 남산타워의 위치’가 ‘포인트’
각각의 관측자가 보는 방향과 거리로 ‘남산타워’를 표현한 경우를 ‘위치 벡터’
‘포인트’는 관측자와 상관없이 특정한 고유 위치를 다룰 때 사용하는 개념이며
‘위치 벡터’는 관측자(특정 좌표계)를 기준으로 위치를 정의할때 사용한다
(대부분의 API에서 포인트와 벡터를 구분해서 구현하지는 않으니 개념적 이해를 할 것)
포인트 - 벡터 연산
포인트 - 포인트 = 벡터
- ‘위치 - 위치’ 이므로
하나의 위치에서 다른 위치를 가리키는 벡터가 결과로 나온다
포인트 +- 벡터 = 포인트 - ‘위치’에서 다른 방향과 그 거리(크기)를 나타낸 것이므로
‘다른 위치’ 값이 나온다
벡터 - 벡터 = 벡터 - 하나의 벡터 u = (P - Q)와
다른 벡터 v = (Q -R)이 존재할 때,
u + v = P - Q + Q - R = P - R 이 되므로
새로운 벡터로 표현이 가능하다
포인트,벡터 연산에 의한 ‘직선’과 선분의 표현
직선(Line) P(a)는
특정한 포인트 P와
직선의 방향을 나타내는 ad 를 통하여 표현 가능
P(a) = P + ad
- 직선은 ‘완전, 무한한 선’이며
선분은 ‘직선의 일부분’으로 이해하자
선분(Line Segment) P(a)는
(단, 여기서 a는 0~1 사이의 값)
P(a) = P + a(Q - P)
= P + ad
= (1-a)P + aQ
로 표현 (Q는 직선의 끝점)
(P와 Q 사이의 선형 변환과도 비슷하다)
이러한 point들 앞에 각각 scalar를 곱해 더해주는 것을
Affine Combination(Affine Sum)이라고 한다
(선형 변환과 비슷하지만 선형 변환에 ‘이동’을 추가한 것이
애파인 변환)
- 그래픽스와 관련된 기하학에서 ‘애파인 변환’은
점, 직선, 평면을 ‘변환’하였을 때, 계속 점, 직선, 평면으로 유지되는 것을 의미
(ex : 3차원 공간의 직선에 애파인 변환을 적용하면 여전히 직선)
(+ 점(길이가 0인 직선)으로 변환될 수도 있음)
(raytrace에서 3차원 평면이 2차원 공간으로 투영되는 변환이 애파인 변환)
행렬 벡터
프로그래밍(ex : dx)에서 많이 사용하는 방식
u = (1,2,3)
이런 방식으로 표현
‘세로 표현식’도 존재
이것을 가로로 표현할땐 반드시 Transpose 했다 표시
벡터와 포인트를 행렬로 표현할때
마지막이 0이라면 ‘벡터’
마지막이 1이라면 ‘포인트’로 구분한다
댓글남기기