삼각비를 이용한 미지수 계산
이 단계에서는 삼각비를 사용하여 미지의 변과 각을 계산하도록 삼각형 계산 프로그램을 확장합니다. 이전 코드를 업데이트하여 직각 삼각형을 푸는 함수를 포함합니다.
계산 함수를 추가하기 위해 triangle_solver.c 파일을 수정해 보겠습니다.
// ~/project/triangle_solver.c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
struct RightTriangle {
double side_a; // 인접변
double side_b; // 대변
double side_c; // 빗변
double angle_A; // 변 a 에 대한 대각
double angle_B; // 변 b 에 대한 대각
double angle_C; // 직각 (90 도)
};
// 각도를 라디안으로 변환하는 함수
double to_radians(double degrees) {
return degrees * (PI / 180.0);
}
// 라디안을 각도로 변환하는 함수
double to_degrees(double radians) {
return radians * (180.0 / PI);
}
// 삼각비를 이용하여 미지의 변 계산
void solve_triangle(struct RightTriangle *triangle) {
// 빗변과 한 변이 알려진 경우, 세 번째 변을 계산
if (triangle->side_c > 0 && triangle->side_a > 0 && triangle->side_b == 0) {
triangle->side_b = sqrt(triangle->side_c * triangle->side_c - triangle->side_a * triangle->side_a);
}
// 두 변이 알려진 경우, 각도를 계산
if (triangle->side_a > 0 && triangle->side_c > 0) {
triangle->angle_A = to_degrees(asin(triangle->side_a / triangle->side_c));
triangle->angle_B = 90.0 - triangle->angle_A;
}
// 두 변이 알려진 경우, 빗변을 계산
if (triangle->side_a > 0 && triangle->side_b > 0 && triangle->side_c == 0) {
triangle->side_c = sqrt(triangle->side_a * triangle->side_a + triangle->side_b * triangle->side_b);
}
}
// 삼각형 정보 출력
void print_triangle_info(struct RightTriangle *triangle) {
printf("\n삼각형 정보:\n");
printf("변 a: %.2f\n", triangle->side_a);
printf("변 b: %.2f\n", triangle->side_b);
printf("변 c (빗변): %.2f\n", triangle->side_c);
printf("각 A: %.2f 도\n", triangle->angle_A);
printf("각 B: %.2f 도\n", triangle->angle_B);
printf("각 C: 90.00 도\n");
}
int main() {
struct RightTriangle triangle = {0}; // 모든 값을 0 으로 초기화
// 알려진 변 또는 각 입력
printf("알려진 변/각 값을 입력하세요 (알 수 없는 경우 0 입력):\n");
printf("변 a 길이: ");
scanf("%lf", &triangle.side_a);
// ... (나머지 입력 부분)
// 미지의 값 계산
solve_triangle(&triangle);
// 결과 출력
print_triangle_info(&triangle);
return 0;
}
이제 업데이트된 프로그램을 컴파일하고 실행해 보겠습니다.
gcc ~/project/triangle_solver.c -o ~/project/triangle_solver -lm
~/project/triangle_solver
예시 입력 및 출력:
알려진 변/각 값을 입력하세요 (알 수 없는 경우 0 입력):
변 a 길이: 3
변 b 길이: 4
변 c (빗변) 길이: 0
각 A (도 단위): 0
각 B (도 단위): 0
삼각형 정보:
변 a: 3.00
변 b: 4.00
변 c (빗변): 5.00
각 A: 36.87도
각 B: 53.13도
각 C: 90.00도
삼각 함수 계산 이해
solve_triangle() 함수는 삼각비를 사용하여 누락된 값을 계산합니다.
- 피타고라스 정리 변 계산
asin() 함수 각도 계산
to_radians() 및 to_degrees() 함수는 각도와 라디안 간 변환에 도움이 됩니다.
- 이 프로그램은 다양한 입력 조합으로 삼각형을 풀 수 있습니다.
주요 삼각 관계
- 사인: 대변 / 빗변
- 코사인: 인접변 / 빗변
- 탄젠트: 대변 / 인접변
- 피타고라스 정리: a² + b² = c²