즐거운 게임 수학

두 점의 거리 계산하기

2023. 6. 3. 01:47

수학은 게임에서 정말 많이 사용된다.

 

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
'즐거운 게임 수학' 카테고리의 다른 글
  • 선형 보간법(linear interpolation)
  • 특정 각도에서 일정 거리의 좌표 구하기
  • 각도의 단위, 라디안(radian)과 디그리(degree)
  • 두 점의 각도 구하기
S.H.S
S.H.S
한또리의 일기장
S.H.S
한또리의 일기장
전체
오늘
어제
  • 분류 전체보기 (35)
    • 개발 이야기 (1)
      • JavaScript (4)
      • TypeScript (0)
      • React (4)
      • Git (3)
      • Next.js (0)
      • Pattern Matching (1)
      • Terminal (1)
      • AWS (1)
      • Unity (0)
      • Python (0)
      • Ubuntu (0)
      • Aduino (0)
    • 즐거운 게임 수학 (9)
    • 개발자 면접 후기 (7)
    • 일상 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이색테마
  • 수학
  • 수염 자국
  • 컴포넌트 렌더링
  • 컴포넌트 시각화
  • git
  • 거리
  • 패키지 관리자
  • 계산
  • 각도
  • 컴포넌트 기반
  • react
  • code-owners
  • 회사
  • 프론트엔드
  • 원
  • 애니메이션
  • 신박함
  • 프론트엔드 면접
  • 개발자

최근 댓글

최근 글

hELLO · Designed By 정상우.
S.H.S
두 점의 거리 계산하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.