이 글에서는 직각삼각형 내부에 내접하는 정사각형 안에 다시 내접하는 가장 큰 륄로 삼각형(Reuleaux Triangle)의 넓이를 구하는 방법을 알아보겠습니다.
먼저 기하학적 관계를 정리해 보겠습니다. 정사각형의 한 변의 길이는 'a'이고, 륄로 삼각형의 높이는 x입니다. 외부 직각삼각형의 밑변은 b, 높이는 l, 빗변은 h라고 가정합니다.
기하학적 접근 방법
높이가 l이고 밑변이 b인 직각삼각형에 내접하는 정사각형의 한 변의 길이는 다음 공식으로 구할 수 있습니다.
a = (l × b) / (l + b)
여기서 중요한 점은 륄로 삼각형의 높이가 정사각형의 변의 길이 a와 같다는 것입니다. 즉, a = x입니다. 따라서 륄로 삼각형의 넓이는 다음 공식을 통해 계산할 수 있습니다.
넓이 = ((π - √3) × a²) / 2
이 공식은 륄로 삼각형이 세 개의 원호로 이루어진 곡선 삼각형이라는 성질에서 유도된 것으로, 반지름이 a인 경우의 표준적인 넓이 공식입니다.
C++ 구현 예제
위의 수학적 원리를 C++ 코드로 구현하면 다음과 같습니다. 함수는 직각삼각형의 높이 l과 밑변 b를 입력받아 륄로 삼각형의 넓이를 반환합니다.
#include <iostream>
#include <cmath>
using namespace std;
float areaReuleaux(float l, float b) { // l과 b는 직각삼각형의 높이와 밑변
if (l < 0 || b < 0) // l 또는 b가 음수이면 유효하지 않음
return -1;
float a = (l*b)/(l+b); // 내접 정사각형의 한 변의 길이
float area = ((3.1415 - sqrt(3)) * (a) * (a))/2; // 륄로 삼각형의 넓이
return area;
}
int main() {
float l = 5;
float b = 12;
cout << "Area of Reuleaux Triangle: " << areaReuleaux(l, b);
}실행 결과
높이 l = 5, 밑변 b = 12인 직각삼각형의 경우, 내접 정사각형의 한 변의 길이는 (5 × 12) / (5 + 12) = 60 / 17 ≈ 3.53이 됩니다. 이 값을 륄로 삼각형 넓이 공식에 대입하면 다음과 같은 결과를 얻습니다.
Area of Reuleaux Triangle: 8.77858
정리
이 문제는 두 단계의 기하학적 계산을 결합한 예제입니다. 첫 번째 단계에서는 직각삼각형에 내접하는 정사각형의 변의 길이를 구하고, 두 번째 단계에서는 그 변의 길이를 높이로 하는 륄로 삼각형의 넓이를 계산합니다. 입력값이 음수인 경우 유효성 검사를 통해 -1을 반환하도록 처리하여 프로그램의 견고성을 높였습니다.