Any polyhedron may be represented as the union of a set of disjoint convex polyhedra. The problem of partitioning a polyhedron into a minimum number of convex parts is known to be NP-hard. This paper establishes a lower bound on the number of convex parts for an arbitrary plyhedron, and describes an algorithm which produces a number of convex parts within a constant factor of the minimum in the worst case.
An edge of a polyhedron is called a notch if the angle between the two faces meeting at that edge, measured inside the polyhedron on a plane normal to the edge, is greater than 180:9I. The lower bound on the number of convex parts is shown to be quadratic in the number of notches. The decomposition algorithm presented is linear in the number of edges of the polyhedron, and cubic in the number of notches.
The evaluation of many properties of solid objects (e.g., mass properties, point inclusion test) is relatively easy for convex shapes, but not for arbitrary shapes. An algorithm for decomposing an arbitrary polyhedron into disjoint convex polyhedra allows the simple algorithms to be used in a piecewise manner. From a system design point of view, the algorithmic complexity due to non-convexity may be concentrated in a single algorithm.
The paper is necessarily mathematical and several readings are required to achieve complete understanding. However, for those more interested in the algorithm than in its theoretical underpinnings, the general content of the paper can be appreciated without undue study.