Algorithm to trim non-solid geometry

Found a few clues here: