1.一种三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤如下:
1)载入三角网格模型,具体为:
读取三角网格模型,采用C++标准模板库中的关联容器类set进行冗余顶点的去除,建立无重复顶点的vector类型点表和面片表;采用关联容器类set查找伙伴半边并创建半边数据结构,建立vector类型的半边表;同时建立面片到顶点、面片到半边、顶点到面片、顶点到半边、半边到顶点、半边到面片内的前后相连半边、半边到相对应半边的邻接关系;
2)对于需要偏置的刀具路径,将路径中的刀触点分为凸刀触点、凹刀触点和平滑刀触点三类;
3)刀具路径的刀触点各向异性偏置:对于路径中的刀触点,先计算三类刀触点的切平面内各向异性偏置,再计算模型表面上的实际偏置刀触点;
4)偏置刀具路径的自相交处理,包括刀具路径自相交检测、路径交点计算、有效子路径判断等三个方面处理;
5)重复步骤2)至步骤4),直到刀具路径覆盖整个三角网格模型表面。
2.根据权利要求1所述的三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤2)中,路径中的刀触点包括凸刀触点、凹刀触点和平滑刀触点;刀触点类型的判别方法具体如下:设点P为刀触点,P点处的单位法矢为n,l1和l2为连接P点的前后两段路径线段的单位方向矢量,P点前连接线段所决定的偏置方向t1,则当偏置后的新刀触点在沿着刀具路径方向的左边时,即左偏置时t1=(n×l1)/|n×l1|,当进行右偏置时t1=(l1×n)/|l1×n|,设标量d1=t1·l2、d2=l1·l2,ε1为一个接近0的正数,ε2为一个小于1但接近1的正数,则:当|d1|<ε1且d2>ε2时,P点为平滑刀触点;
当d1>ε1时,P点为凹刀触点;
当d1<-ε1时,P点为凸刀触点。
3.根据权利要求1所述的三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤3)中,计算三类刀触点的切平面内各向异性偏置,是根据刀触点类型在刀触点的切平面内对刀触点进行相应偏置,具体计算方法分别如下:(a)凸刀触点的切平面内偏置:凸刀触点设为Pi,j,采用各向异性的三点偏置,在过Pi,j点的网格模型切平面上,Pi,j点的三个偏置方向分别计算为t1=(n×l1)/|n×l1|,t2=(n×l2)/|n×l2|,t3=(n×l3)/|(n×l3)|,其中l3=(l1+l2)/|l1+l2|;计算模型在Pi,j点处沿t1、t2和t3三个方向上的行距分别为w1、w2和w3,其中沿某一方向的行距计算公式为:式中,w为行距,h为加工残留量,r为刀具半径,ρ为刀触点在偏置方向的曲率半径;
(b)凹刀触点的切平面内偏置:凹刀触点设为Pi,j,L'1为Pi,j点前一连接线段的偏置直线,L'2为为Pi,j点前一连接线段的偏置直线,t1=(n×l1)/|n×l1|,t2=(n×l2)/|n×l2|;w1和w2分别是模型在Pi,j点处沿t1和t2两个方向上行距;则L'1的参数方程为:L'1(u)=(Pi,j+w1·t1)-l1·u,其中u为参数方程的参数变量;L'2的参数方程为:L'2(v)=(Pi,j+w2·t2)+l2·v,其中v为参数方程的参数变量;
令L'1(u)=L'2(v),解得u=w2·l1·t2/[1-(l1·l2)2],将u代入直线L'1(u)计算出Pi,j的过渡点P′i+1,j;
计算w=|P′i+1,j-Pi,j|,t=(P′i+1,j-Pi,j)/w;
(c)平滑刀触点的切平面内偏置:平滑刀触点设为Pi,j,则其偏置方向为t=(n×l)/|(n×l)|,其中l=(l1+l2)/|l1+l2|,沿t方向的行距计算为w。
4.根据权利要求1所述的三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤3)中,实际偏置刀触点的计算方法具体为:步骤①设当前刀触点为Pi,j,n为模型在Pi,j点处的单位法矢,t为Pi,j点处某一偏置方向的单位切矢量,w为Pi,j点在t方向上的行距计算值;
步骤②构造过Pi,j点且包含矢量n、t的平面Π,平面Π内有中点为O=Pi,j-ρ·n,ρ为模型在Pi,j点处沿t方向的曲率半径;
步骤③平面Π内t′为刀触点理论偏置方向矢量,在t′方向上的Pi+1,j为理论偏置点;为计算Pi+1,j,在Π内过O作线段Pi,jPi+1,j的垂线L,垂足为B,线段Pi,jB长度为w/2;
步骤④垂线L与Pi,j点处的t向切线交于A,线段Pi,jA的长度为:
步骤⑤计算点O到A的矢量V=ρ·n+d·t,单位化为v;由于t′与V垂直,所以t′=((n×t)×v)/|(n×t)×v|,则P′i+1,j=Pi,j+w·t′;
步骤⑥构造参数变量为s的参数直线L′(s)=O+(P′i+1,j-O)·s与模型三角面片求交,获得实际偏置刀触点Pi+1,j。
5.根据权利要求1所述的三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤4)中,刀具路径自相交检测处理,设偏置后获得新的刀具路径CCi+1,其中依次存放刀触点P0、P1、…、Pn-1、Pn,则刀具路径自相交检测的过程如下:步骤①查找CCi+1中最长的轨迹线段,取其长度的一半,设为l;
步骤②基于CCi+1中的所有刀触点创建k-d搜索树;
步骤③依次取刀触点,设为Pi,i分别取值从0,1,…,n-3,线段PiPi+1的长度为d,计算γ=(d2+l2)1/2;以Pi为检索中心,以γ为检索半径,通过k-d树获得一组刀触点,从中剔除索引值小于等于i+2的刀触点,最终获得刀触点数组PList;
步骤④依次取PList中的刀触点,设为Pj,分别检测线段PiPi+1是否与Pj-1Pj和PjPj+1相交;
PiPi+1与PjPj+1相交的检测方法为:分别设矢量V1=Pi+1-Pi、V2=Pj+1-Pj、es1=Pj-Pi、ee1=Pj+1-Pi、es2=Pi-Pj、ee2=Pi+1-Pj,标量d1=(es1×V1)·(ee1×V1)、d2=(es2×V2)·(ee2×V2);
分三种情况处理:
(a)如果d1<0且d2<0,则PiPi+1与PjPj+1相交,进行交点计算;
(b)如果d1=0且d2<0,则进行一步判断:如果Pj为es1×V1为零矢量则判断为无交点,如果叉积矢量ee1×V1为零矢量,则令ee1=Pj+2-Pi,再计算d1=(es1×V1)·(ee1×V1),如果d1<0则Pj+1为交点,d1>0则无交点;
d1<0且d2=0时,同样可确定交点为Pi+1或无交点;
(c)其余情况则两线段无交点;
PiPi+1与Pj-1Pj相交的检测方法同理。
6.根据权利要求1所述的三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤4)中,路径交点计算处理,刀具路径出现自相交时,设线段PiPi+1和PjPj+1相交,交点计算如下:步骤①线段PiPi+1的单位方向矢量li=(Pi+1-Pi)/|Pi+1-Pi|,线段PjPj+1的单位方向矢量lj=(Pj+1-Pj)/|Pj+1-Pj|,模型在四个刀触点处的单位法矢分别为ni和ni+1、nj和nj+1,则计算:当ni+1×ni为非零矢量时,nΠ1=li×(ni+1+ni)/|ni+1+ni|,否则nΠ1=li×ni;当nj+1×nj为非零矢量时,nΠ2=lj×(nj+1+nj)/|nj+1+nj|,否则nΠ2=lj×nj;将nΠ1和nΠ2单位化后仍分别记为nΠ1和nΠ2;
步骤②过线段PiPi+1,以nΠ1为法矢构造平面Π1,计算平面Π1与线段PjPj+1的交点为点I';
步骤③以l=(nΠ1×nΠ2)/|nΠ1×nΠ2|为方向矢量,过点I'构造一条直线,分别与Pi和Pi+1所在三角面片以及位于两点之间的面片进行求交计算,获得交点I;
PiPi+1与Pj-1Pj交点的计算方法同理。
7.根据权利要求1所述的三角网格模型的等残留高度刀触点轨迹生成方法,其特征在于,步骤4)中,有效子路径判断处理,设线段PiPi+1和PjPj+1相交,如果Pi+1为交点,则令Pi+2为Pi+1,如果Pj+1为交点,则令Pj+2为Pj+1;交点为I,ti为刀具路径线段PiPi+1的偏置方向,tj为刀具路径线段PjPj+1的偏置方向,有效子路径判断的具体方法为:步骤①计算矢量li=(I-Pi)、li+1=(Pi+1-I)和lj=(I-Pj)、lj+1=(Pj+1-I);
步骤②计算d1=ti·lj、d2=ti·lj+1,
步骤③如果d1>0且d2>0,则Pi、I、Pj+1所在的子刀具路径为有效路径,Pj、I、Pi+1所在的子刀具路径为无效路径;如果d1<0且d2<0,则Pi、I、Pj+1所在的子刀具路径为无效路径,Pj、I、Pi+1所在的子刀具路径为有效路径;
PiPi+1与Pj-1Pj有效性的判断方法同理。