TangoARScreen._CameraUpdateForIntrinsics C# (CSharp) Method

_CameraUpdateForIntrinsics() private static method

Update a camera so its perspective lines up with the color camera's perspective.
private static _CameraUpdateForIntrinsics ( Camera cam, TangoCameraIntrinsics intrinsics, float uOffset, float vOffset ) : void
cam Camera Camera to update.
intrinsics Tango.TangoCameraIntrinsics Tango camera intrinsics for the color camera.
uOffset float U texture coordinate clipping.
vOffset float V texture coordinate clipping.
return void
    private static void _CameraUpdateForIntrinsics(Camera cam, TangoCameraIntrinsics intrinsics, float uOffset,
                                                   float vOffset)
    {
        float cx = (float)intrinsics.cx;
        float cy = (float)intrinsics.cy;
        float width = (float)intrinsics.width;
        float height = (float)intrinsics.height;

        float xscale = cam.nearClipPlane / (float)intrinsics.fx;
        float yscale = cam.nearClipPlane / (float)intrinsics.fy;

        float pixelLeft = -cx + (uOffset * width);
        float pixelRight = width - cx - (uOffset * width);

        // OpenGL coordinates has y pointing downwards so we negate this term.
        float pixelBottom = -height + cy + (vOffset * height);
        float pixelTop = cy - (vOffset * height);

        cam.projectionMatrix = _Frustum(pixelLeft * xscale, pixelRight * xscale,
                                        pixelBottom * yscale, pixelTop * yscale,
                                        cam.nearClipPlane, cam.farClipPlane);
    }