[DX] 벡터의 직교화(Orthogonalization)와 외적(Cross Product)

김진우·2025년 6월 23일

DirectX

목록 보기
4/32
post-thumbnail

벡터의 직교화 (Orthogonalization)

정의

주어진 벡터 집합을, 서로 직교(수직)하는 벡터 집합으로 변환하는 과정
즉, 여러 벡터들이 있을 때, 이들을 서로 수직이 되도록 만드는 작업이다.

만약 이 벡터들이 모두 단위벡터(길이가 1인 벡터)가 되면 정규직교(orthonormal) 집합이 된다.

직교 : 두 벡터의 내적이 0이면 서로 직교(orthogonal)하다고 한다.

대표적인 직교화 방법

  • 그람-슈미트(Gram-Schmidt) 직교화
    여러 벡터가 있을 때, 차례로 하나씩 뽑아 이미 직교화된 벡터들에 대해 성분을 제거해가며 직교 벡터를 만든다.

예시

백터 a와 b가 있을 때,
1. 첫 번째 벡터는 그대로 사용한다.
        u1=a\ u_1 = a
2. 두 번째 벡터에서 첫 번째 벡터 성분을 제거한다.
       u2=bbu1u1u1u1u_2 = b - \frac{b \cdot u_1}{u_1 \cdot u_1} u_1

이렇게 하면  u1\ u_1 u2\ u_2는 직교하는 벡터가 된다.



벡터의 외적 (Cross Product)

정의

3차원 벡터 두 개를 이용해, 두 벡터 모두에게 수직인 새로운 벡터를 만드는 연산이다.
수학 기호로는 𝑎×𝑏로 표현되고, 벡터 a에서 벡터 b로 회전 한다는 기준이다.

외적 벡터의 크기는  absin(0)\ |a| \cdot |b| \cdot sin(0)이다.
여기서 0는 a와 b 사이의 각도이다.

특징 (왼손좌표계 기준)

axb는 a와 b 둘 다에 수직이다.
벡터의 순서를 바꾸면 부호가 반대가 된다.

계산 방법

계산 공식 자체는 좌표계와 무관하게 동일하지만, 방향 해석에서 좌우가 다르다.

두 벡터 a=(ax,ay,az),b=(bx,by,bz)\mathbf{a} = (a_x, a_y, a_z), \quad \mathbf{b} = (b_x, b_y, b_z)에 대해 외적은 다음과 같이 계산된다.

            a×b=(aybzazby, azbxaxbz, axbyaybx)\mathbf{a} \times \mathbf{b} = \left( a_y b_z - a_z b_y,\ a_z b_x - a_x b_z,\ a_x b_y - a_y b_x \right)

좌표계에 따른 방향 해석:

  • 오른손 좌표계에서는
    a\mathbf{a}에서 b\mathbf{b}로 감을 때, 오른손 엄지 방향 (보통 위쪽)으로 외적 벡터가 솟아난다.

  • 왼손 좌표계에서는
    같은 외적 수식을 사용하지만, 방향 해석은 왼손 엄지 방향을 따라야 하므로,
    오른손 좌표계 기준 외적 방향의 반대 방향이 된다.

예시

a = (1, 0, 0) // x축 방향
b = (0, 1, 0) // y축 방향

a × b = (0, 0, 1)

오른손 좌표계: 결과는 z축 양의 방향 ↑
왼손 좌표계: 결과는 z축 음의 방향 ↓

0개의 댓글