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

타원에 내접하는 정사각형 안에서 가장 큰 륄로 삼각형의 넓이 구하기

이 글에서는 하나의 타원 안에 내접하는 정사각형, 그리고 그 정사각형 안에 새겨질 수 있는 가장 큰 륄로(Reuleaux) 삼각형의 넓이를 구하는 방법을 살펴봅니다. 타원의 장축 길이는 2a, 단축 길이는 2b이며, 정사각형의 한 변의 길이를 x, 륄로 삼각형의 높이를 h라고 하겠습니다.

륄로 삼각형이란?
륄로 삼각형은 세 개의 원호로 이루어진 곡선 삼각형으로, 어느 방향으로 측정하더라도 폭이 항상 일정하게 유지되는 도형입니다. 이러한 성질 덕분에 맨홀 뚜껑, 와블 엔진 등 다양한 분야에서 활용되고 있습니다.

장축이 2a, 단축이 2b인 타원에 내접하는 정사각형의 한 변의 길이 x는 다음과 같이 구할 수 있습니다.

x = √(a² + b²) ÷ (ab)

그리고 륄로 삼각형의 높이 h는 정사각형의 한 변의 길이와 같으므로 h = x가 성립합니다. 따라서 륄로 삼각형의 넓이는 아래 공식으로 계산됩니다.

넓이 = ((π − √3) × h²) ÷ 2

예제 코드

#include <iostream>
#include <cmath>
using namespace std;
float areaReuleaux(float a, float b) { // a와 b는 각각 타원의 장축, 단축 길이의 절반
    if (a < 0 || b < 0) // a 또는 b가 음수면 유효하지 않음
        return -1;
    float x = sqrt((a*a) + (b*b)) / (a*b);
    float area = ((3.1415 - sqrt(3)) * (x) * (x))/2;
    return area;
}
int main() {
    float a = 5;
    float b = 4;
    cout << "Area of Reuleaux Triangle: " << areaReuleaux(a, b);
}

실행 결과

Area of Reuleaux Triangle: 0.0722343

a = 5, b = 4인 경우, 정사각형의 한 변의 길이 x는 약 0.32가 되며, 이 값을 높이로 하는 륄로 삼각형의 넓이는 약 0.0722로 계산됩니다. 입력값 a나 b 중 하나라도 음수가 들어오면 유효하지 않은 값으로 판단하여 -1을 반환하도록 처리했습니다.