Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 2D 평면에서 두 점 사이의 거리 구하기

문제 상황

x와 y 속성을 가진 두 개의 객체를 인수로 받아, 평면 위의 두 점을 나타내는 JavaScript 함수를 작성해야 합니다.

이 함수는 두 점 사이의 거리를 계산하여 반환해야 합니다.

접근 방법

두 점 사이의 거리는 유클리드 거리 공식, 즉 피타고라스 정리를 이용해 구할 수 있습니다.

두 점 A(x₁, y₁)와 B(x₂, y₂)가 주어졌을 때, 거리는 다음과 같이 계산됩니다.

distance = √((x₂ − x₁)² + (y₂ − y₁)²)

즉, x 좌표의 차이와 y 좌표의 차이를 각각 제곱한 뒤 더하고, 그 값의 제곱근을 구하면 됩니다. JavaScript에서는 Math.sqrt() 메서드를 사용해 제곱근을 손쉽게 구할 수 있습니다.

예제 코드

다음은 위 공식을 구현한 코드입니다.

const a = {x: 5, y: -4};
const b = {x: 8, y: 12};

const distanceBetweenPoints = (a = {}, b = {}) => {
    const x1 = a.x,
    x2 = b.x,
    y1 = a.y,
    y2 = b.y;
    return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
};

console.log(distanceBetweenPoints(a, b));

출력 결과

16.278820596099706

코드 설명

두 점의 좌표 차이를 살펴보면 다음과 같습니다.

  • x 좌표 차이: 8 − 5 = 3
  • y 좌표 차이: 12 − (−4) = 16

따라서 거리는 √(3² + 16²) = √(9 + 256) = √265 ≈ 16.28이 됩니다.

참고로 좌표 차이에 단순히 2를 곱하는 것은 올바른 방법이 아니며, 반드시 제곱(** 2 또는 Math.pow())을 사용해야 합니다. 그렇지 않으면 피타고라스 정리에 기반한 실제 거리가 아닌 엉뚱한 값이 계산됩니다.

또한 매개변수에 기본값(= {})을 지정해 두면, 인수가 누락되더라도 오류 없이 안전하게 동작합니다.