三角法

计算一个三角形的边长

std-badge cat-science-badge

计算直角三角形斜边的长度,斜边的角度为 2 弧度,对边的长度为 80。

fn main() {
    let angle: f64 = 2.0;
    let side_length = 80.0;

    let hypotenuse = side_length/angle.sin();

    println!("Hypotenuse: {}", hypotenuse);
}

验证 tan 等于,sin 除以 cos

std-badge cat-science-badge

验证 tan(x)是否等于 sin(x)/cos(x),给出 x=6

fn main() {
    let x: f64 = 6.0;

    let a = x.tan();
    let b = x.sin()/x.cos();

    assert_eq!(a, b);
}

地球上,两点之间的距离

std-badge

默认情况下,rust 提供数学[浮点数方法],如三角函数、平方根、弧度和度数之间的转换函数等。

下面的示例使用半正矢公式,计算地球上两点的公里距离。这两个点用经纬度对表示。然后,to_radians把它们转换成弧度。sincospowisqrt计算中心角。最后,就可以计算距离。

fn main() {
    let earth_radius_kilometer = 6371.0_f64;
    let (paris_latitude_degrees, paris_longitude_degrees) = (48.85341_f64, -2.34880_f64);
    let (london_latitude_degrees, london_longitude_degrees) = (51.50853_f64, -0.12574_f64);

    let paris_latitude = paris_latitude_degrees.to_radians();
    let london_latitude = london_latitude_degrees.to_radians();

    let delta_latitude = (paris_latitude_degrees - london_latitude_degrees).to_radians();
    let delta_longitude = (paris_longitude_degrees - london_longitude_degrees).to_radians();

    let central_angle_inner = (delta_latitude/2.0).sin().powi(2)
        + paris_latitude.cos() * london_latitude.cos() * (delta_longitude/2.0).sin().powi(2);
    let central_angle = 2.0 * central_angle_inner.sqrt().asin();

    let distance = earth_radius_kilometer * central_angle;

    println!(
        "Distance between Paris and London on the surface of Earth is {:.1} kilometers",
        distance
    );
}