1. 내적 (Dot Product)
공식
성분으로 계산하면
결과값
- 스칼라(숫자) 반환
- 방향 정보 없음, 크기만 있음
직관적 이해
두 벡터가 얼마나 같은 방향을 향하는지 나타낸다.
θ = 0° → 내적 최대 (완전히 같은 방향)
θ = 90° → 내적 = 0 (수직)
θ = 180° → 내적 최소 (완전히 반대 방향)
주요 활용
| 활용 | 방법 |
|---|---|
| 두 벡터 사이 각도 | θ = arccos(A·B / |A|B|) |
| 수직 여부 확인 | A·B = 0 이면 수직 |
| 같은 방향 여부 | A·B > 0 이면 같은 방향 |
| 법선 방향 성분 추출 | (V·N)N |
float Dot(Vector3 A, Vector3 B) {
return A.x*B.x + A.y*B.y + A.z*B.z;
}2. 외적 (Cross Product)
공식
a = (ax, ay, az)
b = (bx, by, bz)
a × b =
(
ay * bz - az * by,
az * bx - ax * bz,
ax * by - ay * bx
)
결과값
- 벡터 반환
- A와 B 모두에 수직인 방향
직관적 이해
두 벡터가 만드는 평면의 수직 방향을 구한다.
A × B
↑
|
B ──────+
/
A
오른손 법칙: A에서 B 방향으로 손가락을 감으면 엄지가 외적 방향
주요 활용
| 활용 | 방법 |
|---|---|
| 법선 벡터 계산 | 삼각형의 두 변을 외적 |
| 두 벡터의 수직 방향 | A × B |
| 회전 방향 판단 | 외적 부호로 좌/우 판단 |
Vector3 Cross(Vector3 A, Vector3 B) {
return Vector3(
A.y*B.z - A.z*B.y,
A.z*B.x - A.x*B.z,
A.x*B.y - A.y*B.x
);
}3. 내적 vs 외적 비교
| 내적 | 외적 | |
|---|---|---|
| 결과 | 스칼라 | 벡터 |
| 의미 | 얼마나 같은 방향인가 | 두 벡터의 수직 방향 |
| 주요 용도 | 각도, 법선 성분 추출 | 법선 벡터, 회전 방향 |
| 3D 전용 | ❌ (2D 가능) | ✅ (3D 전용) |
4. 예제
내적으로 각도 구하기
A = (1, 0, 0), B = (0, 1, 0)
A·B = 1×0 + 0×1 + 0×0 = 0
→ cos(θ) = 0
→ θ = 90° (수직)
외적으로 법선 구하기
A = (1, 0, 0), B = (0, 1, 0)
A × B = (0×0 - 0×1, 0×0 - 1×0, 1×1 - 0×0)
= (0, 0, 1)
→ z축 방향 (위쪽)