For solid modelling, a polyhedron is a solid whose boundary consists of finitely many planar polygons, called faces, meeting along straight edges and at vertices of a polyhedron. A face is not merely a list of arbitrary spatial points: its boundary must lie in one plane and bound a valid planar region. The boundary is closed and consistently oriented so that inside and outside are defined.
For example, a tetrahedron has four triangular faces, six edges and four vertices of a polyhedron. A more general polyhedron need not be convex and can have handles or cavities. The concise definition is
For an ordinary closed manifold boundary representation, three requirements are:
- Valid embedded faces. Each face is planar and bounded by simple closed edge loops with nonzero area; distinct face interiors do not cross, and faces meet only in their declared common edges or vertices of a polyhedron. A quadrilateral with four noncoplanar vertices of a polyhedron is not one planar face; a bow-tie loop does not bound a simple face. Holes, when allowed, need separate correctly oriented loops.
- Closed manifold incidence. Exactly two faces meet at each edge, and the incident faces around each vertex of a polyhedron form one cyclic fan. A single missing face leaves edges incident with only one face. Three faces sharing an edge, or two closed shells touching only at one vertex of a polyhedron, violate the local surface condition. The second example shows why the edge count alone is insufficient.
- Consistent orientation. Adjacent oriented faces traverse their common edge in opposite directions, giving compatible outward normal vectors. Reversing just one face of a tetrahedron breaks this condition. For a cavity, the material's outward normal vector points into the cavity, so shell orientation must also respect which region is solid.
Together these support the answerFor a connected orientable closed boundary of genus , the Euler characteristic provides an additional check, , when faces are disk-like. The familiar value applies to a sphere-like shell; it must not be imposed blindly on every polyhedron. Correct counts alone do not exclude intersections or invalid local incidence.
A boundary representation separates geometry, which supplies locations and supporting planes, from topology, which specifies incidence and orientation. A practical winged-edge data structure uses three related record types:
- A vertex of a polyhedron record holds its three coordinates and a reference to one incident edge, sufficient to begin traversing the local fan.
- A face record holds its supporting plane, an outward normal vector or equivalent orientation, and a reference to a boundary edge. Faces with holes need one entry per boundary loop.
- An edge record holds its two endpoint vertices of a polyhedron, its left and right incident faces, and predecessor and successor edges around each of those faces: four “wing” references. “Left” and “right” refer to a chosen orientation of the edge and compatible face traversal conventions.
This explicitly stores adjacency rather than recovering it by searching all faces. A half-edge data structure expresses much the same information with two oppositely directed records per undirected edge: each has an origin vertex of a polyhedron, an incident face, its next boundary record and its opposite record; a previous record is often stored as well. The destination can be obtained from the opposite record's origin. This mesh record is distinct from a dangling half-edge of a graph.
The compact implementation answer isThere is deliberate redundancy: the same adjacency can be reached from both an edge and a face, a stored previous edge is recoverable by walking the loop, and a face normal vector can be computed from its ordered noncollinear vertices of a polyhedron. These copies make neighbourhood queries and local edits cheap, and cached plane equations speed geometric tests. They impose consistency obligations: an edit must update reciprocal references, loops, orientations and affected geometric caches together. A half-edge data structure should share the undirected edge's geometry or keep its paired records synchronized.
For a finite nonempty collection , its convex hull is the smallest convex set containing all the points. Equivalently, it is the set of all convex combinations:Every convex set containing the must contain these combinations; the displayed set is itself convex and contains each , proving the equivalence. For a full-dimensional finite collection this is a convex polyhedron. A collinear or coplanar collection instead has a lower-dimensional convex hull, so the solid case needs a separate dimensionality assumption.
Use the straightforward incremental three-dimensional convex hull algorithm. Assume distinct input points, at least four noncoplanar points, and general position with no four coplanar. Use exact orientation decisions, or robust predicates that certify the same signs. These assumptions avoid the separate bookkeeping for flat faces, points on the boundary and lower-dimensional initial data.
- Select four points forming a nondegenerate tetrahedron. Store its four triangular faces with outward normal vectors and consistent adjacency.
- For the next point , evaluate every current oriented face usingThe current hull lies in . Thus a face is visible from exactly when .
- If no face is visible, discard : it lies in the current convex hull. Otherwise identify the horizon of a convex polyhedron seen from , namely the edges incident with exactly one visible and one retained face.
- Delete the visible faces and cone the ordered horizon of a convex polyhedron to , adding one triangle per horizon edge. Orient each new face consistently outward and continue with the next point.
The determinant is six times the oriented volume of the tetrahedron ; only its sign matters. A zero value needs a declared degeneracy policy if the general-position assumption is relaxed.
The data structure update is a separate local operation. Mark visible faces and walk their adjacency to collect the horizon cycle before deleting anything. Remove edges with two visible incident faces; retain horizon edges and their retained-face links. Insert a vertex of a polyhedron record for and a new edge from to each horizon vertex of a polyhedron. Add one face per horizon edge, connect its other two edges to its neighbours in the cone, and replace the deleted face reference on each horizon edge. Restore the cyclic boundary references and each retained vertex of a polyhedron's incident-edge reference; remove any old vertices of a polyhedron left without incident faces.
For an outward visible face with boundary edge on the horizon, the new outward face can be ordered . Its retained neighbour already traverses that edge as . As an independent orientation check, an interior point of the old hull must evaluate negatively against the new face.
The correctness step is geometric: the nonvisible part of a convex polyhedron remains supporting, while sight lines from to the horizon create precisely the new supporting faces. Replacing the visible cap by its cone therefore givesInduction from the initial tetrahedron yields the convex hull of all input points.
With processed points, a triangulated three-dimensional convex hull has faces and edges. For a sphere-like triangular boundary, the Euler characteristic and give and , with . The complete face scan, horizon construction and adjacency update in the implementation of part (e) therefore cost per insertion. Consequently,The quadratic worst case really occurs for this implementation. Choose all input points in strictly convex position, for example distinct points on the three-dimensional moment curve. Each processed point remains a hull vertex of a polyhedron, so the hull has triangular faces after insertions. Scanning every face at every next insertion takes sign tests. This argument does not require every insertion to delete most faces: the repeated global scans already force the bound. More elaborate convex hull algorithms with different search machinery are not the implementation being analysed here.
Insert the points in their given order, starting from . Use outward face orientation and regard as the interior side. The initial tetrahedron is nondegenerate becauseThus its volume is . The following table gives consistently oriented faces, conveniently scaled plane equations, and the omitted old vertex of a polyhedron test:
| Face order | Interior inequality | Value at the opposite vertex |
|---|
Every opposite vertex of a polyhedron is strictly on the interior side, so these orientations are correct. The intersection of these four half-spaces is exactly the initial tetrahedron.
Now test . In the same row order the face expressions giveTherefore and are visible and must be removed; and are retained. The common edge lies inside the deleted patch and is removed. The directed horizon isCone this cycle to , giving outward face orders . Their equations and tests of the two old vertices of a polyhedron not belonging to each face are:
| New face | Interior inequality | Tests of the other vertices |
|---|
Each new plane contains its three named vertices of a polyhedron and has all remaining input points strictly on the interior side. Together with the two retained half-spaces, these six supporting inequalities describe the final convex hull:Equivalently assemble the closed oriented boundary from , with adjacent face loops traversing shared edges in opposite directions. It is a triangular bipyramid with base triangle and apices ; is internal, so it is not a boundary face. There are five vertices of a polyhedron, nine edges and six faces, giving the check . The initial tetrahedron similarly has .
Initial tetrahedron, the two faces visible from E and their horizon, and the final six-face convex hull
. Details. Articles by others on the same topic
There are currently no matching articles.
