栏目搜索
 
 
 
 

线切割机实现切割汉字的自动编程技术

更新日期:2007-09-17  作者:  来源:光学精密机械网(ChinaOptic.Com.Cn)收集整理


end;
PLineRecord=^TLineRecord;

其中StartPoint, EndPoint分别为直线的起点和终点。

图象采用二维数组进行表示,首先按照行、列从小到大的顺序找到图象的起始点,然后再采用逆时针方向来搜索下一点。搜索方向的定义为:

SearchDirection:array[0..7,0..1] of interger=((1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1),(1,1));

遍历算法如下:

(1)扫描图象寻找起始点,将其坐标记为(k,1);用FirstPointX、FirstPointY记录第一点横、纵坐标的值;
(2)初始化记录直线的指针,建立记录直线的链表;将起始点的k,1值作为直线起点和终点的横、纵坐标,将该直线加入到直线纪录的链表中去;
(3)以第一点为基准点沿逆时针方向寻找下一点,如果搜索到值为1的点则记搜索方向为i,该点的横、纵坐标记为(k,1),将记录直线的终点横、纵坐标设置为k,1;
(4)置是否搜索完毕标志SearchCompleted为False;
(5)如果SearchCompleted不为True则重复作6-13步;
(6)置SearchCompleted为True;
(7)置是否同一条线标志SameLine为True;
(8)如果SameLine为True则重复作9-12步;
(9)置SameLine为False;
(10)沿i方向进行搜索,即k:=k+SearchDirection [i][0];1:=1+SearchDirection [i][1];
(11)如果点(k,1)为1,则置SameLine为True;将直线的终点坐标设置为(k,1);将点(k,1)的值设置为0;
(12)如果点(k,1)为0,则置SameLine为False;
(13)以点(k,1)为基准点沿逆时针方向寻找下一点,如果搜索到值为1的点,则记搜索方向为i;在直线记录列表中增加一条新的直线,k,1值作为直线起点的横、纵坐标;将搜索到的点的横、纵坐标记为(k,1),将直线终点的横、纵坐标设置为(k,1);置Searhcompleted为False,置SameLine为True;将点(k,1)的值设置为0;
(14)进行图形封闭化处理,在直线记录列表中增加一条直线,将k,1值作为直线起点的横、纵坐标,FirstPointX、FirstPointY作为直线终点的横、纵坐标值。 字串9

这样当遍历完成后,遍历的轨迹就保存在直线记录列表中了,也就是说已实现将汉字的字形轮廓用直线段进行描述了。需指出的是,由于汉字字形本身或者编辑处理的原因,在进行图象遍历的过程中,可能存在一些不和谐的点,使遍历不能完成(如存在断点、尖点及多余点的情况),需在遍历之前运用图象处理的技术将这些点补足或者剔除掉,以使遍历能顺利完成,有关这方面的算法不再赘述。

 etyjtykjuy