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 算法

Download history 104/week @ 2024-06-26 627/week @ 2024-07-03 63/week @ 2024-07-10 162/week @ 2024-07-24 574/week @ 2024-07-31 26/week @ 2024-08-07 112/week @ 2024-08-14

每月 874 次下载
用于 impact-rs

MIT 许可证

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 特性为从整数元组创建 RectVector 提供了便利的实现。

// 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));

此特性允许您以更简洁的方式创建 RectVector 实例,而无需手动将整数和浮点值转换为定点数 (fixed32::Fp)。

特性

  • 定点数运算:所有计算使用 fixed32::Fp,避免浮点数不精确。
  • 全面操作:包括向量的基本算术运算、归一化、旋转等。
  • 矩形操作:包括面积、周长、交集、并集和包含检查等。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
fixed32_math = "0.0.16"

许可证

本项目采用MIT许可证。有关详细信息,请参阅 LICENSE 文件。

依赖项

~39KB