target/generated-sources/template/com/flowpowered/math/matrix/Matrix4d.java
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);
    }
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);
    }
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