3-D Rendering and Visualization

com.srbenoit.render

This package provides tools to visualize and render scenes in three dimensions.

Camera
A representation of a camera, which manages transformations from world space into view space, clips lines to a view frustum (defined by a view angle, aspect ratio, and the near and far clipping planes), projects into normalized device coordinates, then finally maps into screen space. This class does not do any rendering.
Light
A light, which is a point source, non-directional light. Light level is based on the angle between the normal vector and the vector to the light source. No specular at this point.
LineSegment2D
A two-dimensional line segment.
RenderPanel
A panel that implements a double-buffered offscreen image.
RenderPipeline
A render pipeline that can take a Scene, a Camera, and a BufferedImage and generate a rendered view of the scene in the image.
Scene
A scene, which behaves much like a SparseArray, but for which four lists are maintained in parallel. A list of "world coordinate" vertices and "world coordinate" faces represents the live scene content, and parallel lists of vertices and faces are maintained.
ViewFace
A triangular face in view coordinates. This class extends Tuple3, where the superclass fields represent the normal vector to the face.
ViewFaceIterator
An iterator over the view faces in a scene.
ViewVertex
A vertex in view coordinates.
ViewVertexIterator
An iterator over the view vertices in a scene.
WorldFace
A triangular face that makes up a scene. This class extends Tuple3, where the superclass fields represent the normal vector to the face.
WorldVertex
A vertex in world coordinates that a scene is composed of.

As the author of the source code available by following the links above, I hereby place this source code in the public domain. You can use, modify, and distribute the source code and executable programs based on the source code. However, note the following:
DISCLAIMER OF WARRANTY
This source code is provided "as is" and without any express or implied warranties whatsoever. The user must assume the entire risk of using the source code.