使用计算机模拟数控加工,对NC程序的运行进行图形仿真,以此检验NC程序和加工方法的正确性,是一个非常有益的尝试。但是,仿真技术涉及大量的计算,效率低、耗时多,不能用于实际生产中。离散的方法能使计算量大大降低,在物体空间离散毛坯和刀具能获得毛坯切削后的精确表示,有利于对切削结果进行有效的观察分析,更适用于NC程序的验证[1~3];Van Hook[4~6]采用图像空间离散法实现了加工过程的动态图形仿真,他使用Zbuffer消隐思想,将实体按图像空间的像素(pixel)离散,将计算简化为视线方向上的一维布尔运算,较好地解决了实时性的问题。
但是,传统的图像空间离散方法不能提供有效方便的观察分析手段,限制了它的应用。笔者根据Van Hook图像空间法的思想,对数据结构和算法作了改进,使得在不失去仿真实时性的前提下,为用户提供了更多、更方便有效的分析观察手段,而这些手段原本具有物体空间方法的特点。
1 Van Hook算法的基本思想
图像空间方法使用类似图形消隐的Zbuffer思想,将工件和刀具按屏幕的像素离散为Zbuffer结构。切削过程简化为沿视线方向上的一维布尔运算。本法将实体布尔运算和图形显示过程合为一体,使图形仿真有很高的实时性。
1.1 Zbuffer方法
图1 Zbuffer方法说明见图1,视线方向与屏幕垂直,沿视线方向将毛坯和刀具离散,在每一个屏幕像素上,刀具和毛坯表示为一个长方体,称为Dexel结构(即Zbuffer结构)。刀具和毛坯之关系有7种,此时,刀具切削毛坯的过程就变为两套Dexel结构的比较问题,具体的运算过程用以下的算法说明:
CASE 1:只有刀具,显示刀具;break;
CASE 2:毛坯遮挡刀具,显示毛坯;break;
CASE 3:刀具切削毛坯的后部,显示毛坯;break;
CASE 4:刀具切削毛坯的内部,显示毛坯;break;
CASE 5:刀具切削毛坯的前部,显示刀具;break;
CASE 6:刀具遮挡毛坯,显示刀具;break;
CASE 7:只有毛坯,显示毛坯;break;
对应于每一个像素的Dexel结构构成链表结构,可处理毛坯有洞和空腔的情况。切削计算实际上是发生在对应于同一个像素、分别表示毛坯和刀具的两个Dexel结构链表之间的布尔运算。
1.2 Dexel结构的生成
图2 Dexel结构与显示缓存结构和屏幕像素的对应关系
首先,定义观察坐标系(见图2):设毛坯为长方体,其中心位于坐标原点,以用户的视线方向(Xe,Ye,Ze)为Z1轴,XY平面上过原点且与Z1垂直的直线为Y1轴,再由Z1和Y1可以确定X1轴,X1Y1平面即为投影平面。
Dexel结构是在观察坐标系中建立的。因为屏幕上的像素点并不是对应于投影平面上的一点,而是一个小正方形。所以,应以正方形的中心为有效点,以视线方向(Xe,Ye,Ze)定义射线,它与物体求交而生成Dexel结构。
Dexel结构中的信息包括最近的Z值、最远的Z值、最近处的颜色、最远处的颜色以及指向下一个Dexel结构的指针。