Search
Duplicate
🍙

벡터의 외적으로 알아보는 “N각형 내 점이 있는지 구별하기”

간단소개
벡터의 외적
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
수학
Scrap
태그
벡터연산
9 more properties

1. 벡터의 외적이란?

1) 벡터곱(cross product)

먼저 이 글에서 다룰 외적은 벡터곱(cross product, 이하 외적)으로 정의하겠습니다. 외적이란 벡터의 스칼라곱과는 다르게 크기와 방향을 가지게 되는 벡터간의 곱연산이라고 말할 수 있습니다. 외적은 주로 돌림힘이나, 각운동량같이 회전과 관련된 물리량을 측정할 때 사용됩니다.

2) 그래서 외적은 어떻게 하는건데?

외적의 표현은 아래와 같이 X(cross)를 사용하여 나타내게 됩니다. 아래의 공식은 돌림힘 토크에 대한 공식으로 돌림힘은 작용점과 고정점 사이의 위치벡터(r), 작용점에 작용하는 힘 벡터(F)의 외적과 같다라는 표현을 통해 나타낼 수 있습니다.
τ=r×F τ = r × F
연산 방법에 대해서는 우리가 알아볼 N각형 내부의 점이 있는지 알아보기 위한 장치로 3차원 공간에서의 벡터에 대해서만 행렬식을 이용한 방법으로 말하겠습니다. 이 때, i, j, k는 각각 단위벡터로 x, y, z를 나타낸다고 생각하시면 됩니다
A=a1iˆ+a2jˆ+a3kˆB=b1iˆ+b2jˆ+b3kˆC=A×BC=det[iˆjˆkˆa1a2a3b1b2b3]C=iˆ(a2b3a3b2)jˆ(a1b3a3b1)+jˆ(a1b2a2b1)A = a_1\text{\^{i}} + a_2\text{\^{j}} + a_3\text{\^{k}} \\ B = b_1\text{\^{i}} + b_2\text{\^{j}} + b_3\text{\^{k}}\\ \\C = A × B\\C = det\begin{bmatrix} \text{\^{i}} & \text{\^{j}} & \text{\^{k}} \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{bmatrix} \\ C = \text{\^{i}}(a_2b_3 - a_3b_2) - \text{\^{j}}(a_1b_3 - a_3b_1) + \text{\^{j}}(a_1b_2 - a_2b_1)
이제 우리는 벡터의 외적연산 방법을 알았습니다!

2. 이제 벡터의 외적을 통해 N각형 안에 점이 있는지 알아보자!

위 글을 먼저 읽고 와주시길 바랍니다! 위 글을 읽으셨다면 글 중간에 언급된, clockwise를 보셨을 것입니다. 이 부분에 대해 생각해보면, 연결되어 있는 변에 대해서 만약 점과 그 변이 이루는 각이 모두 시계방향이거나, 모두 반시계방향이면 그 도형 내부에 점이 있다고 생각할 수 있습니다. 물론 각이 0이 된다면 이는 도형 내부가 아닌 변 위에 혹은 외부에 있다고 생각이 가능합니다. 이러한 것들을 봤을 때, 우리는 바로 이전에 배운 외적으로 그 각이 시계방향인지, 반시계방향인지 알 수 있게 됩니다. 삼각형의 경우를 생각하겠습니다.
AC=(x3x1)iˆ+(y3y1)jˆCB=(x2x3)iˆ+(y2y3)jˆBA=(x2x1)iˆ+(y2y1)jˆAC×AP,   CB×CP,   BA×BP\overrightarrow{AC} = (x3 - x1)\text{\^{i}} + (y3-y1)\text{\^{j}} \\\overrightarrow{CB} = (x2 - x3)\text{\^{i}} + (y2-y3)\text{\^{j}}\\ \overrightarrow{BA} = (x2 - x1)\text{\^{i}} + (y2-y1)\text{\^{j}}\\ \overrightarrow{AC} × \overrightarrow{AP},\space\space\space \overrightarrow{CB} × \overrightarrow{CP},\space\space\space \overrightarrow{BA} × \overrightarrow{BP}
위처럼 이제 3개의 외적을 계산하면, 모두 k방향의 벡터로 나오게 되고, 이 부분에서 음수인지 양수인지를 통해 모두 부호가 같다면, 모두 시계방향인지, 반시계방향인지 알 수 있게 되는 것입니다. 만약 중간에 부호가 다른 것이 하나가 있다면 이는 삼각형 내부에 점이 있지 않다는 것을 의미하게 됩니다. cheseo님의 글에서 나온 sign함수는 이처럼 외적을 하여, k방향의 벡터의 부호에 따라 모두 같은지 혹은 다른지를 구분하여 삼각형 내부에 있는 점인지 판별하는 방법이라는 생각이 들었습니다.

2) 그래서 N각형은?

N각형에서는 삼각형의 경우와 똑같은 방법을 사용하면 가능합니다. 한 변을 이루는 두 점의 위치벡터와, 그 중 첫번째 점과 P라는 점 사이의 위치벡터를 구해서 외적을 하고, 이 외적의 부호를 모두 비교해서 동일하면, 그 N각형 내부에 있는 점이라고 할 수 있습니다!
혹시 내용 중 틀리거나 잘못 이해한 부분은 알려주시길 바랍니다.

참고자료