  This article introduces a general mesh intersection algorithm that exactly
computes the so-called Weiler model and that uses it to implement boolean
operations with arbitrary multi-operand expressions, CSG (constructive solid
geometry) and some mesh repair operations. From an input polygon soup, the
algorithm first computes the co-refinement, with an exact representation of the
intersection points. Then, the decomposition of 3D space into volumetric
regions (Weiler model) is constructed, by sorting the facets around the
non-manifold intersection edges (radial sort), using specialized exact
predicates. Finally, based on the input boolean expression, the triangular
facets that belong to the boundary of the result are classified. This is, to
our knowledge, the first algorithm that computes an exact Weiler model. To
implement all the involved predicates and constructions, two geometric kernels
are proposed, tested and discussed (arithmetic expansions and multi-precision
floating-point). As a guiding principle,the combinatorial information shared
between each step is kept as simple as possible. It is made possible by
treating all the particular cases in the kernel. In particular, triangles with
intersections are remeshed using the (uniquely defined) Constrained Delaunay
Triangulation, with symbolic perturbations to disambiguate configurations with
co-cyclic points. It makes it easy to discard the duplicated triangles that
appear when remeshing overlapping facets. The method is tested and compared
with previous work, on the existing "thingi10K" dataset (to test co-refinement
and mesh repair) and on a new "thingiCSG" dataset made publicly available (to
test the full CSG pipeline) on a variety of interesting examples featuring
different types of "pathologies"
