Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

정육각형 안에 새겨진 정사각형 안에 들어가는 가장 큰 르로 삼각형의 넓이 구하기

이 글에서는 정육각형(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의 넓이를 가지는 르로 삼각형이 도출됩니다.