1. 3 坐标变换OpenGL 的坐标变换有几何变换、投影变换、裁剪变换和视 口 变换等. 平移 变换和 旋转变换都是OpenGL 中的几何变换. 平移变换在 OpenGL 中是通过函数 void glT ranslate( T ype x, T ype y, Typez) 来实现. 其执行结果将是局部坐标系原点平移至点( x, y , z ), 即场景中物体各顶点的坐标分量分别加上 x , y 和 z . 旋转变换在 OpenGL 中是通过函数void glRotate( Type angle, Type x , T ype y, Typez) 来完成. 其执行结果是将局部坐标系绕矢量 v=(x , y , z )T逆时针方向旋转 angle 指定的角度[ 6].在平移变换中, 如果要平移的方向不是沿坐标轴方向, 就要进行矢量运算.在图 2 中, OM= OP+ OR+ OQ= xi+ yj + zk.所以, 如果要表示物体沿OM 方向移动 了 | OM| 距离, 则代码为 glT ranslate( x, y, z ).设在 T时刻液压缸活塞 杆与 Y轴 正半轴 的夹图 2坐标系矢量运算示意26机械与电子2010(12) 角为 , 则液压缸活塞杆伸长量 S 的实现代码为 GlT ranslatef( 0. 0, S* cos, S* sin).液压缸绕 X 轴旋转 1 的 实现代 码为 glRotatef (1 ,1 .0f , 0.0f , 0.0f).1. 4 动画的实现原理在虚拟三维运动仿真中, 机械系统的各部分不存在相互作用力, 其各部分的运动都是通过程序来控制.基于 OpenGL 的双缓存机制, 可以实现三维模型的动画仿真. OpenGL 的双缓存技术是实现动画的主要技术, 就是在屏幕上绘制图形以前, 先分配 2个缓冲区, 在一个缓冲区里执行绘制的命令, 同时在另一个缓冲区里执行显示的命令, 在缓存交互之间设置适当的时间间隔, 由于计算机的运行速度快而人体肉眼有视觉暂留的效应, 这样就可以使所显示的图形连续变化, 达到动画的效果[ 7].2  运动仿真方法的应用2. 1  三维模型的建立为了 简化问题, 又不失一般性, 以一制动机构为例, 在 SolidWorks 中进行建模.