15个版本
新 0.0.16 | 2024年8月18日 |
---|---|
0.0.15 | 2024年8月4日 |
0.0.11 | 2024年7月30日 |
0.0.2 | 2024年2月26日 |
#415 in 算法
每月 874 次下载
用于 impact-rs
25KB
469 行
Fixed32 Math
fixed32_math
是一个Rust包,提供了使用定点数运算进行高效2D向量和矩形操作的库。适用于需要固定精度的应用程序,非常适合图形编程、游戏开发和嵌入式系统等场景,在这些场景中,确定性的结果至关重要。
概述
向量
Vector
结构体代表一个2D向量,支持包括加法、减法、缩放、归一化等在内的各种操作。向量组件通过 fixed32
包使用定点数运算。
示例用法
use fixed32::Fp;
use your_crate_name::Vector;
// Create vectors using the `From` trait
let v1 = Vector::from((2, 3)); // Automatically converts (2, 3) to Vector with Fp::from
let v2 = Vector::from((1, 4));
// Vector operations
let sum = v1 + v2;
let dot_product = v1.dot(&v2);
let normalized = v1.normalize().unwrap();
let rotated = v1.rotate(Fp::from(90).to_radians());
矩形
Rect
结构体代表一个由其左下角位置和大小定义的轴对齐矩形。它支持交集、并集、膨胀和收缩等操作,以及检查点或另一个矩形是否包含在其中。
示例用法
use fixed32::Fp;
use your_crate_name::{Vector, Rect};
// Create Rect instances using `From` trait
let rect1 = Rect::from((0, 0, 10, 10));
let rect2 = Rect::from((5, 5, 15, 15));
// Rectangle operations
let intersection = rect1.intersection(&rect2);
let union = rect1.union(&rect2);
let contains_point = rect1.contains_point(&Vector::from((2, 2)));
let expanded_rect = rect1.expanded(Vector::from((2, 2)));
使用 From
特性
From
特性为从整数元组创建 Rect
和 Vector
提供了便利的实现。
// Create a Rect from a tuple of integers
let rect = Rect::from((1, 2, 3, 4));
let rect2 = Rect::from((1.24, 2.34, 3.98, 4.01));
// Create a Vector from a tuple of integers
let vector = Vector::from((2, 2));
此特性允许您以更简洁的方式创建 Rect
和 Vector
实例,而无需手动将整数和浮点值转换为定点数 (fixed32::Fp
)。
特性
- 定点数运算:所有计算使用
fixed32::Fp
,避免浮点数不精确。 - 全面操作:包括向量的基本算术运算、归一化、旋转等。
- 矩形操作:包括面积、周长、交集、并集和包含检查等。
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
fixed32_math = "0.0.16"
许可证
本项目采用MIT许可证。有关详细信息,请参阅 LICENSE 文件。
依赖项
~39KB