Box2D: /build/box2d/src/box2d-2.4.2/include/box2d/b2_collision.h File Reference

| Box2D 2.4.1 A 2D physics engine for games

Loading...
Searching...
No Matches
Classes | Enumerations | Functions | Variables
b2_collision.h File Reference
`#include <limits.h>`
`#include "b2_api.h"`
`#include "b2_math.h"`

Go to the source code of this file.

## Classes
struct | b2ContactFeature
union | b2ContactID
| Contact ids to facilitate warm starting. 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...
struct | b2Hull
| Convex hull used for polygon collision. More...

## Enumerations
enum | b2PointState { b2_nullState , b2_addState , b2_persistState , b2_removeState }
| This is used for determining the state of contact points. More...

## Functions
B2_API void | b2GetPointStates (b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], const b2Manifold *manifold1, const b2Manifold *manifold2)
B2_API void | b2CollideCircles (b2Manifold *manifold, const b2CircleShape *circleA, const b2Transform &xfA, const b2CircleShape *circleB, const b2Transform &xfB)
| Compute the collision manifold between two circles.
B2_API 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.
B2_API void | b2CollidePolygons (b2Manifold *manifold, const b2PolygonShape *polygonA, const b2Transform &xfA, const b2PolygonShape *polygonB, const b2Transform &xfB)
| Compute the collision manifold between two polygons.
B2_API 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.
B2_API void | b2CollideEdgeAndPolygon (b2Manifold *manifold, const b2EdgeShape *edgeA, const b2Transform &xfA, const b2PolygonShape *polygonB, const b2Transform &xfB)
| Compute the collision manifold between an edge and a polygon.
B2_API int32 | b2ClipSegmentToLine (b2ClipVertex vOut[2], const b2ClipVertex vIn[2], const b2Vec2 &normal, float offset, int32 vertexIndexA)
| Clipping for contact manifolds.
B2_API bool | b2TestOverlap (const b2Shape *shapeA, int32 indexA, const b2Shape *shapeB, int32 indexB, const b2Transform &xfA, const b2Transform &xfB)
| Determine if two generic shapes overlap.
b2Hull | b2ComputeHull (const b2Vec2 *points, int32 count)
bool | b2ValidateHull (const b2Hull &hull)
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

## ◆ b2PointState

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

## ◆ b2ComputeHull()

b2Hull b2ComputeHull | ( | const b2Vec2 * | points,
|  | int32 | count
| ) |  |

Compute the convex hull of a set of points. Returns an empty hull if it fails. Some failure cases:

- all points very close together
- all points on a line
- less than 3 points
- more than b2_maxPolygonVertices points This welds close points and removes collinear points.

## ◆ b2GetPointStates()

B2_API 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.

## ◆ b2ValidateHull()

bool b2ValidateHull | ( | const b2Hull & | hull | ) |

This determines if a hull is valid. Checks for:

- convexity
- collinear points This is expensive and should not be called at runtime.