이 튜토리얼에서는 C++를 사용하여 원형 세그먼트(circular segment)의 넓이를 구하는 방법을 알아보겠습니다.
원형 세그먼트란?
원 안에 하나의 현(chord)을 그으면 원은 두 개의 영역으로 나뉩니다. 바로 큰 세그먼트(major segment)와 작은 세그먼트(minor segment)입니다. 원의 반지름과 작은 세그먼트를 이루는 중심각이 주어졌을 때, 두 세그먼트의 넓이를 각각 계산해야 합니다.
계산 공식
세그먼트의 넓이는 다음과 같은 과정으로 구할 수 있습니다.
- 부채꼴(sector)의 넓이 = π × r² × (θ / 360)
- 삼각형의 넓이 = (1/2) × r² × sin(θ)
- 세그먼트의 넓이 = 부채꼴의 넓이 − 삼각형의 넓이
예제 코드
#include <bits/stdc++.h>
using namespace std;
float pi = 3.14159;
// 세그먼트의 넓이를 구하는 함수
float area_of_segment(float radius, float angle){
float area_of_sector = pi * (radius * radius)*(angle / 360);
float area_of_triangle = (float)1 / 2 *(radius * radius) *
sin((angle * pi) / 180);
return area_of_sector - area_of_triangle;
}
int main() {
float radius = 10.0, angle = 90.0;
cout << "Area of minor segment = "
<< area_of_segment(radius, angle) << endl;
cout << "Area of major segment = "
<< area_of_segment(radius, (360 - angle));
return 0;
}실행 결과
Area of minor segment = 28.5397 Area of major segment = 285.619
코드 설명
area_of_segment 함수는 반지름과 중심각(도 단위)을 매개변수로 받습니다. 먼저 부채꼴의 넓이를 계산한 뒤, 삼각함수 sin()을 활용해 현과 두 반지름이 이루는 삼각형의 넓이를 구합니다. 두 값의 차가 곧 세그먼트의 넓이가 됩니다.
메인 함수에서는 반지름 10, 중심각 90도를 기준으로 작은 세그먼트의 넓이를 구하고, 전체 원의 각도인 360도에서 중심각을 뺀 값(270도)을 이용해 큰 세그먼트의 넓이를 계산합니다. 두 결과의 합이 원 전체의 넓이(π × r² ≈ 314.159)와 일치하는 것을 확인할 수 있습니다.