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

C++로 계산하는 마름모에 내접하는 원의 넓이 완벽 가이드

이 글에서는 마름모 안에 내접하는 원의 넓이를 구하는 방법을 알아보겠습니다. 마름모의 두 대각선의 길이가 각각 ab로 주어졌을 때, 내접하는 원의 반지름을 h라고 합니다.

공식 유도 과정

마름모의 두 대각선은 서로 수직으로 교차하며, 이 교차점을 기준으로 마름모는 네 개의 합동인 직각삼각형으로 나뉩니다. 각 직각삼각형의 두 변(밑변과 높이)은 대각선의 절반, 즉 a/2와 b/2가 되므로, 각 삼각형의 넓이는 다음과 같습니다.

삼각형의 넓이 = (1/2) × (a/2) × (b/2) = ab / 8

한편, 마름모의 한 변은 직각삼각형의 빗변에 해당하므로 피타고라스 정리를 이용해 구할 수 있습니다.

마름모 한 변의 길이 = √((a/2)² + (b/2)²)

내접원의 중심에서 마름모의 한 변까지의 거리가 바로 원의 반지름 h입니다. 마름모의 넓이는 '밑변 × 높이' 관계와 '대각선 곱의 절반' 두 가지 방식으로 표현할 수 있고, 이를 결합하면 반지름 h는 다음과 같이 정리됩니다.

h = ab / (2√(a² + b²))

따라서 원의 넓이는 다음 공식으로 계산됩니다.

원의 넓이 = π × h² = π × a²b² / (4(a² + b²))

C++ 예제 코드

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

float area(float a, float b) {
    if (a < 0 || b < 0) // 값이 음수이면 유효하지 않음
        return -1;
    float area = (3.1415 * (a*b * a*b)) / (4 * (a*a + b*b));
    return area;
}

int main() {
    float a = 8, b = 10;
    cout << "Area is: " << area(a, b);
}

실행 결과

Area is: 30.6488

위 코드에서는 대각선의 길이 a = 8, b = 10을 입력값으로 사용했습니다. 함수 내부에서 음수 입력 여부를 먼저 검사하여 유효하지 않은 값에는 -1을 반환하도록 처리했으며, 앞서 유도한 공식 π × a²b² / (4(a² + b²))를 그대로 적용해 결과를 출력합니다. 실행 결과, 마름모에 내접하는 원의 넓이는 약 30.65로 계산됩니다.