Another approach is to treat the frustum planes as 2D rays, like consider from top view i.e. the XZ plane (if your camera is at origin and facing along the positive x-axis):
the left plane is equivalent to a ray:
(cos (fov/2), 0, sin(fov/2))
then any point u want to test as inside or outside the frustum:
point -= camera; //translate to frustum space//unrotate point if necessarydPl = dot(leftPlane, xAxis);dPt = dot(point, xAxis);if (dPl < dPt) //point is "below" the left plane ray if (dot (leftPlane, point) > 0) //point is within left/right planes
Then you can do an && with testing on the XY plane for top and bottom planes (left view).
This way requires testing of only 2 planes (left and top) and deal with rays rather than planes (which i find easier anyway), and for near and far clip you can just test if (near < point.x < far). Also this way you dont have to worry about transforming the frustum to world space, it is easier and faster to untransform the point/volume being tested to frustum-relative space. Atleast, I found it to be so.
The only snag is it screens out coplanar points, but you can do a quick prelim test for that easily (dot(plane, point) == 1).
Can anyone spot any problems?