code: public static final Mat4 perspective(final float fovy, final float aspect, final float zNear, final float zFar) {
  		final float halfFovyRadians = (float) FastMath.toRadians( (fovy / 2.0f) );
  		final float range = (float) FastMath.tan(halfFovyRadians) * zNear;
  		final float left = -range * aspect;
  		final float right = range * aspect;
  		final float bottom = -range;
  		final float top = range;
  		
  		return new Mat4(
  				(2f * zNear) / (right - left), 0f, 0f, 0f,
  				0f, (2f * zNear) / (top - bottom), 0f, 0f,
  				0f, 0f, -(zFar + zNear) / (zFar - zNear), -1f,
  				0f, 0f, -(2f * zFar * zNear) / (zFar - zNear), 0f
  		);
  	}
docs: Creates a perspective projection matrix using field-of-view and
  aspect ratio to determine the left, right, top, bottom planes.  This
  method is analogous to the now deprecated {@code gluPerspective} method.
  
  @param fovy field of view angle, in degrees, in the {@code y} direction
  @param aspect aspect ratio that determines the field of view in the x
  direction.  The aspect ratio is the ratio of {@code x} (width) to
  {@code y} (height).
  @param zNear near plane distance from the viewer to the near clipping plane (always positive)
  @param zFar far plane distance from the viewer to the far clipping plane (always positive)
  @return