When do 2 ellipsoids collide?

Greetings!

I was wondering, when do two ellipsoids colide? Ellipsoid ist acctualy just a sphere with 3 radi (radius), but just the radius can not be enough, because it is possible to place 2 ellipsoids in space so that the more than one raidus collide but the spheres are rotated so, that they do not colide. Imagine two eggs together, when you rotate one 30 degress up and the other 30 degrees down they do not collide but when you rotate them back to 0 they hit.

In my oppinion: the radius check is not enough. What to do?

Thank you in advance!

Hey Shinobi, this is a tough question to answer, so I’ll simply point you in the direction of some good material.

For colliding triangle meshes/soups:

  1. Try a search for V-COLLIDE/RAPID or I-COLLIDE: these collision engines, develpoed at UNC, are very sophisticated.

  2. Try a search for ODE/OPCODE (Open Dynamics Engine): this is a free, open source physics/collision library (very nice and lots of fun to play with).

Here’s a paper describing a method for colliding ellipsoids (PDF):
http://www.cs.hku.hk/research/techreps/document/TR-2002-15.pdf

And for a hybrid analytic/geometric perspective, have a look at David Eberly’s book, “3D Game Engine Design” (an excellent reference for all sorts of things in 3D).

Just a few things off the top of my head … I’m sure google has more to offer in the area of collision detection.

I hope this helps.

one possible idea, would be to essentially scale these ellipsoids (and the data that they essentially represent/encapsulate) into spheres

I’d imagine that it would get a bit trickier with rotation, as well as maintaining an appropriate scale…

the resulting sphere collision would be easy to check for

Test the collision of the bounding boxes. That will be a lot easier. There’s a hell lot of trig involved.

x = acos(i)cos(j)
y = bsin(i)cos(j)
z = csin(j) :slight_smile: