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

정삼각형 안에 내접할 수 있는 가장 큰 정사각형의 넓이 구하기

이 글에서는 한 변의 길이가 a인 정삼각형 안에 내접할 수 있는 가장 큰 정사각형의 크기를 구하는 방법을 살펴봅니다. 정삼각형의 한 변을 a, 내접하는 정사각형의 한 변을 x라고 하겠습니다.

기하학적 접근 방법

가장 큰 정사각형은 정삼각형의 밑변 위에 정사각형의 한 변을 놓고, 나머지 두 꼭짓점이 삼각형의 두 변에 닿도록 배치했을 때 얻을 수 있습니다.

먼저 정삼각형의 높이 h는 다음과 같습니다.

h = (√3 / 2) × a

정사각형 위쪽에 남는 작은 삼각형은 원래 정삼각형과 닮음 관계에 있습니다. 닮음비를 이용하면 다음 식이 성립합니다.

x / a = (h − x) / h

이 식을 x에 대해 정리하면 다음과 같습니다.

x = a × h / (a + h)

여기에 h = (√3/2)a를 대입하여 간단히 정리하면 최종 공식을 얻을 수 있습니다.

x = a / (1 + 2/√3) ≈ 0.4641 × a

즉, 정삼각형에 내접하는 가장 큰 정사각형의 한 변은 정삼각형 한 변의 약 46.41%입니다. 정사각형의 넓이가 필요하다면 이 값에 제곱하면 됩니다.

C++ 구현 예제

#include <iostream>
#include <cmath>
using namespace std;

float squareSide(float a) { // a: 정삼각형의 한 변의 길이
    if (a < 0) // 음수라면 유효하지 않은 입력
        return -1;
    float x = a / (1 + 2 / sqrt(3)); // 정사각형의 한 변의 길이
    return x;
}

int main() {
    float a = 7;
    float x = squareSide(a);
    cout << "정사각형의 한 변의 길이: " << x << endl;
    cout << "정사각형의 넓이: " << x * x;
}

실행 결과

정사각형의 한 변의 길이: 3.24871
정사각형의 넓이: 10.5541

정리

한 변의 길이가 a인 정삼각형에 내접하는 가장 큰 정사각형의 한 변은 a / (1 + 2/√3)로, 정삼각형 한 변의 약 0.4641배입니다. 예를 들어 a = 7일 때 정사각형의 한 변은 약 3.249, 넓이는 약 10.554가 됩니다. 이처럼 닮음 관계만 활용하면 복잡해 보이는 기하 문제도 간단한 공식으로 해결할 수 있습니다.