본문 바로가기
programming language/MATLAB

MATLAB cross product, 삼각형의 면적, 평행 육면체의 부피

by __observer__ 2011. 3. 21.
반응형

MATLAB 의 cross product함수로 cross() 라는 함수를 제공합니다. 본 함수는 cross(A,B) 형태로 이용을 하며 A,B 는 인자가 3개 여야 합니다. 그렇지 않으면 에러가 납니다.

 

보통 cross product(외적) 는 x 기호로 나타내고 dot product (내적) 은 점(∙) 기호로 나타냅니다.

 

일단 그 수학적인 정의에 대해 살펴 보겠습니다. 벡터 A= 이고 벡터 B = 인 경우 cross product 는 A x B 로 표현이 되고 dot product 는 A ∙ B 로 표현이 되며 그 결과는 다음과 같습니다.

A x B= =

A ∙ B=

 

cross product 는 몇 가지 특징이 있습니다. A x B 는 A, B 에 직교 합니다.

 

즉 A,B 에 의해 이루어 지는 면적에 직교 한다는 뜻입니다. 마찮가지로 B x A 역시 A, B 에 직교 합니다.

 

하지만 AxB ≠ BxA 입니다. AxB 와 BxA 은 크기는 같고 방향은 반대인 벡터가 되게 됩니다.

 

이제 다음과 같은 평행 사변형에서 어떻게 적용이 되는지 살펴 보겠습니다.

위 평행 사변형의 면적은 가 됩니다. 위 식에서 절대값 기호( | | ) 는 벡터의 크기를 의미하는 것입니다.

 

두 벡터 A,B 가 이루는 삼각형의 넓이는 당연히 평행 사변형의 1/2 이 되게 되겠죠.

 

이제 몇 가지 예를 들어보죠~ 공간상의 점 A=(2, 3, 4), B=(4, 5, 6) 에 대해 위 공식을 이용하여 A, B 로 구성되는 평행 사변형의 면적과 삼각형의 면적을 구해 보겠습니다.

 

A=[2 3 4]

A =

2 3 4

 

B=[4 5 6]

B =

4 5 6

 

Cross_P= cross(A,B)

Cross_P =

-2 4 -2

 

Cross_P2= cross(B,A)

Cross_P2 =

2 -4 2

 

norm(cross(Cross_P, Cross_P2))

ans =

0

위 결과에서 두 값의 cross product 의 norm 값이 0 이므로 두 벡터는 평행 하다.

 

dot(Cross_P, A)

ans =

0

위 결과에서 두 벡터의 dot product 가 0 이므로 두 벡터는 수직이다.

 

trapz_area=norm(Cross_P) % 평행 사변형의 면적

trapz_area =

4.8990

 

Triangular_area=norm(Cross_P)/2 % 삼각형의 면적

Triangular_area =

2.4495

 

다음으로 다음과 같은 평행 육면체에 대해 살펴 보겠습니다.

 

위 그림과 같은 평행 육면체의 부피는 벡터 A, B 가 이루는 면적 *(곱하기) 평행 육면체 높이 가 됩니다.

 

위에서 설명 드린 데로 A, B 가 이루는 면적은 이고 평행 육면체의 높이는 가 되게 됩니다.

 

스칼라 삼중곱의 형태로 표현이 되며 결과적으로 다음과 같이 표현됩니다.

 

 

결과적으로 벡터 A, B, C 로 구성되는 평행 육면체의 부피는 다음과 같은 식이 성립하게 되겠죠

 

=====

 

그럼 이제 A=[0 1 3], B=[4 5 6], C=[5 9 17] 로 구성된 평행 육면체의 부피에 대해 알아보죠

 

A=[0 1 3]

A =

0 1 3

 

B=[4 5 6]

B =

4 5 6

 

C=[5 9 17]

C =

5 9 17

 

norm(dot(C,cross(A,B)))

ans =

5

 

norm(dot(C,cross(B,A)))

ans =

5

 

norm(dot(A,cross(B,C)))

ans =

5

 

norm(dot(A,cross(C,B)))

ans =

5

 

norm(dot(B,cross(A,C)))

ans =

5

 

norm(dot(B,cross(C,A)))

ans =

5



반응형

댓글