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

C++에서 대체 세그먼트의 각도가 주어졌을 때 현과 접선 사이의 각도 구하기

하나의 원에서 현(chord)과 접선(tangent)이 특정 점에서 만나고, 대체 세그먼트(alternate segment)의 각도가 주어져 있다고 가정해 봅시다. 이 문제의 핵심은 바로 현과 접선 사이의 각도를 구하는 것입니다.

예시

입력: z = 40
출력: 40도
입력: z = 60
출력: 60도

접근 방법

  • 각 QPR을 대체 세그먼트에서 주어진 각이라고 합니다.

  • 현과 접선 사이의 각을 각 RQY = a라고 둡니다.

  • 접선 위의 점에서 중심으로 그은 선은 접선에 수직이므로,

  • 각 CQR = 90° − a 입니다.

  • CQ = CR = 원의 반지름이므로,

  • 각 CRQ = 90° − a 입니다.

  • 이제 삼각형 CQR에서 다음 관계가 성립합니다.

    • 각 CQR + 각 CRQ + 각 QCR = 180°

    • 각 QCR = 180° − (90° − a) − (90° − a)

    • 각 QCR = 2a

  • 같은 호에 대한 원주각은 중심각의 절반이므로, 각 QPR = a 입니다.

  • 따라서 각 QPR = 각 RQY 가 성립합니다.

이 증명은 기하학의 대체 세그먼트 정리(Alternate Segment Theorem)를 보여줍니다. 즉, 현과 접선이 이루는 각은 대체 세그먼트의 원주각과 항상 같습니다. 따라서 별도의 계산 없이 주어진 각도를 그대로 출력하면 됩니다.

구현 방법은 다음과 같습니다.

구현 예제

// 현과 접선 사이의 각도를 구하는 C++ 프로그램
// 대체 세그먼트의 각도가 주어졌을 때
#include <bits/stdc++.h>
using namespace std;
void anglechordtang(int z1){
    cout<< "현과 접선 사이의 각도는 "
    << z1 <<"도입니다" << endl;
}
// 드라이버 코드
int main(){
    int z1 = 40;
    anglechordtang(z1);
    return 0;
}

출력 결과

현과 접선 사이의 각도는 40도입니다

마무리

대체 세그먼트 정리 덕분에 이 문제는 매우 간단하게 해결됩니다. 주어진 각도를 그대로 반환하면 되며, 시간 복잡도는 O(1)로 어떤 값이 입력되더라도 즉시 답을 얻을 수 있습니다.