8 个稳定版本
1.0.7 | 2022年4月11日 |
---|---|
1.0.6 | 2022年4月9日 |
1.0.3 | 2022年4月8日 |
1.0.2 | 2022年4月6日 |
#1989 在 算法 中
每月22次下载
17KB
398 行
L-Geo
2D 几何库,用 Rust 编写,基于 lmaths。
提供经典 2D 形状,如
- 圆
- 矩形
- 凸多边形
它实现了用于计算碰撞的 GJK 算法,以及用于提取碰撞信息的 EPA 算法(尚未开发)。
示例
首先,始终创建一个 GJK 结构体,其中包含您的设置,如接触容差
let gjk = GJK::new();
然后您可以开始创建形状
let c = Circle::new(Vector2::new(4.6, -3.2), 1.43);
let r = AABB::new(Vector2::new(-1.0, 0.5), Vector2::new(2.0, 1.0));
let p = Polygon::new(Vector2::new(0.0, 0.0),
vec![Vector2::new(0.0, 0.5),
Vector2::new(-1.5, -0.5),
Vector2::new(-3.0, 0.5),
]);
最后,您可以检查它们之间的碰撞。将结果转换为布尔值是通过调用 result.is_some()
来完成的,因为 intersect()
函数返回 GJK 的最终单纯形。
let c_vs_r = gjk.intersect(&c, &r).is_some(); // False
let c_vs_p = gjk.intersect(&c, &p).is_some(); // False
let r_vs_p = gjk.intersect(&r, &p).is_some(); // True
依赖关系
~85KB