找回密码
 中文实名注册
搜索
查看: 332|回复: 0

三角函数

[复制链接]

731

主题

577

回帖

2万

积分

管理员

积分
24978
发表于 2025-8-20 15:11:49 | 显示全部楼层 |阅读模式

角度与弧度转换:C++ 标准库的三角函数(如sin、cos)默认使用弧度,需掌握角度转弧度的公式:
弧度 = 角度 × π / 180
基本三角函数计算:sin(正弦)、cos(余弦)、tan(正切)在几何计算中的应用(如求三角形边长、物体运动轨迹等)。
反三角函数:asin、acos、atan(求角度),用于根据边长反推角度。
几何应用:结合三角函数解决三角形、圆形等几何问题(如求两点间距离、判断点是否在圆内、计算多边形面积等)。

[C++] 纯文本查看 复制代码
#include <iostream>
#include <cmath>   // 包含三角函数库
#include <iomanip> // 用于控制输出精度

using namespace std;

// 角度转弧度
double toRadian(double degree) {
    return degree * M_PI / 180.0;
}

// 弧度转角度
double toDegree(double radian) {
    return radian * 180.0 / M_PI;
}

int main() {
    // 示例:已知三角形两边a、b和夹角C,求第三边c(余弦定理)
    double a, b, C_degree;
    cout << "输入三角形的两边长度和夹角(角度):" << endl;
    cout << "边a = ";
    cin >> a;
    cout << "边b = ";
    cin >> b;
    cout << "夹角C(度) = ";
    cin >> C_degree;

    // 1. 角度转弧度(C++三角函数默认使用弧度)
    double C_radian = toRadian(C_degree);

    // 2. 应用余弦定理:c² = a² + b² - 2ab·cos(C)
    double c = sqrt(a*a + b*b - 2*a*b*cos(C_radian));
    cout << endl << "根据余弦定理计算:" << endl;
    cout << "第三边c的长度 = " << fixed << setprecision(2) << c << endl;

    // 3. 应用正弦定理验证:a/sin(A) = b/sin(B) = c/sin(C)
    // 计算角A的正弦值
    double sinA = a * sin(C_radian) / c;
    // 防止精度问题导致sinA超出[-1,1]范围
    sinA = max(min(sinA, 1.0), -1.0);
    double A_degree = toDegree(asin(sinA));  // 反三角函数求角度

    // 计算角B(三角形内角和为180度)
    double B_degree = 180 - A_degree - C_degree;

    cout << endl << "根据正弦定理验证:" << endl;
    cout << "角A = " << fixed << setprecision(1) << A_degree << "度" << endl;
    cout << "角B = " << fixed << setprecision(1) << B_degree << "度" << endl;

    // 验证正弦定理比例是否相等(允许微小误差)
    double ratio1 = a / sin(toRadian(A_degree));
    double ratio2 = b / sin(toRadian(B_degree));
    double ratio3 = c / sin(C_radian);
    cout << endl << "正弦定理比例验证:" << endl;
    cout << "a/sin(A) = " << fixed << setprecision(2) << ratio1 << endl;
    cout << "b/sin(B) = " << fixed << setprecision(2) << ratio2 << endl;
    cout << "c/sin(C) = " << fixed << setprecision(2) << ratio3 << endl;

    return 0;
}
    

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

快速回复 返回顶部 返回列表