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

C++로 구현하는 정육각형에 내접하는 가장 큰 삼각형의 넓이 계산법

정육각형에 내접하는 가장 큰 삼각형의 넓이를 구하려면, 먼저 두 도형의 개념과 한 도형이 다른 도형 안에 어떻게 내접하는지 이해해야 합니다.

기본 개념

삼각형(Triangle)은 세 변으로 이루어진 닫힌 도형으로, 세 변의 길이는 같을 수도 있고 다를 수도 있습니다.

육각형(Hexagon)은 여섯 변으로 이루어진 닫힌 도형으로, 마찬가지로 각 변의 길이는 같을 수도 있고 다를 수도 있습니다.

내접 삼각형의 조건

육각형에 내접한 삼각형은 세 꼭짓점이 모두 육각형의 꼭짓점에 닿아야 합니다. 따라서 삼각형의 세 변은 정육각형의 대각선으로 볼 수 있습니다.

여기서 고려하는 육각형은 모든 변과 각이 같은 정육각형이므로, 그 안에 그릴 수 있는 가장 큰 삼각형은 자연스럽게 정삼각형이 됩니다.

공식 유도 과정

삼각형 AGB에 피타고라스 정리를 적용하면 다음과 같습니다.

(a/2)2 + (s/2)2 = a2   →   a = 정육각형의 한 변의 길이
                      s = 정삼각형의 한 변의 길이

a2/4 + s2/4 = a2
a2 - a2/4 = s2/4
3a2/4 = s2/4
3a2 = s2
s = a√3

넓이(Area) = (√3/4) × s2 = (3√3 × a²) / 4

최종적으로 정육각형의 한 변의 길이가 a일 때, 내접하는 가장 큰 정삼각형의 넓이는 다음 공식으로 구할 수 있습니다.

Area = (3√3 × a²) / 4

계산 예시

  • 정육각형의 한 변의 길이(a) = 6
  • 삼각형의 넓이 = (3√3 × 36) / 4 = 46.7654

C++ 구현 코드

#include <iostream>
#include <math.h>
using namespace std;
int main() {
    float a = 6;
    if (a < 0)
        cout<<"잘못된 입력입니다!";
    float area = (3 * sqrt(3) * pow(a, 2)) / 4;
    cout <<"삼각형의 넓이는 "<<area;
    return 0;
}

실행 결과

삼각형의 넓이는 46.7654

위 코드에서는 입력값이 음수인 경우를 검사하여 잘못된 입력을 걸러내고, sqrt()pow() 함수를 활용해 공식을 그대로 구현했습니다. 변의 길이만 바꿔주면 어떤 크기의 정육각형에 대해서도 손쉽게 결과를 얻을 수 있습니다.