Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 지름의 양 끝점에서 원의 중심 구하기

원의 지름에 대한 두 끝점이 주어졌을 때, 그 원의 중심 좌표를 구하는 방법을 알아보겠습니다. 예를 들어 지름의 끝점이 (-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)로 올바르게 계산됩니다.