上述公式易得。A、B、P三点共线,则
(b-b1)/(i-i1)=(b2-b1)/(i2-i1)=直线斜率,变换即得所求。
这是从网上复制粘贴过来的,明白了这个就会编了。
因为代码不全,也没有太多的注释,只能从变量名、函数名进行推测:Sub G01(X As Single, Y As Single, Z As Single) 'G01过程——移动函数,移动到x、y、z处
Dim X1 As Single, Y1 As Single, SPointX As Single, SPointY As Single, I As Single, L As Single
On Error GoTo errhand '出现错误跳转到errhand处的代码部分
If X = CurrentNX And Y = CurrentNY And Z = CurrentNZ Then
'如果要移动的目标坐标(X,Y,Z)就是当前坐标(CurrentNX,CurrentNY,CurrentNZ)
'那么就不需要移动,直接退出子程序【当前坐标是在其他地方定义并赋值的】
Exit Sub
End If
If StopRun = True Then
'应该是控制“停止”的地方,如果该变量是真,就停止移动,退出子程序
Exit Sub
End If
'标签控件的显示标题:
frmmain.lblState.Caption = "直线插补|" &"起点: X" &CurrentNX &" Y" &CurrentNY &" Z" &CurrentNZ &"终点: X" &X &" Y" &Y &" Z" &Z
SPointX = CurrentNX
SPointY = CurrentNY
If X <>CurrentNX Then
Dim K As Single
K = (Y - CurrentNY) / (X - CurrentNX)'K相当于斜率,(X,y)、(CurrentNX,CurrentNY)两点确定的直线
For I = CurrentNX To X Step Sgn(X - CurrentNX) '后面的SgN函数:里面是负数时返回-1,里面是正数时返回1,0时返回0
Y1 = SPointY + K * (I - SPointX)
X1 = I
Call DrawLine(CurrentNX, CurrentNY, X1, Y1) '划线
CurrentNX = X1
CurrentNY = Y1
CurrentNZ = Z
Next I
'上面整个For循环中,Z是一步就移动到目标Z坐标,而X、Y坐标是一点一点移动的。
Else
'X=CurrentNX时,只移动Y即可(Z也是一步移动到目标位置的Z坐标)。
For I = CurrentNY To Y Step Sgn(Y - CurrentNY)
Y1 = I
X1 = CurrentNX
Call DrawLine(CurrentNX, CurrentNY, X1, Y1)
CurrentNX = X1
CurrentNY = Y1
CurrentNZ = Z
If X = CurrentNX And Y = CurrentNY And Z = CurrentNZ Then
'此时已经移动到了目标位置。
Exit Sub
End If
Next I
End If
Exit Sub
errhand:
'错误处理代码:表示没有将控制移动的条件(可以看成开关)赋值成True时出现错误,就d出错误提示
'反之,人为控制移动停止时 则不d出提示框。
If StopRun = False Then
MsgBox "程序发生错误,请检查G代码!", vbOKOnly, "错误"
End If
End Sub
希望能帮到你
Line 方法 在对象上画直线和矩形。 语法 object .Line [ Step ] ( x1 , 1 ) [ Step ] ( x2 , y2 ), [color] , [ B ][ F ] Line 方法的语法有以下对象限定符和部分: 部分 描述 object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。 Step 可选的。关键字,指定起点坐标,它们相对于由 CurrentX 和 CurrentY 属性提供的当前图形位置。 ( x1, y1 ) 可选的。 Single (单精度浮点数),直线或矩形的起点坐标。 ScaleMode 属性决定了使用的度量单位。如果省略,线起始于由 CurrentX 和 CurrentY 指示的位置。 Step 可选的。关键字,指定相对于线的起点的终点坐标。 ( x2, y2 ) 必需的 。Single (单精度浮点数),直线或矩形的终点坐标。 color 可选的。 Long (长整型数),画线时用的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。 B 可选的。如果包括,则利用对角坐标画出矩形。 F 可选的。如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。不能不用 B 而用 F 。如果不用 F 光用 B ,则矩形用当前的 FillColor 和 FillStyle 填充。 FillStyle 的缺省值为 transparent。 说明 画联结的线时,前一条线的终点就是后一条线的起点。 线的宽度取决于 DrawWidth 属性值。在背景上画线和矩形的方法取决于 DrawMode 和 DrawStyle 属性值。 执行 Line 方法时, CurrentX 和 CurrentY 属性被参数设置为终点。 这个方法不能用于 With...End With 语句块。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)