《计算机辅助设计与图形学学报》2000年3月第12卷第3期——《在微机上实现数控铣床加工仿真》。
视向离散方法的基本思想是在等同离散的基础上处理物体的差。也就是将刀具和毛坯按屏幕分辨率离散成沿着视线方向的直线段。用组成刀具的直线段去裁剪组成毛坯的直线段以反映切削,加上对毛坯图像的处理就得到了切削的视觉效果。
应特别指出,在发生切削关系的某点处,刀具和毛坯相互接触;刀具上该点处的法矢和毛坯上该点处的法矢方向相反。对于平行透视下的平行光照模型,物体表面上法矢方向相同或相反处所计算得到的颜色值相同。因此,无需计算毛坯上这一点的颜色值,而只需将刀具上同一点的颜色值赋值给该点。
该方法首先利用光线跟踪算法,按屏幕分辨率将刀具和毛坯都离散成沿视线方向的直线段。沿视线方向的一条光线和刀具的交点不会多于两个,只能形成一条直线段;和毛坯的交点个数将随着毛坯复杂程度的变化而变化,可能会形成多条直线段,将多条这样的直线段串成一个链表结构。这样,离散后的刀具是由许多直线段组成,毛坯却是由许多直线段串成的链表组成。刀具和毛坯的整体切削关系变成离散直线段之间的切削关系。离散直线段之间的切削关系主要为刀具上的直线段和毛坯上的直线段链表的切削关系。最根本的切削关系为刀具上的直线段和毛坯上的直线段链表中的某一条直线段的6种切削关系。
由于这些直线段均沿着视线方向,因此在计算机屏幕上表现为一个点。当刀具上的直线段和毛坯上的直线段链表具有相同的屏幕坐标时,就有可能发生相互之间的切削关系。设刀具上有一直线段Q_1 Q_2和毛坯的一直线段链表对应屏幕上同一象素,P_1 P_2为该直线段链表的一个直线段单元。其中Q_1点离眼睛近,视向Z_{Q_1}值小;Q_2点离眼睛远,视向Z_{Q_2}值大。P_1点离眼睛近,视向Z_{P_1}值小;P_2点离眼睛远,视向Z_{P_2}值大。
第一种关系:Z_{P_2}>Z_{Q_2}>Z_{Q_1}>Z_{P_1}。如下面图(1)所示.可知直线段Q_1 Q_2的位置处于P_1 P_2之间,并将P_1 P_2切割为两段。
先申请一个链表直线段单元N_1 N_2。分别将Q_2,P_2点的颜色值和视向Z值赋给N_1,N_2点,并将该单元串到的后面。将Q_1点的颜色值和视向Z值赋给P_2点。
第二种关系:Z_{P_2} > Z_{Q_2} > Z_{P_1} > Z_{Q_1} ,如下图(2)所示。可知直线段Q_1 Q_2切削P_1 P_2的近端。
将Q_2点的颜色值和视向Z值赋给P_1点。如果直线段P_1 P_2为该链表的第一个单元,则应同时修改P_1点所对应屏幕点的颜色值。
第三种关系。Z_{P_2} >Z_{P_1} > Z_{Q_2} >Z_{Q_1},如下图(3)所示.可知直线段Q_1 Q_2与P_1 P_2没有发生切削关系。
第四种关系。Z_{Q_2}>Z_{P_2}>Z_{Q_1}>Z_{P_1},如下图(4)所示.可知直线段Q_1 Q_2切削P_1 P_2的远端。
将Q_1点的颜色值和视向Z值赋给P_2点。
第五种关系。Z_{Q_2}>Z_{Q_1}>Z_{P_2}>Z_{P_1},如下图(5)所示.可知直线段Q_1 Q_2与P_1 P_2没有发生切削关系。
第六种关系。Z_{Q_2}>Z_{P_2}>Z_{P_1}>Z_{Q_1},如下图(6)所示.可知直线段Q_1 Q_2切削P_1 P_2整条直线段。
如果P_1 P_2为该链表的第一个单元,并且没有后继单元时,则删除该链表,并且将其所对应的屏幕点的颜色值改为背景色。当存在后继单元时,则删除该单元,并且将其所对应的屏幕点的颜色值改为后继单元的颜色。
以上为两线段之间的关系,全部切削关系需要对整个链表进行搜索判断后加以确定。只要能处理好以上六种关系,铣削加工仿真就能够很好地实现。