1장 벡터 대수
이 포스팅의 내용은 DirectX 12를 이용한 3D 게임 프로그래밍 입문 (프랭크 D. 루나 저) 책과 인터넷을 참고하여 간단히 정리하였다.
- 벡터의 정의
'벡터(vector)'는 크기와 방향을 모두 가진 수량을 가리키는 말이다.
벡터의 예로는 힘(force)이 있다. 힘은 특정한 방향과 세기로 가해지기 때문이다.
개미가 북쪽으로 10미터 나아가는 것도 벡터라고 할 수 있다. 크기는 10미터이고 방향은 북쪽이 된다.
벡터는 위 그림과 같이 표현할 수 있다.
선분의 길이는 벡터의 크기를 나타내고, 화살표는 방향을 나타낸다.
화살표가 있는 방향을 '머리'라 하고, 화살표가 없는 반대편을 '꼬리'라고 한다.
벡터의 중요한 성질은, 위치는 무관하다는 것이다.
그러니까 크기와 방향이 같다면 그 위치가 달라도 두 벡터는 동일하다.
왼손잡이 좌표계와 오른손잡이 좌표계
(이미지 출처 : http://www.learnopengles.com/understanding-opengls-matrices/left_right_hand/)
2D 그래픽을 표현할 때에는 그냥 2차원 좌표계(x와 y만 존재하는)를 사용하면 되지만, 3D 그래픽을 표현할 때에는 z축의 방향에 따라 좌표계가 달라진다.- 기본적인 벡터 연산들
두 벡터가 있다.
1. 두 벡터가 동일하려면 각 좌표의 성분이 모두 같아야만 동일하다.ex)
일때에만
이다.
2. 벡터의 덧셈은 각 성분별로 이루어진다.ex)
3. 벡터에 스칼라(scalar, 크기만 있는 것)를 곱할 수 있으며 벡터에 스칼라를 곱하면 결과는 벡터이다.ex) 스칼라 K를 벡터 V에 곱하면
4. 벡터의 뺄셈은 벡터 덧셈과 스칼라 곱셈을 통해서 정의된다.ex)
참고로 벡터에 부호를 바꾸면 방향이 완전 반대가 된다. 벡터에 스칼라를 곱셈하면 벡터의 크기(길이)가 늘어난다.
- 벡터의 크기
<- 벡터의 크기는 수식으로 이렇게 표현한다. 벡터의 크기는 피타고라스의 정리를 2번 이용하면 나오는 데 어려운 이야기는 건너뛰고 벡터 크기의 공식은 아래와 같다.
- 단위 벡터(unit vector)
벡터의 크기는 중요하지 않고, 방향만 필요할 때가 있다. 그럴 때 단위 벡터를 사용하고, 어떤 벡터를 단위 벡터로 만드는 것을 정규화(normalization)이라고 부른다. 벡터의 각 성분을 벡터의 크기로 나누면 벡터가 정규화된다.
- 벡터의 내적(dot product)
내적의 정의만 봐서는 내적의 기하학적 의미가 분명하지 않은데, 코사인 법칙을 적용해보면 다음과 같은 관계를 찾아낼 수 있다.
여기서 θ는 벡터 u와 v사이의 0보다 크거나 같고 파이보다 작거나 같은 값을 만족하는 각도 값이다.
- 벡터의 외적(cross product)
또 다른 벡터의 곱셈으로는 외적이 있다.
내적은 결과가 스칼라가 나왔지만 외적은 벡터가 나온다. 또한 외적은 3차원 벡터에 대해서만 적용된다.(2차원 벡터는 외적이라는 개념이 없다) 그리고 외적은 교환법칙이 성립되지 않는다.
외적을 이용하면 두 벡터의 직교인 벡터가 나온다.
두 벡터가 있을 때 이 둘을 외적한 벡터 w는 아래와 같이 구할 수 있다.
외적한 벡터 w는 벡터 u와 벡터 v에 대해서 직교인 벡터이다.
왼손을 펼쳐서 첫 벡터 u의 방향을 가리킨 상태에서 둘째 벡터 v의 방향(첫 벡터와의 각도가 90도 이하가 되는 쪽)으로 말아쥐었을 때 엄치 손가락이 가리키는 방향이 바로 w(직교 벡터) = u x v의 방향이다. 이를 왼손 엄지 법칙(left-hand-thumb rule)이라 부른다. 위 그림을 보고 직접 한번 해보면 이해가 빠르게 될 것이다.
위치 벡터(점)
'DirectX 12 > 기초 수학' 카테고리의 다른 글
3장 변환 (0) | 2019.03.24 |
---|---|
2장 행렬 대수 (0) | 2019.03.13 |