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 its 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
Im 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. Thats 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 arent 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, shouldnt 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