대칭점(Point of Symmetry)이란?
'점 반사(point reflection)' 또는 '점 대칭(point symmetry)'은 기하학의 가장 기본적인 개념 중 하나입니다. 중심점 Q를 기준으로 한 점 P가 주어졌을 때, Q까지의 거리는 같지만 방향이 정반대인 대응점 P1이 항상 존재한다는 것이 핵심 아이디어입니다.
수식으로 표현하면, Q가 선분 PP1의 중점이 되도록 만드는 점이 바로 대칭점입니다. 따라서 대칭점은 다음과 같은 간단한 공식으로 구할 수 있습니다.
P1 = 2Q − P
즉, x좌표와 y좌표 각각에 대해 2 × Q의 좌표 − P의 좌표를 계산하면 됩니다.
문제 설명
2차원 평면 위의 두 점을 나타내는 객체 P와 Q를 인자로 받는 JavaScript 함수를 작성해야 합니다.
이 함수는 점 P를 기준점 Q에 대해 반사시킨 대칭점을 객체 형태로 반환해야 합니다.
예제 코드
다음은 이를 구현한 코드입니다 −
const p = {
x: 6, y: -4
};
const q = {
x: 11, y: 5
};
const findReflection = (p = {}, q = {}) => {
const res = {};
const Xdistance = p['x'] - q['x'];
res['x'] = q['x'] - Xdistance;
let Ydistance = p['y'] - q['y'];
res['y'] = q['y'] - Ydistance;
return res;
};
console.log(findReflection(p, q));코드의 로직을 살펴보면, 먼저 P와 Q 사이의 x축 거리(Xdistance)와 y축 거리(Ydistance)를 각각 구합니다. 그런 다음 Q의 좌표에서 해당 거리를 빼주는데, 이 과정은 결국 res.x = 2q.x − p.x, res.y = 2q.y − p.y와 수학적으로 동일한 연산입니다.
출력 결과
다음은 콘솔 출력 결과입니다 −
{ x: 16, y: 14 }결과를 검증해 보면, P(6, -4)와 결과점(16, 14)의 중점은 ((6 + 16) / 2, (-4 + 14) / 2) = (11, 5)로 기준점 Q와 정확히 일치합니다. 따라서 이 함수가 올바르게 대칭점을 계산했음을 확인할 수 있습니다.