|
BRL-CAD
|
Basic NMG structural hierarchy definitions, including the necessary geometric definitions. More...
Files | |
| file | topology.h |
Data Structures | |
| struct | vertex |
| NMG topological vertex - the simplest element of the topology system. More... | |
| struct | vertexuse |
| NMG topological vertex usage. More... | |
| struct | edge |
| NMG topological edge. More... | |
| struct | edgeuse |
| NMG topological edge usage. More... | |
| struct | loop |
| NMG topological loop. More... | |
| struct | loopuse |
| NMG topological loop usage. More... | |
| struct | face |
| NMG topological face. More... | |
| struct | faceuse |
| NMG topological face usage. More... | |
| struct | shell |
| NMG topological shell. More... | |
| struct | nmgregion |
| NMG topological region. More... | |
| struct | model |
| NMG topological model. More... | |
| struct | vertex_g |
| Point in 3D space. More... | |
| struct | edge_g_lseg |
| Line in 3D space. More... | |
| struct | face_g_plane |
| Planar face geometry. More... | |
| struct | knot_vector |
| Definition of a knot vector. More... | |
| struct | edge_g_cnurb |
| Edge NURBS curve geometry. More... | |
| struct | face_g_snurb |
| Face NURBS surface geometry. More... | |
| struct | vertexuse_a_plane |
| Vertexuse normal. More... | |
| struct | vertexuse_a_cnurb |
| Vertexuse NURBS parameters. More... | |
| struct | loop_a |
| Loop bounding box. More... | |
| struct | shell_a |
| Shell bounding box. More... | |
| struct | nmgregion_a |
| Region bounding box. More... | |
Basic NMG structural hierarchy definitions, including the necessary geometric definitions.
This is the interconnected hierarchical data scheme proposed by Weiler and documented by Muuss and Butler in: Combinatorial Solid Geometry, Boundary Representations, and Non-Manifold Geometry, State of the Art in Computer Graphics: Visualization and Modeling D. F. Rogers, R. A. Earnshaw editors, Springer-Verlag, New York, 1991, pages 185-223: https://ftp.arl.army.mil/~mike/papers/90nmg/joined.html
Because of the interconnectedness of these containers, they are defined together rather than in separate headers - all of the "use" containers need to know about other use container types, as seen in Figure 4 from the Muuss/Butler paper:
Model | Region | Shell |||| |||*--> Faceuse <--------> Face ||| | ||*---> Loopuse <--------> Loop || | | |*------|--> Edgeuse <---> Edge | | | | *--> Vertexuse <-> Vertex *------------^
Each element has a direct connection to its parent and child types. The elements are defined thusly:
The "use" notation refers to a conceptual separation between an entity and a reference to that entity. For example, a face has two sides - each of those sides is individually referenced by a "use" of the underlying face data structure, with the faceuse adding additional information to identify the specific side associated with that particular application of the underlying face data.