문제 개요
이 글에서는 반원에 내접하는 정사각형 안에 그릴 수 있는 가장 큰 륄로(Reuleaux) 삼각형의 넓이를 구하는 방법을 알아봅니다. 륄로 삼각형은 세 개의 원호로 이루어진 곡선으로, 어느 방향으로 측정하든 폭이 일정하게 유지되는 특수한 도형입니다.
편의를 위해 다음과 같이 기호를 정의합니다.
- 반원의 반지름: R
- 정사각형의 한 변의 길이: a
- 륄로 삼각형의 높이: h
넓이 공식 유도하기
먼저, 반지름이 R인 반원에 내접하는 정사각형의 한 변의 길이는 다음과 같습니다.
a = 2R / √5
정사각형 안에 내접하는 륄로 삼각형의 높이는 정사각형의 변의 길이와 같습니다. 따라서 다음 관계가 성립합니다.
a = h = 2R / √5
높이가 h인 륄로 삼각형의 넓이 공식은 다음과 같습니다.
A = ((π − √3) / 2) × h²
여기에 h = 2R / √5를 대입하여 정리하면 최종 공식을 얻을 수 있습니다.
A = (π − √3) × (2R / √5)² / 2 = 2R²(π − √3) / 5
C++ 예제 코드
위 공식을 C++ 코드로 구현하면 다음과 같습니다. 반지름 r이 음수일 경우 유효하지 않은 입력으로 처리하여 -1을 반환하도록 했습니다.
#include <iostream>
#include <cmath>
using namespace std;
float areaReuleaux(float r) { // 반원의 반지름은 r
if (r < 0) // r이 음수이면 유효하지 않음
return -1;
float area = ((3.1415 - sqrt(3)) * (2*r/(sqrt(5))) * (2*r/(sqrt(5))))/2;
return area;
}
int main() {
float rad = 8;
cout << "Area of Reuleaux Triangle: " << areaReuleaux(rad);
}
실행 결과
Area of Reuleaux Triangle: 36.0819
반지름이 8인 반원의 경우, 내접하는 정사각형 안에 그릴 수 있는 가장 큰 륄로 삼각형의 넓이는 약 36.0819임을 확인할 수 있습니다.