Box2D 2.4.1
A 2D physics engine for games
Loading...
Searching...
No Matches
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

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.