您现在的位置: |
数字积分法(DDA)插补直线参考程序(VB) |
根据该插补软件框图(参见http://www.busnc.com/ly/DDA/DDAyuanli.htm),:
Sub 插补X() 标志X = 0 If 余数X >= Q Then 余数X = 余数X Mod Q x动点 = x动点 + 1: 标志X = 1 End If End Sub Sub 插补Y() 标志Y = 0 If 余数Y >= Q Then 余数Y = 余数Y Mod Q y动点 = y动点 + 1: 标志Y = 1 End If End Sub Sub 插补Z() 标志Z = 0 If 余数Z >= Q Then 余数Z = 余数Z Mod Q z动点 = z动点 + 1: 标志Z = 1 End If End Sub Sub 插补公共() 余数X = 余数X + x终点 余数Y = 余数Y + y终点 余数Z = 余数Z + z终点 插补X 插补Y 插补Z 插补记录 = 插补记录 + 1 End Sub Sub 插补() Dim c As Integer 插补记录 = 0: 余数X = 0: 余数Y = 0: 余数Z = 0: 划轮廓线 PSet (z原点, x原点), vbRed Select Case 象限标志 Case 1: '第一象限插补 Do Until 插补记录 = Q 插补公共 Line -Step(z步长 × 标志Z, x步长 × 标志X), vbRed Loop Case 2: '第二象限插补 c = x终点: x终点 = z终点: z终点 = -c c = x步长: x步长 = z步长: z步长 = -c Do Until 插补记录 = Q 插补公共 Line -Step(x步长 × 标志X, z步长 × 标志Z), vbRed Loop Case 3: '第三象限插补 x终点 = -x终点: z终点 = -z终点 x步长 = -x步长: z步长 = -z步长 Do Until 插补记录 = Q 插补公共 Line -Step(z步长 × 标志Z, x步长 × 标志X), vbRed Loop Case 4: '第四象限插补 c = x终点: x终点 = -z终点: z终点 = c c = x步长: x步长 = -z步长: z步长 = c Do Until 插补记录 = Q 插补公共 Line -Step(x步长 × 标志X, z步长 × 标志Z), vbRed Loop End Select End Sub |