For the non-perspective projection we can direct V along
e.g. the Z axis, therefore
(NV) = (Nez ) = cos(a) = Nz .
The value cos(a) = Nz is used also to determine brightness of the face in the "headlight" mode.
The backface culling algorithm has a HUGE speed advantage if we can use it since the test is cheap and we expect at least half the polygons will be discarded. If objects are not convex, one need to do more work. Usually it is performed in conjunction with a more complete hidden surface algorithm.
See also The Portal Technique for Real-time 3D Engines mainly useful for indoor engines.
To draw stellated polyhedron the combinations of the backface culling and
z-sorting is used in this applet. The non-convex body is broken into convex
rays. Then these convex parts are z-sorted with respect of there center of mass
positions and are ploted the farthest one first.
Interactive fractal polyhedra are obtained by recursive z-sorted translations.
We draw an array of objects (i, j) successively so, that
zi, j grows when i or j are changed.
From Fig.2 it follows, that in this case an object cannot be covered by a new
more distant in z object.
Fig.2a shows, that unfortunately this trick doesn't work for the perspective projection, therefore IMHO one need use z-sorting in this case.
Comments to the 3D controls. RotationsTwo rotations are used in all 3D applets. The first rotation on an angle j around the Y axis and the second one on an angle q around X axis
R = M r ,
where the matrix M is