# Box2D/Box2D/Collision/b2Collision.h File Reference

`#include <Box2D/Common/b2Math.h>`
`#include <climits>`

Go to the source code of this file.

## Classes
union | b2ContactID
| Contact ids to facilitate warm starting. More...
struct | b2ContactID::Features
| The features that intersect to form the contact point. More...
struct | b2ManifoldPoint
struct | b2Manifold
struct | b2WorldManifold
| This is used to compute the current state of a contact manifold. More...
struct | b2ClipVertex
| Used for computing contact manifolds. More...
struct | b2RayCastInput
| Ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). More...
struct | b2RayCastOutput
struct | b2AABB
| An axis aligned bounding box. More...
## Enumerations
enum | b2PointState { b2_nullState, b2_addState, b2_persistState, b2_removeState }
| This is used for determining the state of contact points. More...
## Functions
void | b2GetPointStates (b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], const b2Manifold *manifold1, const b2Manifold *manifold2)
void | b2CollideCircles (b2Manifold *manifold, const b2CircleShape *circle1, const b2Transform &xf1, const b2CircleShape *circle2, const b2Transform &xf2)
| Compute the collision manifold between two circles.
void | b2CollidePolygonAndCircle (b2Manifold *manifold, const b2PolygonShape *polygon, const b2Transform &xf1, const b2CircleShape *circle, const b2Transform &xf2)
| Compute the collision manifold between a polygon and a circle.
void | b2CollidePolygons (b2Manifold *manifold, const b2PolygonShape *polygon1, const b2Transform &xf1, const b2PolygonShape *polygon2, const b2Transform &xf2)
| Compute the collision manifold between two polygons.
int32 | b2ClipSegmentToLine (b2ClipVertex vOut[2], const b2ClipVertex vIn[2], const b2Vec2 &normal, float32 offset)
| Clipping for contact manifolds.
bool | b2TestOverlap (const b2Shape *shapeA, const b2Shape *shapeB, const b2Transform &xfA, const b2Transform &xfB)
| Determine if two generic shapes overlap.
bool | b2TestOverlap (const b2AABB &a, const b2AABB &b)
## Variables
const uint8 | b2_nullFeature = UCHAR_MAX

## Detailed Description

Structures and functions used for computing contact points, distance queries, and TOI queries.

## Enumeration Type Documentation

enum b2PointState

This is used for determining the state of contact points.

Enumerator:

  b2_nullState | point does not exist
  b2_addState | point was added in the update
  b2_persistState | point persisted across the update
  b2_removeState | point was removed in the update

## Function Documentation

int32 b2ClipSegmentToLine | ( | b2ClipVertex | vOut[2],
|  | const b2ClipVertex | vIn[2],
|  | const b2Vec2 & | normal,
|  | float32 | offset |
| ) |  |  |

Clipping for contact manifolds.

void b2CollideCircles | ( | b2Manifold * | manifold,
|  | const b2CircleShape * | circle1,
|  | const b2Transform & | xf1,
|  | const b2CircleShape * | circle2,
|  | const b2Transform & | xf2 |
| ) |  |  |

Compute the collision manifold between two circles.

void b2CollidePolygonAndCircle | ( | b2Manifold * | manifold,
|  | const b2PolygonShape * | polygon,
|  | const b2Transform & | xf1,
|  | const b2CircleShape * | circle,
|  | const b2Transform & | xf2 |
| ) |  |  |

Compute the collision manifold between a polygon and a circle.

void b2CollidePolygons | ( | b2Manifold * | manifold,
|  | const b2PolygonShape * | polygon1,
|  | const b2Transform & | xf1,
|  | const b2PolygonShape * | polygon2,
|  | const b2Transform & | xf2 |
| ) |  |  |

Compute the collision manifold between two polygons.

void b2GetPointStates | ( | b2PointState | state1[b2_maxManifoldPoints],
|  | b2PointState | state2[b2_maxManifoldPoints],
|  | const b2Manifold * | manifold1,
|  | const b2Manifold * | manifold2 |
| ) |  |  |

Compute the point states given two manifolds. The states pertain to the transition from manifold1 to manifold2. So state1 is either persist or remove while state2 is either add or persist.

bool b2TestOverlap | ( | const b2AABB & | a,
|  | const b2AABB & | b |
| ) |  |  | `[inline]`

bool b2TestOverlap | ( | const b2Shape * | shapeA,
|  | const b2Shape * | shapeB,
|  | const b2Transform & | xfA,
|  | const b2Transform & | xfB |
| ) |  |  |

Determine if two generic shapes overlap.

## Variable Documentation

const uint8 b2_nullFeature = UCHAR_MAX