수식



활용


  • 두 벡터에 수직인 벡터를 구할 수 있다.
  • 두 벡터가 이루는 평행사변형의 넓이를 구할 수 있다.
  • 회전 방향을 판정할 수 있다. (시계 방향 / 반시계 방향)
  • 법선 벡터(Normal Vector)를 계산할 수 있다.

원리


두 벡터에 수직인 벡터 구하기


에 따르면 두 벡터의 외적은 A벡터의 크기 * B벡터의 크기 * 두 벡터 사잇각의 사인 * 단위 법선 벡터이다.

여기서 은 A와 B 두 벡터에 모두 수직인 단위 벡터이다. 외적의 결과는 두 입력 벡터에 모두 수직인 벡터가 된다.

Vector A, B;
 
Vector perpendicular = Cross( A, B );
perpendicular.Normalize();  // 단위 법선 벡터로 만들기

의사 코드로 표현한 두 벡터에 수직인 벡터를 구하는 방법이다.


오른손 법칙 (Right-Hand Rule)


외적의 방향은 오른손 법칙을 따른다:

  1. 오른손 검지를 첫 번째 벡터 A 방향으로 향하게 한다.
  2. 중지를 두 번째 벡터 B 방향으로 향하게 한다.
  3. 엄지가 가리키는 방향이 A × B의 방향이다.

주의: B × A = -(A × B) 외적은 교환법칙이 성립하지 않는다.


평행사변형의 넓이 구하기


외적의 크기는 두 벡터가 이루는 평행사변형의 넓이와 같다. 따라서 삼각형의 넓이는 외적 크기의 절반이 된다.

Vector A, B;
 
Vector crossProduct = Cross( A, B );
float parallelogramArea = crossProduct.Length();
float triangleArea = parallelogramArea * 0.5f;

의사 코드로 표현한 평행사변형과 삼각형 넓이를 구하는 방법이다.


회전 방향 판정


2D 평면에서 벡터 A에서 벡터 B로의 회전 방향을 판정할 수 있다.

Vector2D A, B;
 
// Z축 성분만 계산 (2D에서는 X, Y가 0)
float crossZ = A.x * B.y - A.y * B.x;
 
if ( crossZ > 0 )
{
    // 반시계 방향 (Counter-Clockwise)
}
else if ( crossZ < 0 )
{
    // 시계 방향 (Clockwise)
}
else
{
    // 평행 (Parallel)
}

특성


교환법칙 불성립

분배법칙 성립

자기 자신과의 외적은 0

평행한 벡터의 외적은 0