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 |
|
在 数学 中排名第528
每月下载量37次
200KB
2K SLoC
Mathx
一个兼容no_std
的数学库,用于嵌入式系统。在移除标准库时恢复一些丢失的功能。
完全可用且稳定的结构
- Math (用于
no_std以补偿缺失的功能)
- 向量 (
Vector2
、Vector3
) - 四元数 (
Quaternion
) - 射线 (
Ray2
、Ray3
)
注意:此库仍在开发中。
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
类型包含数学功能,如cos
、log
、powf
等。但没有标准库,这些数学函数将不再存在。默认情况下,这个库尝试使用这些数学函数,因为它们预计比这种实现要快得多且更精确。添加no_std
功能可以使库切换到那些数学函数的近似实现,这些实现旨在平衡精度和性能,适用于嵌入式系统,恢复这些功能。它避免使用任何查找表,因为空间复杂度可能是一个潜在的问题。
依赖项
~170KB