vb编程中怎么实现内插法求值

vb编程中怎么实现内插法求值,第1张

数学内插法即"直线插入法"。其原理是,若A(i1,b1),B(i2,b2)为两点,则点P(i,b)在上述两点确定的直线上。而工程上常用的为i在i1,i2之间,从而P在点A、B之间,故称"直线内插法"。数学内插法说明点P反映的变量遵循直线AB反映的线性关系。

上述公式易得。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 语句块。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7736092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存