어데이드 2018. 4. 30. 15:14

3. 벡터

3.1 벡터의 정의

3.1.1 수벡터

- 위치 벡터(position vector): 위치로서의 벡터

- 수벡터(numerical vector): 순서있는 수치로 조합된 벡터

- 벡터의 성분(component): 배열로 벡터를 표현한 경우 하나하나의 요소

- 행벡터(row vector), 열벡터(column vector)

- 변위(displacement)

3.1.2 기하벡터

- 기하벡터(geometric vector): 좌표계과 관계없이 존재하는 기하학적 벡터

- 크기(magnitude), 방향(direction), 시점(initial point), 종점(terminal point)

- 아핀 공간(affine space): 좌표계와 원점이 없는 기하벡터가 존재하는 장소

3.1.3 스칼라

- 스칼라(scalar): 크기만 있는 일반적인 수치

(vs. 벡터: 크기와 방향이 있는 양)

- 스칼라형 CPU: 명령 하나에 한두개의 데이터를 처리하는 일반 CPU

(vs. 벡터형 CPU: 벡터 계산)

- 슈퍼 스칼라(superscalar): 복수의 실행유닛으로서의 파이프라인 스테이지군을 CPU 내부에 설치함으로써 스칼라형 CPU로 복수 명령의 병렬 실행을 가능케 하는 아키텍쳐(architecture)

3.2 벡터 연산

3.2.1 덧셈, 뺄셈, 교환법칙, 결합법칙

- 덧셈: 교환법칙 성립(commutative)

a+b = b+a

- 역벡터(inverse vector): 뺄셈 표현 가능

a+(-b) = a-b

- 뺄셈: 반가환(anticommutative)

a-b = -(b-a)

- 영벡터(zero vector): 길이 0, 방향 없는 벡터

a+0 = 0+a = a

- 결합법칙 성립(associative)

(a+b)+c = a+(b+c)

3.2.2 스칼라 곱셈, 나눗셈

- 스칼라 수만큼 크기 늘어남

- 분배법칙 성립(distributive)

3.2.3 단위벡터

- 단위벡터(unit vector): 크기가 1인 벡터

본래 벡터 a에 대해 그 단위벡터를 라고 표기

- 정규화(normalize): 단위벡터를 구하는 조작

* 유니티의 Vector3.normalized 프로퍼티

3.2.4 기저와 좌표계

- 선형종속(linearly dependent) <-> 선형독립(linearly independent)

- 기저벡터(basis vector): 선형독립이고 좌표계 표현에 사용할 수 있는 벡터

- 기저(basis): 기저벡터의 집합

- 벡터공간(vector space): 벡터가 만족하는 덧셈과 스칼라곱(scalar multiplication)이 잘 정의된 집합

- 차원(dimension): 벡터공간에서 (좌표계를 나타내는 기저를 구성하는) 기저벡터의 개수

3.2.5 법선벡터

- 법선벡터(normal vector): 어떤 벡터/평면에 수직인 벡터

- 벡터를 그 시점이 속한 면에 수직인 벡터(법선성분, normal component)과 그 면상의 벡터(접선성분, tangential component)로 분해

- 법선벡터는 평면을 나타내는데 사용될 수 있다

3.2.6 크기

- 노름(norm): 벡터의 크기 -> || v ||



- 두 벡터의 크기 비교는 제곱한 값끼리만 비교해도 충분

3.2.7 내적

- 내적(dot product, inner product): 두 벡터를 하나의 스칼라양으로 변환하는 연산 -> a · b

- 내적공간(inner product space): 내적이 추가된 벡터 공간

- a · a = || a || ² 

- a · b = || a || || b || cosθ = ax bx + ay by + az bz

- a와 b가 수직이면(θ = 90) a · b = 0

- 사인, 코사인 등의 초월함수(transcendental function)는 처리비용이 비싸므로 가능하면 내적계산에는 성분표시를 사용

- 교환, 분배법칙 성립, 스칼라 상수 곱할 수 있음, 결합법칙X

3.2.8 벡터의 직교투영

- 직교투영(projection)

- b' = (a · b) b

3.2.9 내적의 응용

- θ = 0 (평행):         a · b = || a || || b ||

- 0 < θ < 90˚:         a · b < || a || || b ||

- θ = 90 (수직):       a · b = 0

- 90 < θ < 180˚:      a · b < || a || || b ||

- θ = 180 (반대):     a · b = - || a || || b ||

- 내적 값의 부호와, a와 b 길이의 곱과 내적의 비교를 통해 두 벡터의 위치관계 파악 가능

3.2.10 외적

- 외적(cross product): 두 벡터에서 새로운 하나의 벡터를 생성하는 연산

- 3차원 이상 벡터에서만 외적 정의 가능

- 외적으로 생성되는 벡터는 두 벡터 a, b에 수직이고, a,b 로 이루어지는 평행사변형의 면적과 크기가 같은 벡터

- a × b = (|| a || || b || sinθ) u

- || a × b || = || a || || b || sinθ

- a, b가 평행이고 θ = 0이면 a × b 는 영벡터

- 교환법칙 성립X

  a × b ≠ b × a

  a × b = -b × a

- 유사벡터(pseudo vector) / 축성벡터(axial vector):  어느 좌표계를 사용하는지에 따라 방향이 바뀌는 벡터

- 극성벡터(polar vector): 좌표계가 변해도 방향이 변하지 않는 일반 벡터

- 벡터 삼중적(vector triple product)

  a × (b × c) = (a · c) b - (a · b) c

  (a × b) × c = (a · c) b - (b · c) a

- 야코비 항등식(Jacobi identity)

  a × (b × c) + b × (c × a) + c × (a × b) = 0

3.2.11 외적의 응용

- 내적은 벡터 직교 판정, 외적 크기는 평행 판정에 사용 간ㅇ

- 삼각형 두 변을 이루는 벡터의 외적을 구해 정규화하면 평면의 법선벡터 계산 가능

3.3 간이 충돌 판정

- 점이 삼각형 외부에 있는지 판정하기:

  점이 안쪽에 있으면 모든 법선벡터는 같은 방향을 향함

  바깥족에 있으면 한 쪽 벡터의 위치관계가 반전되므로 법선벡터의 방향이 반전됨