The intention here is to first describe a simple
purely mathematical rendering-and-input-system-independent
camera
that can be positioned and
oriented, but that does not
know anything about integration of its position and rotation over
time. A separate system (the
integrator)
is built upon this camera that provides interpolation of the position
and orientation over time to provide configurable smooth animation.
Finally, a system (the
input) is described
that actually attaches the camera system to a keyboard and mouse package.
The input package used in the examples is that of
JOGL,
but the system is specifically described in a manner to allow it to
be easily adapted to any other input package. Essentially, the
com.io7m.jcamera
package
tries to provide a cleanly-separated system-independent core, with
the addition of a system to allow it to be attached to system-specific
keyboard/mouse input packages. This is essential for the correctness
of the software and also for the actual ease of understanding of the
mathematics and implementation .