http://www.racer.nl/reference/vfc_markmorley.htm
Mainly what I don't understand is well, near enough the entire thing. I'm OK on my understanding of spherical frustrum culling, well enough to implement it, it works well on my engine, but what is the reason why the dot product of the plane and the position of the sphere has to be calculated? Isn't a dot product just an angle? I would appreciate it if you guys can not only explain to me what's happening in the sample of code below, but reinforce my knowledge on sphere frustrum culling.
bool CubeInFrustum( float x, float y, float z, float size ){ int p; for( p = 0; p < 6; p++ ) { if( frustum[0] * (x - size) + frustum[1] * (y - size) + frustum[2] * (z - size) + frustum[3] > 0 ) continue; if( frustum[0] * (x + size) + frustum[1] * (y - size) + frustum[2] * (z - size) + frustum[3] > 0 ) continue; if( frustum[0] * (x - size) + frustum[1] * (y + size) + frustum[2] * (z - size) + frustum[3] > 0 ) continue; if( frustum[0] * (x + size) + frustum[1] * (y + size) + frustum[2] * (z - size) + frustum[3] > 0 ) continue; if( frustum[0] * (x - size) + frustum[1] * (y - size) + frustum[2] * (z + size) + frustum[3] > 0 ) continue; if( frustum[0] * (x + size) + frustum[1] * (y - size) + frustum[2] * (z + size) + frustum[3] > 0 ) continue; if( frustum[0] * (x - size) + frustum[1] * (y + size) + frustum[2] * (z + size) + frustum[3] > 0 ) continue; if( frustum[0] * (x + size) + frustum[1] * (y + size) + frustum[2] * (z + size) + frustum[3] > 0 ) continue; return false; } return true;}