37         if (distSqr > radius * radius)
    63         int32 normalIndex = 0;
    70         for (
int32 i = 0; i < vertexCount; ++i)
    88         int32 vertIndex1 = normalIndex;
    89         int32 vertIndex2 = vertIndex1 + 1 < vertexCount ? vertIndex1 + 1 : 0;
    90         b2Vec2 v1 = vertices[vertIndex1];
    91         b2Vec2 v2 = vertices[vertIndex2];
   140                 b2Vec2 faceCenter = 0.5f * (v1 + v2);
   141                 float32 separation = 
b2Dot(cLocal - faceCenter, normals[vertIndex1]);
   142                 if (separation > radius)
 
float32 b2Dot(const b2Vec2 &a, const b2Vec2 &b)
Perform the dot product on two vectors. 
b2Vec2 b2Mul(const b2Mat22 &A, const b2Vec2 &v)
b2Vec2 localNormal
not use for Type::e_points 
void b2CollideCircles(b2Manifold *manifold, const b2CircleShape *circleA, const b2Transform &xfA, const b2CircleShape *circleB, const b2Transform &xfB)
Compute the collision manifold between two circles. 
b2ContactID id
uniquely identifies a contact point between two shapes 
void SetZero()
Set this vector to all zeros. 
float32 b2DistanceSquared(const b2Vec2 &a, const b2Vec2 &b)
b2Vec2 m_vertices[b2_maxPolygonVertices]
int32 pointCount
the number of manifold points 
b2Vec2 localPoint
usage depends on manifold type 
b2Vec2 b2MulT(const b2Mat22 &A, const b2Vec2 &v)
b2Vec2 localPoint
usage depends on manifold type 
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. 
b2ManifoldPoint points[b2_maxManifoldPoints]
the points of contact 
float32 Normalize()
Convert this vector into a unit vector. Returns the length. 
b2Vec2 m_normals[b2_maxPolygonVertices]