Deriving the OpenGL Perspective Depth Transformation