olcUTIL_Geometry2D
一个独立的单头文件,处理各种各样的2D几何交互。
注意!不需要 olc::PixelGameEngine 即可使用此文件,尽管它与之配合得很好!
Geometry2D(& PGE)工具文件定义了:
- 点
- 线
- 圆
- 矩形
- 三角形
- 射线
我希望此文件提供涵盖以下功能的各种形状组合的函数:
- [true/false] contains (形状A,形状B) - 形状B完全存在于形状A内。形状B的点可以接触形状A的边界。
- [true/false] overlaps (形状A,形状B) - 形状A的某个部分和形状B的某个部分占据相同的2D空间。
- [vector
] intersects (形状A,形状B) - 返回形状A和形状B的边界重叠的所有点(或无)。 - [optional
] project (形状A,形状B,射线) - 沿射线将形状A投射到与形状B接触的位置(或未接触)。 - [optional<normal, double>] collide (形状A,形状B,射线) - 检查形状A沿射线移动时是否与形状B发生碰撞。如果发生碰撞,返回射线上的距离和形状B碰撞点的法线。
- [optional
] reflect (射线A,形状B) - 返回一条射线(如果可能),该射线是入射射线A在形状B上的反射射线。 - [point] closest (形状A,形状B) - 返回形状A上距离形状B任意部分最近的一点。
- [point] constrain (形状A,点B) - 返回一个位于形状A内部且距离点B最近的点。
- [circle] envelope_c (形状A) - 返回一个完全包裹形状A的最小圆形。
- [rect] envelope_r (形状A) - 返回一个完全包裹形状A的最小矩形。
这个项目是一个协作努力,是一个持续"进行中"的工作 - 如果您觉得可以做出贡献,请随时参与! 需要实现许多功能,我们尚未实现所有功能。请查看头文件中的完成矩阵。所有贡献者将在头文件中获得署名,这将是其他项目需要某个函数时的一个出色的资源/参考。
所以,请帮助我!
我已经包含了一个简单的测试应用程序(随着库的成熟它也需要一些改进),提交问题和PR来完成它:D
(忽略对PGE或QuickGUI的问题和PR,请使用适当的repo/论坛)