``Oh, noe, BSP Trees!, errr... Boxes?''
[PuppetApplet.java] [pMatrix.java] [BufferedApplet.java]
You control pitch with W/S keys (Up Arrow/Down Arrow).
You control yaw with A/D keys (Left Arrow/Right Arrow).
You control roll with Q/E keys (Delete/Insert keys).
You control speed with Z/X (Z moves you forward, X moves you backwards). You can also use the '>' and '<' keys.
You can also use a mouse. A very convinient way to fly around is to control direction with the mouse, and keep holding down the 'Z' key.
The code starts up by generating a bunch of random boxes (with random orientation), then builds the BSP tree (Binary Space Partition Tree; thing used in DOOM/Quake and nearly all modern games), then renders it. Rendering is so that you can see how the BSP cut up the objects. Once in a while, you see unaligned seams (like you can see stuff through a `cut' in the box) that's due to the `integer only' clipping routines (will be fixed eventually); they sometimes do inappropriate round offs... using doubles would solve it, but then it would also be a bit slower.