이 글에서는 정삼각형에 내접하는 원 안에 다시 내접하는 정사각형의 넓이를 구하는 방법을 다룹니다. 수학적 유도 과정과 함께 이를 계산하는 C++ 프로그램까지 단계별로 살펴보겠습니다.
문제 정의
기하학적 관계를 정리하면 다음과 같습니다.
- 정삼각형의 한 변의 길이: A
- 정삼각형에 내접하는 원의 반지름: r
- 원에 내접하는 정사각형의 한 변의 길이: a
수식 유도
1단계: 원의 반지름 구하기
정삼각형에 내접하는 원의 반지름은 곧 삼각형의 내접원 반지름(inradius)입니다. 한 변의 길이가 A인 정삼각형의 내접원 반지름은 다음 공식으로 구할 수 있습니다.
r = A / (2√3)
2단계: 정사각형의 대각선 구하기
정사각형이 원에 내접해 있으므로, 정사각형의 대각선(d)은 원의 지름과 같습니다.
d = 2r = 2 × A / (2√3) = A / √3
3단계: 정사각형의 넓이 구하기
정사각형의 넓이는 대각선을 이용해 다음과 같이 표현할 수 있습니다.
넓이 = d² / 2 = (A / √3)² / 2 = A² / 6
즉, 최종적으로 정사각형의 넓이는 A² / 6임을 알 수 있습니다.
C++ 구현 예제
#include <iostream>
#include <cmath>
using namespace std;
float area(float A) { // A는 정삼각형의 한 변의 길이
if (A < 0) // 음수 값은 유효하지 않음
return -1;
float d = A / sqrt(3); // 정사각형의 대각선
float area = 0.5 * d * d; // 대각선으로 넓이 계산
return area;
}
int main() {
float side = 10;
cout << "Area is: " << area(side);
}
실행 결과
Area is: 16.6667
코드 설명
area() 함수는 정삼각형의 한 변의 길이 A를 매개변수로 받습니다. 입력값이 음수일 경우 유효하지 않은 값으로 판단하여 -1을 반환합니다. 그렇지 않으면 대각선 길이 d = A / √3를 먼저 계산한 뒤, 정사각형의 넓이 공식인 d² / 2를 적용하여 결과를 반환합니다.
예제에서 한 변의 길이가 10인 경우, 넓이는 10² / 6 = 100 / 6 ≈ 16.6667로 계산되어 출력됩니다.