원의 지름에 대한 두 끝점이 주어졌을 때, 그 원의 중심 좌표를 구하는 방법을 알아보겠습니다. 예를 들어 지름의 끝점이 (-9, 3)과 (5, -7)이라면, 원의 중심은 (-2, -2)가 됩니다.
원리: 중점 공식
지름의 양 끝점은 원의 중심을 기준으로 정확히 대칭입니다. 따라서 두 끝점의 중점(middle point)이 곧 원의 중심이 됩니다. 두 점 (x1, y1)과 (x2, y2)의 중점은 다음 공식으로 계산할 수 있습니다.
$$(x_{m},y_{m})=\left(\frac{(x_{1}+x_{2})}{2},\frac{(y_{1}+y_{2})}{2}\right)$$
즉, x좌표끼리 더한 뒤 2로 나누고, y좌표끼리 더한 뒤 2로 나누면 됩니다. 이는 매우 간단하지만 기하학적으로도 타당한 방법입니다.
C++ 구현 예제
아래 코드는 점(point)을 표현하는 클래스를 정의하고, 두 점을 입력받아 중심 좌표를 계산하는 함수를 구현한 것입니다.
#include<iostream>
using namespace std;
class point{
public:
float x, y;
point(float x, float y){
this->x = x;
this->y = y;
}
void display(){
cout << "(" << x << ", " <<y<<")";
}
};
point center(point p1, point p2) {
int x, y;
x = (float)(p1.x + p2.x) / 2;
y = (float)(p1.y + p2.y) / 2;
point res(x, y);
return res;
}
int main() {
point p1(-9.0, 3.0), p2(5.0, -7.0);
point res = center(p1, p2);
cout << "Center is at: ";
res.display();
}코드 설명
point클래스는 좌표 (x, y)를 저장하고 출력하는 역할을 합니다.center()함수는 두 점의 각 좌표를 더한 후 2로 나누어 중점을 계산합니다.- 정수 나눗셈 오류를 방지하기 위해
(float)형 변환을 사용했습니다.
실행 결과
Center is at: (-2, -2)
x좌표: (-9 + 5) / 2 = -2, y좌표: (3 + (-7)) / 2 = -2 이므로, 원의 중심은 (-2, -2)로 올바르게 계산됩니다.