Does this type of collision phyisics have a name?

Started by
8 comments, last by Doug Smith 10 years ago

For years I've been using a collision system that involves each object having a radius and checking if the distance between the two objects is less than the sum of the two radiuses(radi?). Essentially it uses circles instead of boxes for collision checking. It works rather well for 2d space sims and any game that uses a top-down view. But I don't know if it's a common technique and if it is I'd like to know what it's called.

Also are there any significant drawbacks to using a system like this?

Advertisement
Bounding-circles (or bounding-spheres in 3D). It's actually really commonly used even in more complex schemes as an initial test, because it's so simple/cheap.
e.g. Bounding-sphere test everything first, then do a more complex/accurate test on the ones that passed the sphere test.
As for drawbacks, the main problem is that a circle is not necessarily a close enough representation of your object. For a long thin object the bounding sphere will contain a huge amount of empty space. That will lead to a lot of false positives in intersection tests. An axis aligned or oriented box is a tighter fit in many cases.

Whether circles are good enough for your circumstances, well, that of course has more to do with your circumstances than the circles.

Visit http://www.mugsgames.com

Stroids, a retro style mini-game for Windows PC. http://barryskellern.itch.io/stroids

Mugs Games on Twitter: [twitter]MugsGames[/twitter] and Facebook: www.facebook.com/mugsgames

Me on Twitter [twitter]BarrySkellern[/twitter]

In addition (or more likely substraction) to BarrySkellerns post you can make those bounding-"circles" fitting more closely by calculating them to ellipses using matrices, as long as you are having basic understanding how matrices work and use them of course.

For games where you have to cheat, whenever a player is unlikely to see the trick, they are even precise enough for most collision detections whenever the player can't see the difference.

There is no actual general drawback of this method to others.

Thanks for the responses. I might play around with the elipse idea later. Honestly the idea already occurred to me but I haven't really felt the need to put the time into implementing it. Getting all my objects to bounce off eachother properly is hard enough without adding shape variations into the mix.

As for drawbacks, the main problem is that a circle is not necessarily a close enough representation of your object. For a long thin object the bounding sphere will contain a huge amount of empty space. That will lead to a lot of false positives in intersection tests. An axis aligned or oriented box is a tighter fit in many cases.

Whether circles are good enough for your circumstances, well, that of course has more to do with your circumstances than the circles.

it also depends on whether or not you need to deal with objects which may have an arbitrary rotation.

with a circle or sphere, no matter how the object is rotated, it will fit within the existing space.

if you have to make an axis-aligned bounding box (AABB) over every possible rotation, generally it will involve more empty space than the sphere, though bounding box is generally more accurate if bounding a particular rotation.

though, for oriented bounding boxes (OBB), these are often a tighter fit, but collision checks are more expensive.

likewise for convex polyhedra (where the object is bounded by a collection of bounding planes, or the 2D equivalent being a polygon).

so, generally, if using a more expensive solid-type (like an OBB or polyhedra), it may still make sense to use sphere checks first to eliminate impossible collisions early.

likewise, they may have other uses, like a sphere traveling through space is simpler to bound accurately than an AABB, and may also have advantages for certain other cases, like when trying to find the initial collision point for fast-moving objects, ...

A good example of the limitations of sphere/circle tests for me is the old wing commander games. They had simple sphere checks, and because of that anytime you got near a large ship you would suddenly collide with it, even if you were actually way above it. Contrast that with the first X-wing game, which had a more complicated check, and suddenly you could fly in between the shield generators on a Star Destroyer, and it was amazing at the time.

Well I definitely wouldn't use it for large, complex objects, especially in a 3d space sim. The engine I'm working on uses circle collision for game objects and circle-line collision for game objects interacting with static objects like walls and such.

I don't really have a hard time coding more complex collision systems, but the problems arise when I want to apply physics to those collisions. At that point I'm pretty much coding my own version of Box 2d which would be an extreme amount of work. With circle collisions I can simply limit the physics system to billiard physics, allowing for realistic physics at the cost of collision accuracy. It's a trade off I'm happy with.

There are also systems that use a hierarchy of spheres to more tightly represent the object. So the parent level is a large encompassing sphere but then the children are smaller and more of them etc. It can be taken to the level desired to get the fit required. But at some point the multiple sphere intersections will become slower.

I am assuming you are using the squared distance for comparison as well.

There are also systems that use a hierarchy of spheres to more tightly represent the object. So the parent level is a large encompassing sphere but then the children are smaller and more of them etc. It can be taken to the level desired to get the fit required. But at some point the multiple sphere intersections will become slower.

I am assuming you are using the squared distance for comparison as well.

I'm not, actually. Is that supposed to do something?

This topic is closed to new replies.

Advertisement