이 글에서는 다각형의 변의 개수 N과 한 변의 길이 A가 주어졌을 때, 해당 정다각형의 외접원(circumcircle)을 구하는 C++ 프로그램 작성 방법을 소개합니다.
문제 설명
변의 개수와 한 변의 길이가 주어진 정다각형이 있을 때, 이 다각형의 모든 꼭짓점을 지나는 원인 외접원의 반지름과 넓이를 계산하는 것이 목표입니다.
예시로 이해하기
입력:
n = 4, a = 2
위 입력은 한 변의 길이가 2인 정사각형을 의미합니다. 이 경우 외접원의 반지름은 √2 ≈ 1.414이며, 넓이는 약 6.283입니다.
해결 접근 방식
문제를 해결하려면 먼저 주어진 정다각형의 외접원 반지름을 구해야 합니다.
한 변의 길이가 a이고 변의 개수가 n인 정다각형의 외접원 반지름은 다음 공식으로 계산할 수 있습니다.
r = a / √( 2 × (1 − cos(360° / n)) )
구한 반지름 r을 이용하면 외접원의 넓이는 아래 공식으로 구할 수 있습니다.
area = π × r²
구현 예제 코드
#include <bits/stdc++.h>
using namespace std;
void CalcRadAreaCircumcircle(float n, float a) {
// 각도를 라디안으로 변환 (360° = 2π)
float angle = (2 * M_PI) / n;
float r = a / sqrt(2 * (1 - cos(angle)));
cout << "외접원의 반지름: " << r << endl;
cout << "외접원의 넓이: " << (M_PI * r * r);
}
int main() {
float n = 5, a = 6;
CalcRadAreaCircumcircle(n, a);
return 0;
}
코드 설명
- 먼저 중심각 360°를 변의 개수 n으로 나누어 한 변이 대응하는 중심각을 구합니다.
- C++의 cos() 함수는 라디안 단위를 사용하므로, 360°/n 대신 라디안 값인 2π/n을 전달해야 합니다.
- 공식에 따라 반지름 r을 계산한 뒤, π × r²로 외접원의 넓이를 구해 출력합니다.
참고: cos(360 / n)처럼 도(degree) 단위의 값을 그대로 전달하면 라디안 기준으로 계산되어 엉뚱한 결과가 나올 수 있습니다. 정확한 답을 얻으려면 반드시 라디안으로 변환해야 합니다.
실행 결과
n = 5, a = 6(한 변의 길이가 6인 정오각형)일 때의 출력 결과입니다.
외접원의 반지름: 5.1039 외접원의 넓이: 81.838