Chipmunk 轴对齐边界盒:cpBB

优质
小牛编辑
152浏览
2023-12-01

结构体定义和构造函数

  • 简单的边界盒结构体,存储着left,bottom,right,top等值。
  1. typedef struct cpBB{
  2. cpFloat l, b, r ,t;
  3. } cpBB
  • 便捷的构造函数,如cpv()函数一样返回一个副本而不是一个申请的指针。
  1. cpBB cpBBNew(const cpFloat l, const cpFloat b, const cpFloat r, const cpFloat t)
  • 便捷的构造函数,用来构造一个位置为p,半径为r的一个圆的边界盒
  1. 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) - 返回包含ab的最小的边界框
  • cpBB cpBBExpand(const cpBB bb, const cpVect v) - 返回包含bbv的最小的边界框
  • cpVect cpBBCenter(const cpBB bb) - 返回bb的中心点矢量
  • cpFloat cpBBArea(cpBB bb) - 返回bb矢量表示的边界框的面积
  • cpFloat cpBBMergedArea(cpBB a, cpBB b) - 合并ab然后返回合并后的矢量的边界框的面积
  • cpFloat cpBBSegmentQuery(cpBB bb, cpVect a, cpVect b) - 返回分段查询相交bb的相交点个数,如果没有相交,返回INFINITY
  • cpBool cpBBIntersectsSegment(cpBB bb, cpVect a, cpVect b) - 如果由ab两端点定义的线段和bb相交返回true
  • cpVect cpBBClampVect(const cpBB bb, const cpVect v) - 返回v在边界框中被截断的矢量的副本
  • cpVect cpBBWrapVect(const cpBB bb, const cpVect v) - 返回v包含边界框的矢量的副本