Resources of techniques use for collision detection in 2D?
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Introduction
Collision detection is a critical aspect of computer graphics, game design, robotics, and physics simulations. Specifically for 2D environments, efficient collision detection ensures that interactions between virtual objects are realistic and responsive. This article explores the various techniques used for 2D collision detection, providing technical insights and examples where relevant.
Broad Phase vs. Narrow Phase
Collision detection can be divided into two main phases:
- Broad Phase: Designed to quickly identify pairs of objects that might be colliding. This step filters out most of the non-colliding pairs to reduce computational cost.
- Narrow Phase: Focuses on accurately detecting collisions between the pairs identified in the broad phase.
Broad Phase Techniques
1. Spatial Partitioning
Spatial partitioning involves dividing the game world into smaller regions. Each object is assigned to a region based on its position, reducing the number of collision checks by focusing only on objects within the same or neighboring regions.
- Quad-Trees: A hierarchical data structure that partitions space into four quadrants. Regions are subdivided until they contain a manageable number of objects.
2. Sweep and Prune
Sweep and Prune (SAP) leverages the fact that most objects don't move much between frames. By sorting objects along an axis and only checking for overlaps between neighboring objects, SAP efficiently culls the number of potential collisions.
- Implementation: Utilize an axis-aligned bounding box (AABB) for each object and sort by the minimum coordinate on the x-axis at the start of each frame.
Narrow Phase Techniques
1. Bounding Volumes
Bounding volumes simplify the shape of objects for faster collision checks.
- Axis-Aligned Bounding Boxes (AABB): Simple rectangles aligned with the coordinate axes, allowing fast overlap tests.
- Circles: Collision detection using circles is computationally inexpensive due to the simplicity of distance calculations between centers.
2. Separating Axis Theorem (SAT)
SAT is a powerful method applicable to convex polygons. It involves finding a separating axis between two polygons along which they do not overlap.
- Technical Insight: If such an axis exists, the polygons are disjoint; if not, they collide. This is tested using normals of the polygons' edges.
3. Pixel Perfect Collision
For high precision, pixel perfect collision checks each pixel of overlapping bounding boxes. Although computationally expensive, it's used for scenarios requiring detailed accuracy.
- Example: When a fine detail, such as the tip of a character's weapon, determines an interaction.
4. GJK Algorithm (Gilbert-Johnson-Keerthi)
GJK is utilized for convex shapes, determining if two shapes overlap using support points to form a simplex.
- Process: The algorithm iteratively refines the simplex until it ascertains whether the shapes intersect or are disjoint.
Collision Response
Beyond detection, collision response determines the post-collision behavior of objects.
- Elastic Collisions: Maintain kinetic energy, allowing objects to bounce off each other.
- Inelastic Collisions: Involve energy loss, causing objects to stick or deform.
These responses depend on physical properties such as mass, velocity, and material.
Summary Table
| Technique Name | Phase | Description & Use Case |
| Spatial Partitioning | Broad | Dividing space into regions to cull potential pairs. Example: Use Quad-Trees for large static scenes. |
| Sweep and Prune (SAP) | Broad | Sorting objects along an axis to reduce tests. Ideal for scenes with moderate movement. |
| AABB | Narrow | Simple rectangles aligning with axes for fast checks. |
| Circles | Narrow | Fast and simple due to basic distance comparison. |
| Separating Axis Theorem | Narrow | For convex polygons, find an axis to separate. |
| Pixel Perfect | Narrow | High precision, used sparingly due to computational cost. |
| GJK Algorithm | Narrow | Uses support points for convex shape intersection. |
Conclusion
Choosing the appropriate collision detection technique is crucial and depends on factors like object complexity, performance constraints, and the required precision. By leveraging a combination of broad phase and narrow phase methods, developers can optimize their systems for efficient and accurate collision handling in 2D environments.

