I have a set of closed loops on the surface of a non-self-intersecting triangle mesh, and I need to create inset versions of them on the surface of the mesh. In other words, I want to generate a straight skeleton from them.
Within each single triangle of the mesh, this algorithm should behave just like a 2D straight skeleton.
I've found several tools for offsetting loops of edges in a mesh, or generating loops equidistant from a point on the mesh, but I need to be able to input arbitrary loops of my own and offset them.
I ran through various corner cases by hand on some graph paper, and it seems to me the algorithm described by Felkel and Obdrzalek should be perfectly applicable, except the wavefront may at times have to switch between contracting and expanding when it encounters geometries that give it more space.
This algorithm seems like it would be useful in several CAM applications, does anyone know of an existing implementation?