#vector #quaternions #geometry #no-std #no-alloc

no-std mathx

专为与no_std一起使用而设计的数学库

4个版本 (2个破坏性更新)

0.4.1 2023年8月20日
0.4.0 2023年7月12日
0.3.0 2023年5月26日
0.1.0 2023年4月27日
0.0.1 2023年4月18日

数学 中排名第528

每月下载量37

自定义许可

200KB
2K SLoC

Mathx

Build Latest Version

一个兼容no_std的数学库,用于嵌入式系统。在移除标准库时恢复一些丢失的功能。

完全可用且稳定的结构

  • Math (用于no_std以补偿缺失的功能)
  • 向量 (Vector2Vector3)
  • 四元数 (Quaternion)
  • 射线 (Ray2Ray3)

完整文档:https://docs.rs/mathx

注意:此库仍在开发中。

Math (结构体)

这个结构体更像是“静态”结构体,其中包含所有标准库中包含的数学函数以及一些额外的函数。它基本上使用默认实现,并在使用no_std功能时切换到近似实现,以确保无论何时功能都在那里。以下是如何替换的示例

let x = 1.0_f32;

// This will cause a compilation error if using #![no_std]
println!("X: {}", x.cos());

// Use the version inside Math as it will work if you're using #![no_std] or not
println!("X: {}", Math::cos(x));

此结构的完整文档:https://docs.rs/mathx/latest/mathx/struct.Math.html

no_std环境中使用

这个库与no_std环境兼容,尽管这是一个可选功能,您需要设置才能使其与no_std环境兼容。在使用标准库的情况下,f32类型包含数学功能,如coslogpowf等。但没有标准库,这些数学函数将不再存在。默认情况下,这个库尝试使用这些数学函数,因为它们预计比这种实现要快得多且更精确。添加no_std功能可以使库切换到那些数学函数的近似实现,这些实现旨在平衡精度和性能,适用于嵌入式系统,恢复这些功能。它避免使用任何查找表,因为空间复杂度可能是一个潜在的问题。

依赖项

~170KB