(24)视向变换

来源:互联网 发布:费用优化的步骤 编辑:程序博客网 时间:2024/06/14 18:43

观察坐标系

这里再引入一种新的参考坐标系,这种坐标系比较符合人们在三维空间中观察物体和绘图的习惯:

① 当观察空间某一物体时,该物体与视点之间距离的大小反映了物体离我们的远近,称该距离为“观察深度”简称深度。这个深度应该在新坐标系里的某个坐标轴上得到体现:深度大,该坐标值应大;深度小,则该坐标值应小。

② 在图纸上绘图时,二维绘图坐标系的位置一般使坐标系的原点在图纸的左下角,然后让X轴自原点水平向右,让Y轴自原点垂直向上。这比较符合人们看图和作图的习惯。为满足这一习惯,可以让新的坐标系中有一根坐标轴自左水平向右,而让另一根坐标轴自下垂直向上,以使这两根坐标轴确定的坐标平面和二维绘图平面相对应,使三维立体在这个坐标平面上产生的投影能与图形输出平面上输出的图形之间产生直观的对应。


可以通过以下方法来设置新坐标系:
① 坐标系原点设置在观察点(即视点处);
② 一根坐标轴从原点出发,顺着观察方向指向远方,该坐标轴上的坐标反映了空间物体的观察深度的大小,该轴即为深度坐标轴,设置为Z轴。
③ 另外两根坐标轴,一根自原点水平向右,设置为X轴;另一根自原点垂直向上,设置为Y轴。
称上述新的参考坐标系为“观察坐标系”,它是一个符合左手规则的笛卡尔坐标系。

建立观察坐标系,主要取决于两个因素:
① 观察点的位置:它决定了坐标系原点位置;
② 观察方向(Z轴方向):它决定了深度坐标轴的指向。
观察点和观察方向可以由观察者随意定,即观察点可以设置在空间的任意位置,观察方向可以朝向任何一个方向,因此,观察坐标系也是随意的。

为了简化问题,这里作一个假定:观察点可以设置在空间的任何位置,但观察方向总是指向世界坐标系的原点。

 

视向变换

将世界坐标系中的点P(x, y, z) 转换为观察坐标系中的点P’ (x’, y’, z’)的过程称为“视向变换”。
视向变换也是一种坐标变换,可以用矩阵形式表示为:

           [x’   y’   z’   1] = [x    y    z   1]·T视向

其中,T视向称为视向变换矩阵。视向变换不能靠一次单一的简单变换实现,它是一个包括平移和旋转等多次变换的复合变换。


视向变换矩阵的推导:
① 把坐标系原点变到观察点位置:通过把坐标系原点从世界坐标系的原点平移到观察点 E(x, y, z) 来完成。此次平移变换矩阵为:

              

② 将经过平移后的坐标系绕X轴逆时针旋转90°,改变Y轴和Z轴的指向,使得Y轴垂直向上,Z轴垂直指向XWOZW平面,此次旋转变换矩阵为: 

             

③ 将经过上两次变换后的坐标系绕Y轴顺时针旋转一个角度φ,使得新坐标系的Z轴垂直指向原来世界坐标系的ZW轴,此次绕Y旋转的变换矩阵为: 

            

④ 将经过以上三次变换后的坐标系再绕X轴逆时针旋转一个角度θ,将新坐标系的Z轴指向原世界坐标系的原点。此次绕X轴旋转的变换矩阵为: 

          

⑤ 经过以上四次变换后,已经使得新坐标系的原点放置到了观察点E处,并使Z轴指向了原世界坐标系的原点。最后一步变换是要调整X轴的指向,使其由原来指向左边改变成指向右边,最终使得坐标系由原来的右手系改变成左手系,其变换矩阵为:

                       

经过上述五次变换,实现了由原来世界坐标系到观察坐标系的转变,完成了视向变换,所以视向变换矩阵为:



0 0
原创粉丝点击