수학은 게임에서 정말 많이 사용된다.
2D 게임이든, 3D게임이든 어떤 가상 공간을 표현하려면 좌표계가 있어야 하고 이 좌표계에 따라 위치와 방향을 표현할 수 있다.
두 점 사이의 거리를 계산할 때는 어떻게 해야 할까?
// 1차원 좌표계
function distance(x1: number, x2: number) {
return Math.abs(x1 - x2);
}
1차원 좌표계에서는 꽤 간단하다.
내 위치에서 상대 위치를 뺀 값을 절대값으로 반환하면 나와 상대방의 거리를 계산할 수 있다.
절대값이란?
수의 크기를 나타내는 개념으로 수의 차이를 계산하거나, 거리를 계산하거나, 함수의 정의를 양수로 제한하는 등 다양하게 많이 사용되는 개념이다.
예시를 들면,
X가 0인 수평 좌표계에서 5의 위치는 X로부터 5만큼 떨어져있다고 볼 수 있고 -5의 위치 또한 X로부터 5만큼 떨어져있다고 볼 수 있다. 즉, -5든 5든 X로부터의 거리는 5이다. 이를 절대값이라고 말할 수 있다. 이렇듯 수치를 비교할 때 많이 사용된다. 절대값 개념이 어렵다면 음수를 양수로 변환한다고 생각하면 쉽다.
// 2차원 좌표계 이상
function distance(x1: number, y1: number, x2: number, y2: number) {
return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
}
2차원 좌표계부터 피타고라스 정리를 사용하여 구할 수 있다.
이 상태에서 빗변을 구하면 나와 상대방의 거리를 계산할 수 있다.
피타고라스 정리란?
직각 삼각형에서 각 변의 길이에 관련된 중요한 관계를 정리해둔 수학적 원리이다. 이를 통해 밑변과 높이를 알고 있다면 빗변을 구할 수 있으며 빗변과 밑변을 알고 있다면 높이를 구할 수도 있는 등 다른 변의 길이를 구할 수도 있다.
예시를 들면,
직각삼각형을 2차원 좌표계에 빗대어 보면 X좌표를 밑변, Y좌표를 높이로 대변할 수 있으며 이 상태에서 빗변을 구한다면 거리를 구하는 것이나 다름없다.
// 3차원 좌표계
function distance(x1: number, y1: number, x2: number, y2: number, z1: number, z2: number) {
return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2 + (z2 - z1) ** 2);
}
3차원 좌표계는 2차원 좌표계와 마찬가지로 피타고라스 정리를 이용하면 된다.
3차원에서도 직각삼각형의 형태를 가지고 있기 때문에 직각삼각형에 대한 일반적인 원리를 다루는 피타고라스 정리를 사용할 수 있다.
'즐거운 게임 수학' 카테고리의 다른 글
특정 좌표가 원 안에 있을 때 감지하기 (0) | 2023.06.05 |
---|---|
선형 보간법(linear interpolation) (0) | 2023.06.05 |
특정 각도에서 일정 거리의 좌표 구하기 (0) | 2023.06.05 |
각도의 단위, 라디안(radian)과 디그리(degree) (0) | 2023.06.05 |
두 점의 각도 구하기 (0) | 2023.06.03 |