행렬 0x0B: 벡터의 외적 (Cross Product)
벡터의 외적 (Cross Product)
3차원 벡터의 외적은 두 3차원 벡터가 이루는 평면에 수직인 새로운 벡터를 생성하는 연산이다.
3차원 벡터 $ A, B $의 외적은 다음과 같이 정의된다.
\[A = \begin{pmatrix} A_x \\ A_y \\ A_z \end{pmatrix}\] \[B = \begin{pmatrix} B_x \\ B_y \\ B_z \end{pmatrix}\] \[C = A \times B = \begin{pmatrix} C_x \\ C_y \\ C_z \end{pmatrix}\]이 때, $ C $의 성분은 다음과 같다.
\[C_x = A_y B_z - A_z B_y\] \[C_y = A_z B_x - A_x B_z\] \[C_z = A_x B_y - A_y B_x\]유용한 특성
- $ C $는 $ A, B $와 모두 수직인 벡터이다.
- $ C $의 길이(유클라디안 노름)는 $ A, B $가 이루는 평행사변형의 면적과 같다.
- 교환법칙이 성립하지 않고, 다음과 같은 반대 성질이 있다.
C++ 코드
template<class K, u64 N>
Vector<K, 3> Vector<K, N>::CrossProduct(const Vector<K, 3>& lhs, const Vector<K, 3>& rhs)
{
return {
lhs[1] * rhs[2] - lhs[2] * rhs[1],
lhs[2] * rhs[0] - lhs[0] * rhs[2],
lhs[0] * rhs[1] - lhs[1] * rhs[0],
};
}
Leave a comment