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

C 언어로 구하는 타원에 내접하는 정사각형 안의 최대 룰로 삼각형의 넓이

룰로 삼각형(Reuleaux Triangle)이란?

룰로 삼각형은 세 개의 원판을, 각 원의 중심이 다른 두 원의 경계 위에 오도록 배치한 뒤 겹치는 부분만 남겨 만든 도형입니다. 이 도형의 경계는 일정 폭 곡선(curve of constant width)으로, 원을 제외하면 가장 단순하고 널리 알려진 일정 폭 곡선입니다. '일정 폭'이란 어떤 방향에서 보더라도 두 평행한 지지선 사이의 거리가 항상 동일하다는 의미입니다.

C 언어로 구하는 타원에 내접하는 정사각형 안의 최대 룰로 삼각형의 넓이

룰로 삼각형의 경계는 정삼각형을 기반으로 하는 일정 폭 곡선입니다. 한 변 위의 모든 점은 반대편 꼭짓점까지의 거리가 서로 같습니다.

C 언어로 구하는 타원에 내접하는 정사각형 안의 최대 룰로 삼각형의 넓이

룰로 삼각형 작도 방법

정삼각형의 각 꼭짓점을 중심으로 하고 반지름을 한 변의 길이로 설정하여 세 개의 원호를 그린 뒤, 세 원호가 둘러싸는 영역을 취하면 룰로 삼각형을 얻을 수 있습니다.

룰로 삼각형의 넓이 공식

정삼각형을 기반으로 하고 삼각형의 한 변의 길이가 h일 때, 룰로 삼각형의 넓이는 다음과 같이 계산합니다.

A = (π × h²) / 2 − 2 × (정삼각형의 넓이)
  = (π − √3) × h² / 2
  = 0.70477 × h²

타원에 내접하는 정사각형에 내접하는 최대 룰로 삼각형

C 언어로 구하는 타원에 내접하는 정사각형 안의 최대 룰로 삼각형의 넓이

C 언어로 구하는 타원에 내접하는 정사각형 안의 최대 룰로 삼각형의 넓이

1단계: 타원에 내접하는 최대 정사각형

정사각형이 타원에 내접한다고 가정해 보겠습니다. 타원의 방정식은 다음과 같습니다.

x²/a² + y²/b² = 1

여기에 x = y를 대입하면,

x²/a² + x²/b² = 1

이 되므로,

x = √(a² + b²)/ab, y = √(a² + b²)/ab

이며, 이 정사각형의 넓이는 A = 4(a² + b²)/a²b² 입니다.

C 언어로 구하는 타원에 내접하는 정사각형 안의 최대 룰로 삼각형의 넓이

2단계: 정사각형에 내접하는 최대 룰로 삼각형

룰로 삼각형의 넓이는 0.70477 × h² 이며, 여기서 h는 룰로 삼각형을 지지하는 두 평행선 사이의 거리입니다.

이 평행선 사이의 거리는 정사각형의 한 변의 길이와 같으므로, 룰로 삼각형의 넓이는 다음과 같습니다.

A = 0.70477 × a²

간단한 예시를 통해 확인해 보겠습니다.

입력: a = 5, b = 4
출력: 0.0722389

풀이 과정

타원에 내접하는 정사각형의 한 변의 길이는 x = √(a² + b²)/ab 입니다.

따라서 룰로 삼각형에서는 h = x = √(a² + b²)/ab 가 됩니다.

이 값을 넓이 공식에 대입하면,

A = 0.70477 × h² = 0.70477 × ((a² + b²)/a²b²)

C 코드 예제

#include <stdio.h>
#include <math.h>
int main() {
    float a = 6, b = 8;
    float h = sqrt(((pow(a, 2) + pow(b, 2)) / (pow(a, 2) * pow(b, 2))));
    float area = 0.70477 * pow(h, 2);
    printf("The area is : %f", area);
    return 0;
}

실행 결과

The area is : 0.030589