Chipmunk 轴对齐边界盒:cpBB
优质
小牛编辑
152浏览
2023-12-01
结构体定义和构造函数
- 简单的边界盒结构体,存储着
left
,bottom
,right
,top
等值。
typedef struct cpBB{
cpFloat l, b, r ,t;
} cpBB
- 便捷的构造函数,如
cpv()
函数一样返回一个副本而不是一个申请的指针。
cpBB cpBBNew(const cpFloat l, const cpFloat b, const cpFloat r, const cpFloat t)
- 便捷的构造函数,用来构造一个位置为
p
,半径为r
的一个圆的边界盒
cpBB cpBBNewForCircle(const cpVect p, const cpFloat r)
运算操作
- cpBool cpBBIntersects(const cpBB a, const cpBB b) - 如果边界框相交返回true
- cpBool cpBBContainsBB(const cpBB bb, const cpBB other) - 如果
bb
完全包含other
返回true - cpBool cpBBContainsVect(const cpBB bb, const cpVect v) - 如果
bb
包含v
返回true - cpBB cpBBMerge(const cpBB a, const cpBB b) - 返回包含
a
和b
的最小的边界框 - cpBB cpBBExpand(const cpBB bb, const cpVect v) - 返回包含
bb
和v
的最小的边界框 - cpVect cpBBCenter(const cpBB bb) - 返回
bb
的中心点矢量 - cpFloat cpBBArea(cpBB bb) - 返回
bb
矢量表示的边界框的面积 - cpFloat cpBBMergedArea(cpBB a, cpBB b) - 合并
a
和b
然后返回合并后的矢量的边界框的面积 - cpFloat cpBBSegmentQuery(cpBB bb, cpVect a, cpVect b) - 返回分段查询相交
bb
的相交点个数,如果没有相交,返回INFINITY
- cpBool cpBBIntersectsSegment(cpBB bb, cpVect a, cpVect b) - 如果由
a
和b
两端点定义的线段和bb
相交返回true - cpVect cpBBClampVect(const cpBB bb, const cpVect v) - 返回
v
在边界框中被截断的矢量的副本 - cpVect cpBBWrapVect(const cpBB bb, const cpVect v) - 返回
v
包含边界框的矢量的副本