question: public static void perspectiveM ( double [ ] m , int offset , double fovy , double aspect , double zNear , double zFar ) { double f = 1.0 / Math . tan ( fovy * ( Math . PI / 360.0 ) ) ; double rangeReciprocal = 1.0 / ( zNear - zFar ) ; m [ offset + 0 ] = f / aspect ; m [ offset + 1 ] = 0.0 ; m [ offset + 2 ] = 0.0 ; m [ offset + 3 ] = 0.0 ; m [ offset + 4 ] = 0.0 ; m [ offset + 5 ] = f ; m [ offset + 6 ] = 0.0 ; m [ offset + 7 ] = 0.0 ; m [ offset + 8 ] = 0.0 ; m [ offset + 9 ] = 0.0 ; m [ offset + 10 ] = ( zFar + zNear ) * rangeReciprocal ; m [ offset + 11 ] = - 1.0 ; m [ offset + 12 ] = 0.0 ; m [ offset + 13 ] = 0.0 ; m [ offset + 14 ] = 2.0 * zFar * zNear * rangeReciprocal ; m [ offset + 15 ] = 0.0 ; }
target:  Define a projection matrix in terms of a field of view angle, an aspect ratio, and z clip planes