code: public static Matrix4d createPerspective(double fov, double aspect, double near, double far) {
          final double scale = 1 / TrigMath.tan(fov * (double) TrigMath.HALF_DEG_TO_RAD);
          return new Matrix4d(
                  scale / aspect, 0, 0, 0,
                  0, scale, 0, 0,
                  0, 0, (far + near) / (near - far), 2 * far * near / (near - far),
                  0, 0, -1, 0);
      }
docs: Creates a perspective projection matrix with the given (x) FOV, aspect, near and far planes
  
  @param fov The field of view in the x direction
  @param aspect The aspect ratio, usually width/height
  @param near The near plane, cannot be 0
  @param far the far plane, far cannot equal near
  @return A perspective projection matrix built from the given values