Difference between revisions of "NURBS Booleans"
Starseeker (talk | contribs) (Clarify that the project links don't have source code we can use, just research papers.) |
Starseeker (talk | contribs) m (Starseeker moved page NURBS Intersections to NURBS Booleans: Work is now much more in boolean evals than intersections themselves) |
(No difference)
|
Revision as of 07:53, 27 February 2014
Non-Uniform Rational B-Splines are the dominant geometric representation format in Computer Aided Design. BRL-CAD's support for these primitives is relatively recent, and while we can raytrace them we do not have the ability to perform operations such as surface/surface intersection calculations. These abilities are fundamental to a wide variety of editing operations and essential to the process of converting implicit-primitive based boolean geometry trees to evaluated NURBS models.
This task would target the problem of implementing an algorithm to calculate surface/surface intersection for general NURBS surfaces. These guys implemented something very similar although their implementation was not robust: http://www.cs.unc.edu/~geom/CSG/boole.html These guys followed that work and implemented a robust solution, but killed performance: http://www.cs.unc.edu/~geom/ESOLID/ (Note that while the papers are excellent references from which to get ideas, the source code from these efforts is not license compatible with BRL-CAD.) You will need to be very careful about tolerances and tolerance tracking without resorting to fixed-precision arithmetic. There are a variety of other research papers on the surface/surface intersection problem - students interested in this topic should discuss it with developers on the IRC channel or via email.
References
- src/librt/primitives/brep
- src/librt/primitives/bspline
- src/other/openNURBS
- src/librt/opennurbs_ext.*
- include/opennurbs_ext.h
- include/raytrace.h
- include/rtgeom.h
Requirements
- Familiarity with C++
- Solid mathematical foundations