A couple of things which seem to be of some value



Multiple canvases
      An architecture which allows multiple canvases to be open on a single page

Rendering that is not "not half fast"
      not drawing the backside of things (the side which you can not see) It is facing away from you
      and you can not see it, so why waste the time to render it. One application of this
      technique is to be able to draw a cube as a triangle fan which has only six triangles.

Knowing which way is up.
      Having easy access to the Point Of View (POV) location in 3D space (X,Y and Z)
      and the POV orientation (the direction in which you are pointed), PITCH, ROLL and YAW

EyeFish
      Several of the concepts involved in webGL would be best shown by being able to look at a point of view,
      from a second point of view. To visualize the two POV's, we'll use the avitar formed around the concept of
      an eyeball on the front of a fish. The eyeball is because we are looking out of these POV's. The Fish is
      because they can hover, unmoving, pointing in any orientation, just like the POV of a webGL application.

CrossHairs
      Hardly a new or creative thing, but it is useful to mark the object in the center of the canvas.

Striker
      This is one of the things which needs a second POV to see. The striker is a long thin set of triangles
      going out from the POV. One striker goes straight out, in the direction straight forward, straight out
      the crosshairs.   Another striker goes out following the movement of the mouse.   These are
      not visible from the the striker originating POV, as it is rather like looking at a piece of spaghetti
      end on.

Triangle intersection
      Let any 6 points in 3D space define two triangles. Do they intersect?
      This combines with the striker to detect points in the object field to allow the 3D movement interface.
      You can't know if you have bumped up against the wall if you can not calculate triangle intersections.
      This technique is quite fast, as it is modeled after the work of Georg Glaser in C and Dos. This
      solution, however, works correctly in all orientations.

3D movement interface
      Put you mouse on a an object. Hold down the left mouse button and move the mouse. The images shifts
      in a way which has the same portion of the moused-over object stays under the mouse.

      Hold down the right mouse button and move the mouse up or down. The image tilts thru the point
      that the crosshair is aimed at.

      Hold down the shift key and the right mouse button and move the mouse left or right. The image spins around the point
      that the crosshair is aimed at. One can make the interface select between two spin modes, or code one
      or the other. The spin can be in the XY plane, or can be orthogonal to the forward direction of the
      POV.