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.