문제 상황
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())을 사용해야 합니다. 그렇지 않으면 피타고라스 정리에 기반한 실제 거리가 아닌 엉뚱한 값이 계산됩니다.
또한 매개변수에 기본값(= {})을 지정해 두면, 인수가 누락되더라도 오류 없이 안전하게 동작합니다.