Now, as the NMG primitive reorganization project reaches its end I'm a little bit at a loss. Zhao did a great job in reducing the complexity of the primitive to the level where it will be really used and moving the functions into a separate library and put a lot of effort into it.
The creation of a libnmg required to create a libnurb too. NURBs are used by the bspline and nmg primitives and to avoid a cyclic dependency between librt and libnmg they had to be moved inty an own library. However, libnmg still uses data structures defined in raytrace.h necessary for the ray-tracing code in libnmg. raytrace.h is included in some of the libnmg source files but not in the nmg.h interface declaring header file. Furthermore the vlist code had to be moved from librt to libnmg. So far so good? The bad news is that the Boolean operations code doesn't work as before. Many problems were fixed but at least one left. It looks like in the old code (in the trunk) a clean up was made which e.g. removed duplicate points before the Boolean operation of two shells was performed. With the new code (in the nmgreorg branch) it is possible that the two shell structures have identical points, edges, etc. because they don't share these underlying sets of geometric information any more. This diverging behavior can be tested with facetizing the shifter of the toyjeep. It works in trunk and gives a "0 length edge" error in nmgreorg. To fix this someone with deeper knowledge of the underlying algorithm would be needed. Regards, Daniel ------------------------------------------------------------------------------ _______________________________________________ BRL-CAD Developer mailing list brlcad-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-devel