Alex Rivera | Logout

Continuous collision detection between two moving tetrahedra

Asked 2009-07-11T01:31:06.087
18

My question is fairly simple. I have two tetrahedra, each with a current position, a linear speed in space, an angular velocity and a center of mass (center of rotation, actually).

Having this data, I am trying to find a (fast) algorithm which would precisely determine (1) whether they would collide at some point in time, and if it is the case, (2) after how much time they collided and (3) the point of collision.

Most people would solve this by doing triangle-triangle collision detection, but this would waste a few CPU cycles on redundant operations such as checking the same edge of one tetrahedron against the same edge of the other tetrahedron upon checking up different triangles. This only means I'll optimize things a bit. Nothing to worry about.

The problem is that I am not aware of any public CCD (continuous collision detection) triangle-triangle algorithm which takes self-rotation in account.

Therefore, I need an algorithm which would be inputted the following data:

  • vertex data for three triangles
  • position and center of rotation/mass
  • linear velocity and angular velocity

And would output the following:

  • Whether there is a collision
  • After how much time the collision occurred
  • In which point in space the collision occurred

Thanks in advance for your help.

Edit
Report

1 Answer

1

If you were trying to collide non-rotating tetrahedra, I'd suggest a taking the Minkowski sum and performing a ray check, but that won't work with rotation.

The best I can come up with is to perform swept-sphere collision using their bounding spheres to give you a range of times to check using bisection or what-have-you.

answered 2009-07-13T06:56:08.277

Your Answer