이 글에서는 정육각형(regular hexagon) 안에 내접하는 정사각형, 그리고 그 정사각형 안에 새겨지는 가장 큰 르로 삼각형(Reuleaux triangle)의 넓이를 구하는 방법을 알아봅니다.
여기서 각 변수를 다음과 같이 정의합니다.
- 정육각형의 한 변의 길이: a
- 정사각형의 한 변의 길이: x
- 르로 삼각형의 높이: h
기하학적 관계와 공식 유도
먼저, 한 변의 길이가 a인 정육각형 안에 내접하는 정사각형의 변의 길이 x는 다음 공식으로 구할 수 있습니다.
x = 1.268a
흥미로운 점은 르로 삼각형의 높이 h가 정사각형의 변의 길이 x와 같다는 것입니다. 즉, x = h 관계가 성립합니다.
르로 삼각형의 넓이를 구하는 일반 공식은 다음과 같습니다.
A = ((π − √3) × h²) / 2
여기에 h = 1.268a를 대입하면, 정육각형의 변의 길이만으로 르로 삼각형의 넓이를 계산할 수 있습니다.
C++ 구현 예제
#include <iostream>
#include <cmath>
using namespace std;
float areaReuleaux(float a) { // 정육각형의 변의 길이 a
if (a < 0) // 음수 입력은 유효하지 않음
return -1;
float area = ((3.1415 - sqrt(3)) * (1.268*a) * (1.268*a)) / 2;
return area;
}
int main() {
float side = 5;
cout << "Area of Reuleaux Triangle: " << areaReuleaux(side);
}실행 결과
Area of Reuleaux Triangle: 28.3268
코드 설명
위 코드에서 areaReuleaux() 함수는 정육각형의 변의 길이 a를 매개변수로 받습니다. 입력값이 음수일 경우 유효하지 않은 값으로 판단하여 -1을 반환합니다. 유효한 값이라면 공식 ((π − √3) × (1.268a)²) / 2를 적용해 르로 삼각형의 넓이를 계산하여 반환합니다.
예제에서는 변의 길이가 5인 정육각형을 기준으로 계산했으며, 결과적으로 약 28.33의 넓이를 가지는 르로 삼각형이 도출됩니다.