87次发布
0.22.10 | 2024年5月21日 |
---|---|
0.22.9 | 2023年3月25日 |
0.22.7 | 2022年4月4日 |
0.22.6 | 2021年5月31日 |
0.1.5 | 2015年7月23日 |
#5 in 数学
267,761 次每月下载
用于 1,172 个crate(148个直接使用)
495KB
12K SLoC
euclid
这是一个关注2D图形和布局的几何类型的轻量级库。
lib.rs
:
这是一系列针对计算机图形的强类型数学工具,侧重于2D图形和布局。
所有类型都是泛型,其组件类型为标量类型(f32
、i32
等),并带有泛型Unit参数,这有助于防止不同空间值的混合。例如,不应允许使用世界空间向量来平移屏幕空间位置,这可以使用泛型Unit参数表达。
此单元系统不是强制的,所有结构都有一个默认单位的别名:UnknownUnit
。例如:default::Point2D<T>
等价于Point2D<T, UnknownUnit>
。客户端代码通常为每种类型创建一组别名,无需进一步处理类型单元的细节。例如
use euclid::*;
pub struct ScreenSpace;
pub type ScreenPoint = Point2D<f32, ScreenSpace>;
pub type ScreenSize = Size2D<f32, ScreenSpace>;
pub struct WorldSpace;
pub type WorldPoint = Point3D<f32, WorldSpace>;
pub type ProjectionMatrix = Transform3D<f32, WorldSpace, ScreenSpace>;
// etc...
所有欧几里得类型都被标记为#[repr(C)]
,以便于将它们暴露给外部函数接口(前提是底层标量类型也支持repr(C)
)。
一组所有类型的别名,并标记默认未知单位。
依赖项
~94–440KB