I’m having problems finding papers and websites regarding the removal of self-intersecting polygons in a mesh. I can detect them, but how do I remove them?
I’m not sure I fully understand your problem. You want to remove the polygons (or parts of polygons) that are inside of the mesh? If you can detect them, then what’s the problem with removing them?
Ok, so “remove” was the wrong word for me to use. I want to fix the self-intersection.
If you have a general polygon mesh and you want to fix self-intersecting polygons, then you might simply go through every polygon and perform splitting of the faces into smaller parts which does not self-intersect, but only touch. This will solve only local self intersection problems.
Global self-intersections are harder to handle, but using a spatial decomposition structure (e.g. BSP-trees) will help here.
At the end of the day, if you wish to perform mesh reconstruction based on polygonal “soups”, then volumetric approaches might be of greater help here.
Anyway, posting a bit more information might help us to answer your question. Try for example to specify what kind of mesh you are processing (i.e., general polygons, triangles), what connectivity information (data structure) you are using, what final mesh you would like to produce (2-manifold, triangular, general polygons, geometry tolerances).
I am continuing to work on this problem and I finally found a paper that describes a solution.
Unfortunately the paper is fairly confusing to me. Here’s a link to the paper .
I’ve used Triangle (by Jonathan Richard Shewchuk) to re-mesh sections of a database. It’s very fast and easy to integrate into your code (basically two files). E-mail me for an example.