이 튜토리얼에서는 주어진 삼각형의 내접원(내원) 반지름을 구하는 C++ 프로그램을 살펴보겠습니다.
여기서는 삼각형의 세 변의 길이가 입력으로 주어지며, 우리의 목표는 해당 삼각형 안에 그려진 내접원의 반지름을 계산하는 것입니다.
내접원 반지름 공식
내접원의 반지름은 아래 공식으로 구할 수 있습니다.
반지름 = 삼각형의 넓이 ÷ 삼각형의 반둘레
여기서 반둘레(semi-perimeter)란 세 변의 길이를 모두 더한 값의 절반을 의미하며, 삼각형의 넓이는 세 변의 길이만으로 넓이를 구할 수 있는 헤론의 공식(Heron's Formula)을 활용해 계산합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
// 내접원의 반지름을 계산하는 함수
float calc_radius(float a, float b, float c) {
if (a < 0 || b < 0 || c < 0)
return -1;
// 삼각형의 반둘레
float p = (a + b + c) / 2;
// 헤론의 공식을 이용한 삼각형의 넓이
float area = sqrt(p * (p - a) * (p - b) * (p - c));
// 반지름 = 넓이 / 반둘레
float radius = area / p;
// 반지름 반환
return radius;
}
int main() {
float a = 4, b = 7, c = 9;
cout << calc_radius(a, b, c) << endl;
return 0;
}출력 결과
1.34164
코드 설명
위 코드의 동작 과정을 단계별로 정리하면 다음과 같습니다.
1. 먼저 입력받은 세 변의 길이 중 하나라도 음수인 경우 유효하지 않은 삼각형이므로 -1을 반환합니다.
2. 세 변의 합을 2로 나누어 반둘레(p)를 구합니다.
3. 헤론의 공식 √(p × (p-a) × (p-b) × (p-c))를 이용해 삼각형의 넓이를 계산합니다.
4. 마지막으로 넓이를 반둘레로 나누어 내접원의 반지름을 구하고 결과를 반환합니다.
예제에서 사용한 변의 길이 4, 7, 9를 대입하면 반둘레는 10, 넓이는 약 13.4164가 되고, 따라서 내접원의 반지름은 약 1.34164로 계산됩니다.