GSoC/GCI Archive
Google Code-in 2014 BRL-CAD

Implement a single function to generate rays based on an object stencil

completed by: Andromeda Galaxy

mentors: Sean

Our ray tracing library (librt) has a few functions pertaining to creating a pattern of rays and shooting them as a bundle (i.e., all at once). We have examples you can follow like rt_gen_circular_grid() in src/librt/mkbundle.c that are very similar, just not the right pattern.

Our "rtshot" command line utility is a simple single-shot utility that can help you test your implementation and make sure it's working correctly. See the code there for mentions of rt_gen_circular_grid() and rt_shootrays().

Sources may be obtained from our Subversion repository: svn checkout https://svn.code.sourceforge.net/p/brlcad/code/brlcad/trunk brlcad

Implement a function, e.g., rt_gen_stencil(), that will create a pattern of orthogonal rays originating from a specified plane, in a given direction, with an option for the sampling density (per ray spacing).  The user inputs will be a ray (point+dir) which defines a plane, an object which defines the silhouette, and a ray density (either uniform, or vertical/horizontal density).  The output is a set of rays parallel to the input ray and at or in front of the plane defined by that ray (so you could shoot from inside an object).

Submit the changes in patch format.

References: 

  • src/librt/mkbundle.c
  • src/librt/bundle.c
  • src/rt/rtshot.c
  • http://brlcad.org/wiki/Compiling

Modify: 

  • src/librt/mkbundle.c
    • src/rt/rtshot.c