19 #ifndef B2_COLLISION_H    20 #define B2_COLLISION_H   165         bool IsValid() 
const;
   170                 return 0.5f * (lowerBound + upperBound);
   176                 return 0.5f * (upperBound - lowerBound);
   182                 float32 wx = upperBound.x - lowerBound.x;
   183                 float32 wy = upperBound.y - lowerBound.y;
   184                 return 2.0f * (wx + wy);
   205                 result = result && lowerBound.x <= aabb.
lowerBound.
x;
   206                 result = result && lowerBound.y <= aabb.
lowerBound.
y;
   207                 result = result && aabb.
upperBound.
x <= upperBound.x;
   208                 result = result && aabb.
upperBound.
y <= upperBound.y;
   256         b2Vec2 d = upperBound - lowerBound;
   257         bool valid = d.
x >= 0.0f && d.
y >= 0.0f;
   258         valid = valid && lowerBound.IsValid() && upperBound.IsValid();
   268         if (d1.
x > 0.0f || d1.
y > 0.0f)
   271         if (d2.
x > 0.0f || d2.
y > 0.0f)
 
point was removed in the update 
int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], const b2Vec2 &normal, float32 offset, int32 vertexIndexA)
Clipping for contact manifolds. 
void Combine(const b2AABB &aabb)
Combine an AABB into this one. 
b2Vec2 GetCenter() const 
Get the center of the AABB. 
Used for computing contact manifolds. 
b2Vec2 localNormal
not use for Type::e_points 
b2Vec2 lowerBound
the lower vertex 
void b2CollidePolygonAndCircle(b2Manifold *manifold, const b2PolygonShape *polygonA, const b2Transform &xfA, const b2CircleShape *circleB, const b2Transform &xfB)
Compute the collision manifold between a polygon and a circle. 
void b2CollideCircles(b2Manifold *manifold, const b2CircleShape *circleA, const b2Transform &xfA, const b2CircleShape *circleB, const b2Transform &xfB)
Compute the collision manifold between two circles. 
bool Contains(const b2AABB &aabb) const 
Does this aabb contain the provided AABB. 
b2Vec2 normal
world vector pointing from A to B 
b2ContactID id
uniquely identifies a contact point between two shapes 
#define b2_maxManifoldPoints
b2Vec2 GetExtents() const 
Get the extents of the AABB (half-widths). 
void b2CollideEdgeAndCircle(b2Manifold *manifold, const b2EdgeShape *polygonA, const b2Transform &xfA, const b2CircleShape *circleB, const b2Transform &xfB)
Compute the collision manifold between an edge and a circle. 
const uint8 b2_nullFeature
bool b2TestOverlap(const b2Shape *shapeA, int32 indexA, const b2Shape *shapeB, int32 indexB, const b2Transform &xfA, const b2Transform &xfB)
Determine if two generic shapes overlap. 
int32 pointCount
the number of manifold points 
b2Vec2 localPoint
usage depends on manifold type 
float32 tangentImpulse
the friction impulse 
b2Vec2 localPoint
usage depends on manifold type 
void b2CollidePolygons(b2Manifold *manifold, const b2PolygonShape *polygonA, const b2Transform &xfA, const b2PolygonShape *polygonB, const b2Transform &xfB)
Compute the collision manifold between two polygons. 
An axis aligned bounding box. 
b2PointState
This is used for determining the state of contact points. 
point persisted across the update 
float32 GetPerimeter() const 
Get the perimeter length. 
void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], const b2Manifold *manifold1, const b2Manifold *manifold2)
void Combine(const b2AABB &aabb1, const b2AABB &aabb2)
Combine two AABBs into this one. 
bool IsValid() const 
Verify that the bounds are sorted. 
point was added in the update 
This is used to compute the current state of a contact manifold. 
b2Vec2 upperBound
the upper vertex 
float32 normalImpulse
the non-penetration impulse 
void b2CollideEdgeAndPolygon(b2Manifold *manifold, const b2EdgeShape *edgeA, const b2Transform &xfA, const b2PolygonShape *circleB, const b2Transform &xfB)
Compute the collision manifold between an edge and a circle.