视向离散法

《计算机辅助设计与图形学学报》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\)切割为两段。

图(1) 第一种关系

先申请一个链表直线段单元\(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\)的近端。

图(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\)没有发生切削关系。

图(3) 第三种关系

第四种关系。\(Z_{Q_2}>Z_{P_2}>Z_{Q_1}>Z_{P_1}\),如下图(4)所示.可知直线段\(Q_1 Q_2\)切削\(P_1 P_2\)的远端。

图(4) 第四种关系

将\(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\)没有发生切削关系。

图(5) 第五种关系

第六种关系。\(Z_{Q_2}>Z_{P_2}>Z_{P_1}>Z_{Q_1}\),如下图(6)所示.可知直线段\(Q_1 Q_2\)切削\(P_1 P_2\)整条直线段。

图(6) 第六种关系

如果\(P_1 P_2\)为该链表的第一个单元,并且没有后继单元时,则删除该链表,并且将其所对应的屏幕点的颜色值改为背景色。当存在后继单元时,则删除该单元,并且将其所对应的屏幕点的颜色值改为后继单元的颜色。

以上为两线段之间的关系,全部切削关系需要对整个链表进行搜索判断后加以确定。只要能处理好以上六种关系,铣削加工仿真就能够很好地实现。