# Difference between revisions of "NURBS Booleans"

Starseeker (talk | contribs) (surface/surface) |
(new layout, add references) |
||

Line 1: | Line 1: | ||

+ | =NURBS Intersections= | ||

+ | |||

+ | {| border=1 align="right" | ||

+ | !Impact | ||

+ | !Difficulty | ||

+ | |- | ||

+ | |high | ||

+ | |hard | ||

+ | |} | ||

+ | |||

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. | 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/ 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. | 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/ 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. | ||

− | Requirements | + | ==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++ | *Familiarity with C++ | ||

*Solid mathematical foundations | *Solid mathematical foundations | ||

− | |||

− |

## Revision as of 08:30, 24 March 2011

# NURBS Intersections

Impact | Difficulty |
---|---|

high | hard |

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/ 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