I promised to write down some thoughts about the NMG primitive I got
during writing a C++ interface class for it.  Well, here they are:

Before, I avoided the NMG primitive e.g. I used BOTs instead.  This
was mainly caused by its complex internal structure (the functions I
wrote to do a simple copy have 720 lines) and a confusing set of
manipulating functions.  On the other hand it’s a good completion of
the primitives because of sub-dimensional elements (points, lines and
surfaces) and NURBS support.  It should be possible to get the ogives
I’m missing(?)

The complex internal structure of a NMG has two reasons:
1.) The NMG primitive is based on an implementation originally
designed for a stand-alone NMG CAD.  That’s where the "model" and
"nmgregion" come from.  Theses structures are invisible for normal
BRL-CAD routines (i.e. all but the special nmg_~ functions).  All
shells of a model could be put into a single shell and the ray-trace
would still look the same.
2.) The needs for data-management to support the efficient algorithms.
 On first place there is the dualism of topology/geometry and
<element>/<element>-use.  This separation is necessary for an
efficient implementation but requiring deep knowledge of it is an
obstacle for normal users which leads me to the interface functions:

The nmg_~ functions aren’t intuitive.  There may be a need for
separating topology and geometry.  However, I consider a simplified
interface with (for example) intuitive Euler operators desirable.

If the NMG is considered to obey Euler operators then the
sub-dimensional elements are part of its nature.  This would make it
to a real non-manifold in contrast to an n-manifold of pure solids (as
I understood the meaning of the two terms).

Therefore, shouldn’t we consider to
- remove the model and nmgregion structs and make shell the basic
internal structure for the NMG primitive,
- fully support intuitive Euler operators and
- accept the non-manifold nature of the NMGs?

As I said at the beginning: These are some thoughts and I reserve the
right to change my opinion to a more opportune one ;-)


Best regards,
        Daniel

------------------------------------------------------------------------------
Systems Optimization Self Assessment
Improve efficiency and utilization of IT resources. Drive out cost and 
improve service delivery. Take 5 minutes to use this Systems Optimization 
Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/
_______________________________________________
BRL-CAD Developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-devel

Reply via email to