-
API를 활용한 파티고라스의 정리를 이용한 거리 구하기Algorithm with C/Math 2020. 10. 10. 12:30
[그림출처 : 네이버지식백과]
게임에서, 플레이어와 에너미와의 거리를 구하기 위해서, 위의 피타고라스 정리를 이용해서
거리를 구할 수 있다.
위의 내용을 가지고 API로 구현해보자. 먼저 변수부터 보자.
변수들은 모두 전역 변수이다.
x,y가 플레이어의 좌표이며, x_2와 y_2는 에너미의 좌표이다.
우리가 구할 것은 플레이어와 에너미의 거리이다.
플레이어와 에너미의 거리를 담는 변수는 Distance이다.
sqrtf함수는 루트함수이다.
점을 딱히 표현할 방법이 없어서, 원으로 표기를 한다.
(x,y)는 원의 좌측상단점이며, (x+diameter, y+diameter) 는 원의 우측하단점이 된다.
아래의 함수는 각 방향 키의 입력에 따라 좌표값을 업데이트 한다.
아래에서 아래 방향키가 눌리면 y값이 작아져야 할 것이라 생각하지만, API의 좌표계는
좌측상단이 원점이며, 오른쪽으로 갈수록 x축 값이 커지고 아래로 갈수록 y값이 커진다.
즉, 아래 방향키가 눌리면 y값이 커져야 한다.
아래의 함수는 두 원 간의 거리를 구하는 함수이다.
아래는 위의 함수들의 호출되는 부분이다.
소스코드를 그림으로 도식화
Distance = 루트( Width * Width + Height * Height ) 가 된다.
즉, 프로그램 상에서는
Distance = sqrtf( Width * Width + Height * Height ) 로 작성해주면 된다.
프로그램 실행결과
위 동영상에서 가만히 있는 것이 에너미이며, 움직이는 것은 플레이어이다.
동영상에서 숫자가 변하는 것을 볼 수 있는데, 숫자가 에너미와 플레이어 간의 거리이다.
소스 파일
'Algorithm with C > Math' 카테고리의 다른 글
평면의 방정식을 활용한 마인크래프트 블록 붙이기(Unity 활용) (0) 2020.11.30 세 점을 입력받아 삼각형의 성립 조건 구하기 (0) 2020.10.14 행렬의 응용 Scale & Rotation (0) 2020.10.07 행렬의 기본 연산과 행렬식,역행렬, 단위행렬 (0) 2020.10.04 API를 활용한 반사벡터 구현 (0) 2020.10.03