diff --git a/libs/cg/include/psemek/cg/dcel.hpp b/libs/cg/include/psemek/cg/dcel.hpp index 8d87016d..a7ec1b95 100644 --- a/libs/cg/include/psemek/cg/dcel.hpp +++ b/libs/cg/include/psemek/cg/dcel.hpp @@ -587,6 +587,23 @@ namespace psemek::cg return result; } + template + void fill_missing_faces(dcel & dcel) + { + for (Index i = 0; i < dcel.edges.size(); ++i) + { + if (dcel.edges[i].face != dcel.null) continue; + + auto e = dcel.edge(i); + auto f = dcel.push_face(); + f.edge(e); + e.face(f); + + for (e = e.next(); e.index() != i; e = e.next()) + e.face(f); + } + } + template auto polygon_dcel(Iterator begin, Iterator end) {