28个版本
新 0.2.25 | 2024年8月21日 |
---|---|
0.2.24 | 2024年8月18日 |
0.2.21 | 2024年7月31日 |
0.2.9 | 2024年6月26日 |
0.1.2 | 2024年5月25日 |
在数学分类中排名第74
每月下载量955
215KB
4K SLoC
num-quaternion
Rust的四元数。
num-quaternion
是一个Rust库,用于实现健壮、高效且易于使用的四元数算术和操作。四元数在计算机图形学、机器人和物理学中广泛用于表示旋转和方向。
特性
- 基本四元数操作:加法、减法、乘法、除法和共轭。
- 单位四元数:对单位四元数的优化操作提供特殊支持。
- 转换函数:转换到/从欧拉角、旋转向量和更多。
- 插值:球面线性插值(SLERP)以实现平滑旋转。
- 全面文档:详细的文档和示例,帮助您快速入门。
安装
将num-quaternion
添加到您的Cargo.toml
[dependencies]
num-quaternion = "0.2.25"
对于#![no_std]
环境,禁用默认的std
功能并启用libm
以利用num-quaternion
的高级数学功能
[dependencies]
num-quaternion = { version = "0.2.25", default-features = false, features = ["libm"] }
然后,将其包含在您的crate中
use num_quaternion::{Quaternion, UnitQuaternion, Q32, Q64, UQ32, UQ64};
用法
创建四元数
// Create a quaternion with explicit components
let q1 = Q32::new(1.0, 2.0, 3.0, 4.0); // = 1 + 2i + 3j + 4k
// Create a quaternion using shorthand notation
let q2 = 1.0 + Q32::I; // = 1 + i
基本操作
let q3 = q1 + q2; // Quaternion addition
let q4 = q1 * q2; // Quaternion multiplication
let q_conj = q1.conj(); // Quaternion conjugation
单位四元数
let uq1 = q1.normalize().expect("Normalization failed"); // Normalize quaternion
let uq2 = UQ32::I; // Unit quaternion representing the imaginary unit
转换函数
// From Euler angles
let (roll, pitch, yaw) = (1.5, 1.0, 3.0);
let uq = UnitQuaternion::from_euler_angles(roll, pitch, yaw);
// To Euler angles
let euler_angles = uq.to_euler_angles();
// From rotation vector
let rotation_vector = [1.0, 0.0, 0.0]; // x axis rotation, 1 radian
let uq = UnitQuaternion::from_rotation_vector(&rotation_vector);
// To rotation vector
let rotation_vector = uq.to_rotation_vector();
球面线性插值(SLERP)
let uq1 = UQ32::ONE; // Create a unit quaternion
let uq2 = UQ32::I; // Create another unit quaternion
let interpolated = uq1.slerp(&uq2, 0.3); // Perform SLERP with t=0.3
文档
有关全面文档和示例,请参阅docs.rs。
有关详细设计原则和错误处理策略,请参阅设计原则。
在RELEASES.md中提供了详细的发行说明。
贡献
欢迎贡献!请Fork仓库并提交拉取请求。通过贡献,您同意您的贡献将在Apache-2.0和MIT许可下双许可。
如果您有任何问题或需要帮助,请随时在GitHub上创建一个问题。
更详细的说明可以在CONTRIBUTING.md指南中找到。
许可协议
许可协议如下:
您可任选其一。
致谢
特别感谢@cuviper提供的num-complex
crate,该crate是该crate的模板。num-quaternion
被设计成能够无缝集成到rust-num
crate系列中。
依赖项
约140–430KB