The fastest I would imagine would be a DLL call to get the view matrix.
The inverse of the view matrix is just as fast a method (I think, it's pretty fast):
Quote: "view matrix4 view
null = inverse matrix4( view, view )
lookx = get matrix4 element(view, 8)
looky = get matrix4 element(view, 9)
lookz = get matrix4 element(view, 10)"
Trig is next (and handy cause you can find the look vector of anything just supplying an angle):
Quote: "look.x = sin(angle.z) * sin(angle.x) + cos(angle.z) * sin(angle.y) * cos(angle.x)
look.y = -cos(angle.z) * sin(angle.x) + sin(angle.z) * sin(angle.y) * cos(angle.x)
look.z = cos(angle.y) * cos(angle.x)"
And the method you posted above is 3 to 4 times slower than the fastest method
EDIT: Just saw the link... damn it!
"Get in the Van!" - Van B