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

C 언어로 정삼각형에 내접하는 가장 큰 정사각형 구하기


내접 도형이란?

어떤 평면 도형이나 입체가 다른 기하학적 도형의 내부에 완전히 들어가 있으면서 "꼭 맞게" 밀착되어 있을 때, 그 도형을 내접(inscribed) 도형이라고 합니다. 따라서 "정사각형이 삼각형에 내접한다"는 표현은 "삼각형이 정사각형에 외접(circumscribed)한다"는 말과 정확히 같은 의미입니다.

정삼각형에 내접하는 가장 큰 정사각형

한 변의 길이가 a인 정삼각형 안에 담을 수 있는 가장 큰 정사각형은 아래 그림과 같습니다 −

C 언어로 정삼각형에 내접하는 가장 큰 정사각형 구하기

입력과 출력 예시는 다음과 같습니다.

입력: 5
출력: 2.32

공식 유도 과정

정사각형의 한 변의 길이를 x라고 합시다.

AHDE에 수직이며, DEBC와 평행합니다. 따라서 동위각 관계에 의해 ∠AED = ∠ACB = 60°입니다.

직각삼각형 EFC에서,

⇒ sin 60° = x / EC
⇒ √3 / 2 = x / EC
⇒ EC = 2x / √3

직각삼각형 AHE에서, H는 정사각형 윗변 DE의 중점이므로 HE = x/2입니다. 코사인의 정의에 따르면,

⇒ cos 60° = (x / 2) / AE
⇒ 1 / 2 = x / (2AE)
⇒ AE = x

따라서 삼각형의 한 변 ACAEEC의 합으로 나타낼 수 있습니다.

a = 2x/√3 + x

이 식을 x에 대해 정리하면,

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

즉, 정삼각형에 내접하는 가장 큰 정사각형의 한 변의 길이는 원래 삼각형 한 변 길이의 약 46.4%입니다.

C 언어 구현 예제

#include <stdio.h>
int main() {
    float a = 5;
    float side = 0.464 * a; // 가장 큰 정사각형의 한 변의 길이
    printf("정사각형의 한 변의 길이 : %f", side);
    return 0;
}

실행 결과

정사각형의 한 변의 길이 : 2.320000

이처럼 삼각비만 활용하면 복잡한 반복 계산 없이도, 정삼각형에 내접하는 최대 정사각형의 크기를 상수 시간 O(1) 안에 손쉽게 구할 수 있습니다.