Is There an algorithm to remove intersections between two tetrahedrons? I have a mesh made up of several tetrahedrons, I know for sure that there are intersections between some of them: how can I remove these intersections, without generating others?
In other terms: if between a couple of tetrahedrons there is an intersection, how can I remove it?
I found these articles: the Method of Separating Axes, the Tetrahedron Overlap Algorithm.
But they are only useful for checking if there are intersections or not.
Is there an algorithm to solve this problem?
Since you already have convex shapes and started looking at the &quot;Method of separating axis&quot;, then the GJK algorithm is probably what you're looking for. This is commonly used in physics simulations to find collisions (for games, I don't know about computational science).
When you say &quot;remove intersections without generating others&quot;, then you're asking for collision response. Multiple collision response is actually a tough beast. Here (Reflections on Simultaneous Impact) is a paper that goes into more detail, but a very good introduction to this are course notes from Baraff:
An Introduction to Physically Based Modeling: Rigid Body Simulation I—Unconstrained Rigid Body Dynamics and part 2. Rigid Body Simulation II-Nonpenetration Constraints
Lastly, you can always use a physics engine for this, such as Bullet3d.