当视点在空间任意位置时,用一个坐标系描述透视投影过程比较麻烦,因此引入另一个过渡坐标系——观察坐标系。观察坐标系原点为视点,z轴方向即视线方向,观察平面(视平面)与z轴平行,z轴与视平面的交点为视心。此时透视投影的过程是先把用户坐标系下的点变换成观察坐标系的点,再把观察坐标系下的点变换成屏幕坐标系中的点。只要已知用户坐标系中物体各点的坐标、视点位置和视线方向,就可以在屏幕上产生该物体的透视投影图。
采用齐次坐标,设用户坐标系中的点坐标为[x,y,z,1],观察坐标系中相应点坐标为[xw,yw,zw,1],完成这种变换的关系用矩阵V表示,则
[xe,ye,ze,1]=[xw,yw,zw,1]·
如已知视点在用户坐标系中的位置(a,b,c),并规定x在zw=c平面上,V矩阵的推导如下:
1.把用户坐标系作平移变换,以视点为原点构成新坐标系(图略),变换式为
2.令新坐标系绕x轴逆时针旋转90°(图略),变换式为
3.将坐标系绕y轴顺时针旋转θ角(图略),使z′反向指向
cosθ=-b/v,sinθ=a/v,变换为
4.令坐标系绕x轴顺时针旋转j 角(图略),使z′反向指向
cosj =v/u,sinj =c/u,变换式为
5.经上述四步变换z′反向指向原点,因此对z′求反(图略)
经上述推导,用户坐标系中的点已变换为观察坐标系中的坐标,令V=T1T2T3T4T5,则
为了在屏幕上产生透视投影图,要将观察坐标系中的坐标转换为屏幕坐标,若设屏幕中心为屏幕坐标系的原点,观察坐标系的z轴垂直穿过屏幕中心(图略),根据三角形的相似性,可得到观察坐标系中的坐标和屏幕坐标的转换关系:
D/ze=xs/xe,
D/ze=ys/ye,
xs=D*xe/ze,
ys=D*ye/zc。