Game Development, 게임개발/게임 수학,물리

아핀 공간, Affine Space - 2 [게임수학]

게임이 더 좋아 2021. 3. 31. 22:03
반응형
728x170

저번 시간에는 선을 배웠으니

이제 면을 배워볼 시간이다.

 

선을 만들 때

두 점의 아핀 조합을 통해 만들었다.

면을 만들 때는

세 점의 아핀 조합을 통해서 만든다.

 

알아보자

 


 

면도 매개변수 방정식으로 표현될 것 같다는 느낌이 든다.

맞다.

 

한 평면에 점 3개  A, B, C가 있다면 저렇게 표현할 수 있다.

 

어디서 많이 봤다. 

평면의 방정식에서 본거 같은데?

 

점과 점의 뺄셈 계산으로 벡터를 만들어서  점 하나와 2개의 벡터 계산으로 바꿀 수 있다.

 

 

++3차원 공간에서 선을 표현할 때는 매개변수 방정식으로 많이 표현하지만

++3차원 공간에서 면을 표현할 때는 매개변수 방정식도 괜찮지만 일반화해서 나타낼 수 있다.

-> 3D 게임에서 평면을 다룰 땐 매개변수보다 일반화 방정식이 더 이해하기 편함.

뒤에 이유 나옴

 


우리는 고등학교에서 어떻게 배웠냐??

 

한 점과 법선벡터가 있다.

각각 P , n이다.

 

 

2개 있으면 ㅇㅋ 평면 다만든다.

 

임의의 평면의 점 Q에 대해서 성립해야 그것이 평면이다.

 

 

즉, 어떤 Q를 잡더라도 그 벡터와 법선벡터를 내적하면 0이 나와야 한다.

왜냐..? 법선벡터 정의가 평면에 수직인 벡터니까

 

 

와 우리가 알던 평면의 방정식이다!!

 

매개변수 너무 어려웠는데 기하학적으로 해석하니까 너무 좋다 ㅎㅎ

 

여기서 n과 P의 내적이 생기는데 이걸 d로만 고치면 교과서에 그대로 나와있는 식이 된다.

 

 


 

 

우리는 이렇게 알고 있지만

법선벡터는 단위벡터인게 좋다. 

-> 점과 평면 직선거리를 쉽게 구함

**당연히 정규화시키려면 크기로 나누면 된다. 나머지 성분들도 변한다는 것을 유의하자.

 

 

우리는 평소에 한 점과 법선벡터로 평면의 방정식을 구했다.

그렇다면 세 점으로는 어떻게 평면을 구할까?

짧게 말하면 세점으로 2개의 벡터를 만들고 외적을 하면 법선벡터가 나올 것이다.

또 나머지 한점으로 위와 똑같이 진행하면 된다.

-> 사실 고등학교에서는 외적은 교과과정 밖이라고 다르게 구했지만..ㅎ 

 

 

하지만 여기서 법선 벡터가 2개가 나올 수 있다.

우리가 생각하는 앞으로 나올지, 뒤로 나올지는 외적의 계산 순서에 따른다.

 

동일한 평면을 가리키지만 평면의 방향은 게임에서 중요한 의미를 가진다.

** 공간의 임의의 점이 평면의 앞에 있는지 뒤에 있는지를 평면의 방향을 기준으로 판단하기 때문이다.

 


??? 그게 무슨 소리???

 

예를 들어 절두체라는 공간을 가져온다. 

**절두체란 이렇게 6개의 평면으로 닫힌 공간이다.

 

평면의 법선벡터가 화살표 방향이라면

저 공간 안에 있는 점은 모든 평면에 대해서 앞의 방향에 존재한다고 말할 수 있다.

 

저런식으로 우리가 평면으로 둘러쌓여 만들어진 공간이 있을 때 평면의 방향이 아주 중요한 의미를 가진다.

** 우리가 게임 속에서 보는 3D 오브젝트는 면으로 이루어졌다고 볼 수 있다. 겉과 안을 구분하는 것은 정말 중요한 의미를 가질 것이다.

 


 

??? 근데 수식적으로는 앞인지 뒤인지 어떻게 알아????

 

그냥 그 점을 대입해보면 된다.

 

계산해서 양수나오면 앞에 있고

음수 나오면 뒤에 있다.

당연히 0 나오면 평면 상에 있다.

 

매개변수가 아니라 일반화 방정식으로 쓰이는 이유가 여기 있다.

바로 대입하면 어디에 있는지 알 수 있다.

 

**아까 법선벡터가 단위벡터면 좋다고 했지.

법선벡터가 단위 벡터라면 그 점을 대입한 값을 절댓값 취하면 바로 그 점과 평면 사이의 거리가 된다.

아니면 법선벡터의 크기만큼 나눠주면 된다.

 


 

임의의 점이 주어졌을 때 같은 평면 상에 존재하는지 구별하는 법을 알고

면은 여기서 그만 마치도록 하자.

 

A, B, C, D 가 주어졌다.

++ 아무래도 평면의 방정식의 본질을 이용하니까 법선벡터를 이용할 것 같다는 느낌이다.

 

각 점을 이용해서 벡터를 만든다.

 

4 점이 다 같은 평면상에 있다면

3개 중 2개의 벡터는 외적하고 그 결과를 나머지 남은 벡터와 내적해서 0이 나오면 그 3개의 벡터는 동일 평면 상에 존재한다고 말할 수 있다.

728x90
반응형
그리드형