이번 글에서는 타원에 내접하는 직사각형 안에 다시 내접한 삼각형의 넓이를 구하는 방법을 살펴보겠습니다. 타원의 장반경(장축의 절반)은 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이 됩니다. 이처럼 복잡해 보이는 기하학 문제도 핵심 공식만 알면 아주 간단한 코드로 해결할 수 있습니다.