# Vector Drawings from NURBS

BRL-CAD can render hidden line drawings using rtedge, but the images it generates are raster images (consisting of pixels) rather than vector drawings (based on lines and curves). This is often suboptimal - line drawings are often edited and rescaled using vector based editing programs, and rtedge output must be manually traced in order to be used in those environments.

Without explicit surface representations we cannot (currently) calculate vector forms of significant lines (http://www.cs.princeton.edu/gfx/proj/sg08lines/) directly from models without using raytracing. However, a possible alternative approach is to take the grid results of the rtedge raytrace and use the knowledge inherent in the ray about what object its returning the pixel from to group pixels into groups based on objects. From there, the set of xy points in image space could be fitted with spline curves to produce vector representations.

For the ambitious, it might even be possible to go beyond lines and bound areas using raytracing results - this paper illustrates possibilities with layered 2D output from 3D models: http://people.csail.mit.edu/sparis/publi/2009/siggraph/Eisemann_09_A_Visibility_Algorithm.pdf

Requirements:

- Familiarity with C/C++
- Solid mathematical background (algorithms for fitting curves to points)

Difficulty: high