유니티 두 지점 간 거리 구하기, 삼각형의 빗변 구하기 (피타고라스 정의)

2021. 11. 30. 16:28유니티 수학 - 수포자

반응형

수포자를 위한 게임 수학

출처 유튜브 영상

https://www.youtube.com/watch?v=d-5pcuWrUEA&list=PL-xqYJ8bjgMC-p94R7iXjFCs-znRg93PJ&index=2

 

수학은 영어로도 알고 있어야 자료 찾을 때 수월하다고 합니다.

두 지점(A지점, B지점) 간 거리를 구하기 위해서, 삼각형의 빗변을 구하는 방법으로 사용하고

이 때 피타고라스의 정리로 계산 후 Itween.MoveTo(obj오브젝트, dst거리, time시간)으로 적용합니다. 

직각삼각형은

  밑변과 높이의 90도 각도를 이루고, 빗변(HYPOTENUSE)을 가짐.

  이때  빗변C제곱 = 높이A제곱 + 밑변B 제곱  

          빗변C =  전체 루트 높이A제곱 + 밑변B 제곱

 

 

여기서 잠시 정사각형을 잠깐 생각해보면

정사각형 넓이(면적)은 한 변 x 한변 = 한변의 제곱이다

삼각형으로 다시 돌아가보면, 

삼각형 밑변B 정사각형 제곱 + 높이A 정사각형 제곱 =  삼각형빗변 정사각형

 

 

따라서 삼각형의 빗변 = 두 지점간 거리 라고 생각해서 다음과 같은 좌표의 거리를 구한다고 치면

 

밑변은 100-20(X) = 80이 되고, 높이는 80-20(Y) =60이 되므로 

빗변제곱 = 80제곱 + 60 제곱

 

빗변은  = 더한 값의 제곱근임 (1000은 실수임. 10000이 맞다)

제곱근 계산은 여기 사이트 참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sbssbi69&logNo=220221686187 

 

1. 제곱과 제곱근 (개념 기초)

저는 선행학습에 크게 찬성하지는 않는 사람입니다. 왜냐하면 섣부른 선행학습은 자칫 수학 공부하는 습관...

blog.naver.com

 

따라서 10000(1000아님)제곱근으로 구한 빗변 길이는 100 이 된다.

 

다시 ITween으로 돌아가서, 

 

1초당 40씩 이동한다고 쳤을 때

빗변 100 / 40 을 하게 되고  이것이 time이라고 한다.

 Itewwn.MoveTo(오브젝트obj , 거리 dst, 시간 time)

 

 

+ 그냥 개인적인 생각...

학원에서 마지막 팀 프로젝트를 할 때 터레인으로 잠깐 레벨디자인 지형 만든 적 있었는데(따로 안 배움)

눈썰매를 pc버전에서 (Physics material)을 이용해서 구현 해본 적 있었음.

(터레인 콜라이더가 프레임 부하에 영향이 커서 low poly asset으로 결국 대체해서 눈썰매도 제외시킴.)

 

이 때 플레이어 x,y높이 - 미끄러져 도착할 예정 지점의 x,y 값으로  언덕 기울기를 구할 수 있지 않았을까 싶어지기는 함.

 

터레인의 높이를 구하는 이런 함수도 있다고 하니 필요하다면 적용해볼 수도 있었을까...??

float height = Terrain.activeTerrain.SampleHeight(transform.position);

 

아 그리고 터레인 자체 크기를 조정하는 것은 터레인 오브젝트 인스펙터창의 톱니바퀴 하위 항목에 있더라..

 

 

 

 

 



 

   

 

반응형