屏幕上的点如何转换到世界坐标系,求数学原理

已知src 是屏幕上的坐标点
//计算点在摄像机坐标系中的坐标,利用触摸点的坐标与摄像机近平面坐标的线性相关性
Vec4 screen(src->x / viewport->width, ((viewport->height - src->y)) / viewport->height, src->z, 1.0f);

screen.x = screen.x * 2.0f - 1.0f;
screen.y = screen.y * 2.0f - 1.0f;
screen.z = screen.z * 2.0f - 1.0f;
这段代码完全不理解

为啥可以用这种方式转换到世界坐标系,透视投影的情况下,谁来讲解一下数学原理