[GM] 3.벡터
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 간이 충돌 판정
- 점이 삼각형 외부에 있는지 판정하기:
점이 안쪽에 있으면 모든 법선벡터는 같은 방향을 향함
바깥족에 있으면 한 쪽 벡터의 위치관계가 반전되므로 법선벡터의 방향이 반전됨