Tests circle-circle collision (distance^2 vs radiusSum^2, optimized avoids sqrt, fast AABB alternative).
Takes x1,y1 (first circle center, integers), r1 (first circle radius in pixels, integer), x2,y2 (second circle center, integers), r2 (second circle radius in pixels, integer).
Returns 1 if colliding (circles overlap or touch), returns 0 if not colliding (circles separated).
2D Overlay
Parameters & Returns
Parameters
x1Int
y1Int
r1Int
x2Int
y2Int
r2Int
Returns
Int
Quick Summary
Tests circle-circle collision (distance^2 vs radiusSum^2, optimized avoids sqrt, fast AABB alternative).
Takes x1,y1 (first circle center, integers), r1 (first circle radius in pixels, integer), x2,y2 (second circle center, integers), r2 (second circle radius in pixels, integer).
Returns 1 if colliding (circles overlap or touch), returns 0 if not colliding (circles separated).
Technical Exegesis...
Tests circle-circle collision (distance^2 vs radiusSum^2, optimized avoids sqrt, fast AABB alternative). Takes x1,y1 (first circle center, integers), r1 (first circle radius in pixels, integer), x2,y2 (second circle center, integers), r2 (second circle radius in pixels, integer). Returns 1 if colliding (circles overlap or touch), returns 0 if not colliding (circles separated).
Tests circle-circle collision (distance^2 vs radiusSum^2, optimized avoids sqrt, fast AABB alternative). Takes x1,y1 (first circle center, integers), r1 (first circle radius in pixels, integer), x2,y2 (second circle center, integers), r2 (second circle radius in pixels, integer). Returns 1 if colliding (circles overlap or touch), returns 0 if not colliding (circles separated). Calculates delta (dx=x2-x1, dy=y2-y1), computes distance^2 (dx^2+dy^2), computes radiusSum^2 ((r1+r2)^2), compares (distance^2 <= radiusSum^2 = collision), avoids sqrt (faster than b2dGetDistance comparison). Use for fast collision (circular hitboxes, projectiles, enemies), radial triggers (proximity activation), physics simulation (bouncing balls, particle systems), or rough approximations (simple shapes as circles). Algorithm: circles collide when distance between centers <= sum of radii, equivalent to distance^2 <= (r1+r2)^2, avoids expensive sqrt operation, exact collision test (not approximate, mathematically correct for circles). Use cases: (1) Projectile hit (If b2dIsCirclesColliding(bulletX,bulletY,5, enemyX,enemyY,20) Then hit), (2) Pickup collection (If b2dIsCirclesColliding(playerX,playerY,32, itemX,itemY,16) Then collect), (3) Explosion range (If b2dIsCirclesColliding(explosionX,explosionY,radius, objectX,objectY,objectRadius) Then damaged), (4) AI detection (If b2dIsCirclesColliding(aiX,aiY,sightRadius, playerX,playerY,0) Then spotted, radius 0=point), (5) Physics (For each ball: For each other: If b2dIsCirclesColliding(...) Then bounce). Common patterns: collision = If b2dIsCirclesColliding(x1,y1,r1,x2,y2,r2) Then collided; point vs circle = b2dIsCirclesColliding(px,py,0,cx,cy,radius) test point inside circle. Performance: cost low (4 integer ops + 3 multiplications + 1 comparison, ~0.0001ms per call), avoids sqrt (2-3x faster than b2dGetDistance + comparison), optimized for speed (prefer over distance calculation for collision), can test thousands per frame (efficient for many-object collision). Circle approximation: under-estimates corners (square object with circle hitbox misses corner collisions), over-estimates sides (circle extends beyond rectangular sides), rotation-invariant (circles don't rotate, suitable for rotating sprites if approximate acceptable), trade-off (speed vs precision, use b2dIsImagesColliding for exact pixel-perfect). Coordinate system: any coordinate space (screen, world, local), origin at center (x,y specify circle center, not top-left), radius in pixels (same units as coordinates), no bounds checking (negative radii clamped by squared comparison, works correctly). Edge cases: r=0 point collision (circle with radius 0 = point, tests if point inside other circle), touching circles (distance exactly = radiusSum returns 1 collision, inclusive test), overlapping completely (one circle inside other returns 1). Related: b2dGetDistance calculates distance (can use for range checks, slower due to sqrt), b2dIsCircleBoxColliding circle-rectangle collision (more complex, handles rectangular bounds), b2dIsBoxesColliding AABB test (faster for rectangles, different collision shape), b2dIsImagesColliding pixel-perfect collision (exact shape collision, much slower, use when circular approximation insufficient).