A browser-based ray tracer aimed at rendering implicit mathematical functions, written in the Dart programming language. It runs natively in Dartium, a browser including the Dart VM, but the source code can be compiled to JavaScript for general compatibility with all modern browsers.
The algorithm used by trace-buddy to find ray intersections with implicit function is based on interval arithmetic1. The approach narrows down the possible intersection candidates until more efficient root finding algorithms can be applied. It has been described by several authors, including Hart2 and Knoll et al.3.
Distributed under the MIT License, see LICENSE file.
Have a look at the Wiki pages for example screenshots and usage information. For now you can also find a live demo of trace-buddy here (best viewed in Chrome, which includes a native HTML5 color picker).
Have a look at the DartDoc of trace-buddy for a general overview of its internal architecture.
The project is structured in two parts:
- The TraceBuddy library containing the ray tracing logic.
- The TraceBuddy Webapp containing the web logic.
You can find more details about each part in their README files.
[1] Bohlender, Gerd, and Ulrich Kulisch. 2010. "Definition of the Arithmetic Operations and Comparison Relations for an Interval Arithmetic Standard." Reliable Computing 15 (1): 36–42.
[2] Hart, John C. 1993. "Ray Tracing Implicit Surfaces." SIGGRAPH ’93 Course Notes: Design, Visualization and Animation of Implicit Surfaces.
[3] Knoll, Aaron, Younis Hijazi, Andrew Kensler, Mathias Schott, Charles Hansen, and Hans Hagen. 2009. "Fast Ray Tracing of Arbitrary Implicit Surfaces with Interval and Affine Arithmetic." Computer Graphics Forum 28 (1): 26–40.