#vector #dynamics #static #particle #body #2d-3d

i_mth

这是一个持续开发中的数学库,适用于粒子、刚体动力学和静力学的使用。

6 个版本

0.1.2 2023 年 7 月 29 日
0.1.1 2023 年 7 月 28 日
0.0.2 2023 年 7 月 26 日

数学 中排名第 385

每月下载量 29

MIT 许可证

29KB
498

i_mth

这是一个用于解决简单到复杂静态和动力学问题的 crate。

该 crate 尽量保持精简,方法名称直接对应其实际功能。

由于我是个怪人,有精度问题,所以目前库中的所有类型和将来要实现的功能都将使用 f64 数据类型。

用法

将其添加到 Cargo.toml

[dependencies]
i_mth = "0.1.2"

当前可用的 Crate 功能

  1. 支持 2D 和 3D 向量。
  2. 常见常量。
  3. 一个计算逃逸速度和其他天体加速度的实用模块。(未来将添加更多功能)。

目前正在开发中

  1. 支持矩阵、矩阵运算和变换
  2. 数值计算

示例

  1. 使用 i_mth 创建 2D 和 3D 向量
    use i_mth::vector3d::Vector3D;

    fn main() {
        // there are several available methods to create vectors
        let v3d_0 = Vector3D::new(1.0, 1.0, 1.0);
        let v3d_1 = Vector3D::set(1.0);

        assert_eq!(v3d_0, v3d_1);
    }
  1. 力矩:力 F 在点 O 处的力矩可以定义为向量积(叉积)rF。其中 r 是力作用点到固定参考点 O 之间的位置向量,即 力矩 = r x F
    use i_mth::vector3d::Vector3D;

    fn main() {
        let f = Vector3D::new(400.0, 693.0, 0.0);
        let r = Vector3D::new(-0.2, 0.16, 0.0);

        let moment = r.cross(f);
        assert_eq!(-202.6, moment.z);
    }
  1. 使用实用工具计算 逃逸速度:逃逸速度或逃逸速度是自由、非推进物体脱离主天体引力影响所需的最小速度,从而到达无限距离。
    use i_mth::utils::calc_escape_velocity;

    fn main() {
        let mass_of_moon = 7.342e22;
        let radius_of_moon = 1737.4e3;

        let escape_vel_of_moon = calc_escape_velocity(mass_of_moon, radius_of_moon);

        println!("{} km/s", escape_vel_of_moon / 1000.0);
    }

支持 fmt

    use i_mth::vector3d::Vector3D;

    fn main() {
        let unit_i = Vector3D::i();
        let unit_j = Vector3D::j();

        let unit_k = unit_i.cross(unit_j);

        println!("{}", unit_k);
    }

无运行时依赖