Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Simple Intersection Tests For Games
May 26, 2020
Press Releases
May 26, 2020
Games Press

If you enjoy reading this site, you might also want to check out these UBM Tech sites:

# Simple Intersection Tests For Games

[]

October 18, 1999 Page 4 of 7

A Box-Sphere Intersection Test

A very elegant box-sphere intersection test is described in [1]. Figure 7 shows two configurations of a sphere and a box in 2D. Sphere A is closest to an edge, whereas sphere B is closest to a corner. The algorithm calculates the square of the distance from the box to the sphere by analyzing the orientation of the sphere relative to the box in a single loop.

If the box is not axis aligned, simply transform the center of the sphere to the box's local coordinate frame. Listing 5 gives an implementation of Arvo's algorithm.

Listing 5. Arvo's algorithm.

#include "aabb.h"

//Check to see if the sphere overlaps the AABB
const bool AABBOverlapsSphere ( const AABB& B, const SCALAR r, VECTOR& C )
{

float s, d = 0;

//find the square of the distance
//from the sphere to the box
for( long i=0 ; i<3 ; i++ )
{

if( C[i] < B.min(i) )
{

s = C[i] - B.min(i);
d += s*s;

}

else if( C[i] > B.max(i) )
{

s = C[i] - B.max(i);
d += s*s;

}

}
return d <= r*r;

}

Page 4 of 7

### Related Jobs

innogames — Hamburg, Germany
[05.26.20]

(Senior) Java Developer
Stray Bombay Company — Seattle, Washington, United States
[05.26.20]

Senior Unreal Engineer
Digital Extremes Ltd. — London, Ontario, Canada
[05.25.20]

Senior Lighting Artist
Airship Syndicate — Austin, Texas, United States
[05.25.20]

Mid to Senior Worldbuilder - Unreal Engine