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

C++에서 원의 지름 반대쪽 끝 좌표 구하는 방법

원의 중심 좌표와 원주 위의 한 점이 주어졌을 때, 지름의 반대쪽 끝에 해당하는 점의 좌표를 구하는 문제를 생각해 봅시다.

원의 중심을 (p, q), 주어진 점을 (a, b), 그리고 우리가 구해야 할 점을 (x, y)라고 하겠습니다.

핵심 아이디어

지름은 중심점을 기준으로 대칭이므로, 중심은 지름의 정중앙(중점)에 위치합니다. 따라서 다음과 같은 관계식을 세울 수 있습니다.

(p, q) = ((a + x) / 2, (b + y) / 2)

이 식을 (x, y)에 대해 정리하면 다음과 같습니다.

x = 2p − a
y = 2q − b

즉, 각 좌표 성분에 대해 '중심 × 2 − 주어진 점'을 계산하면 반대쪽 끝 점을 바로 얻을 수 있습니다.

C++ 구현 예제

#include <iostream>
using namespace std;

int main() {
    double p = 3, q = 4; // 원의 중심 (p, q)
    double a = 5, b = 7; // 원주 위의 한 점 (a, b)

    // 지름의 반대쪽 끝 점 계산
    double x = 2 * p - a;
    double y = 2 * q - b;

    cout << "반대쪽 끝 점: (" << x << ", " << y << ")" << endl;
    return 0;
}

실행 결과

반대쪽 끝 점: (1, 1)

동작 설명

위 예제에서 중심은 (3, 4), 주어진 점은 (5, 7)입니다.

  • x = 2 × 3 − 5 = 1
  • y = 2 × 4 − 7 = 1

따라서 지름의 반대쪽 끝 점은 (1, 1)이 됩니다. 실제로 (5, 7)과 (1, 1)의 중점을 계산해 보면 ((5+1)/2, (7+1)/2) = (3, 4)로 원의 중심과 일치하는 것을 확인할 수 있습니다.

이 방법은 시간 복잡도 O(1)로 단순한 산술 연산만 사용하기 때문에 매우 효율적이며, 실수형 좌표뿐 아니라 정수형 좌표에도 동일하게 적용할 수 있습니다.