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 数学

Download history 52613/week @ 2024-05-03 47809/week @ 2024-05-10 54141/week @ 2024-05-17 54169/week @ 2024-05-24 57675/week @ 2024-05-31 66224/week @ 2024-06-07 71067/week @ 2024-06-14 65939/week @ 2024-06-21 60623/week @ 2024-06-28 59699/week @ 2024-07-05 68278/week @ 2024-07-12 66587/week @ 2024-07-19 66441/week @ 2024-07-26 59954/week @ 2024-08-02 77550/week @ 2024-08-09 53342/week @ 2024-08-16

267,761 次每月下载
用于 1,172 个crate(148个直接使用)

MIT/Apache

495KB
12K SLoC

euclid

这是一个关注2D图形和布局的几何类型的轻量级库。


lib.rs:

这是一系列针对计算机图形的强类型数学工具,侧重于2D图形和布局。

所有类型都是泛型,其组件类型为标量类型(f32i32等),并带有泛型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