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

C++로 계산하는 타원에 내접하는 직사각형 안의 삼각형 넓이

이번 글에서는 타원에 내접하는 직사각형 안에 다시 내접한 삼각형의 넓이를 구하는 방법을 살펴보겠습니다. 타원의 장반경(장축의 절반)은 a, 단반경(단축의 절반)은 b라고 가정합니다.

수학적 원리

타원 x²/a² + y²/b² = 1에 내접할 수 있는 직사각형 중 넓이가 가장 커지는 경우는, 직사각형의 꼭짓점들이 좌표 (±a/√2, ±b/√2)에 위치할 때입니다. 이때 직사각형의 최대 넓이는 다음과 같습니다.

직사각형의 최대 넓이 = 2ab

그리고 이 직사각형 안에 형성되는 삼각형은 직사각형 전체 넓이의 정확히 절반을 차지합니다. 따라서 삼각형의 넓이는 다음과 같이 계산됩니다.

삼각형의 넓이 = 2ab ÷ 2 = ab

C++ 예제 코드

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

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

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

실행 결과

Area is: 10

코드 설명

위 코드의 area() 함수는 두 개의 매개변수 a와 b를 받아 삼각형의 넓이를 계산합니다. 먼저 입력값이 음수인지 검사하여, 음수라면 유효하지 않은 입력으로 판단하고 -1을 반환합니다. 유효한 값이라면 위에서 유도한 공식에 따라 a × b를 곱한 결과를 반환합니다.

예제에서는 a = 5, b = 2를 사용했으므로, 삼각형의 넓이는 5 × 2 = 10이 됩니다. 이처럼 복잡해 보이는 기하학 문제도 핵심 공식만 알면 아주 간단한 코드로 해결할 수 있습니다.