用vb 方法画摆线.函数轨迹如下:x=at+b*sin(ct) ,y=b*(1-cos(ct))其中a,b,c为需要用inputbox输入的常数
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 09:15:25
![用vb 方法画摆线.函数轨迹如下:x=at+b*sin(ct) ,y=b*(1-cos(ct))其中a,b,c为需要用inputbox输入的常数](/uploads/image/z/6073382-38-2.jpg?t=%E7%94%A8vb+%E6%96%B9%E6%B3%95%E7%94%BB%E6%91%86%E7%BA%BF.%E5%87%BD%E6%95%B0%E8%BD%A8%E8%BF%B9%E5%A6%82%E4%B8%8B%EF%BC%9Ax%3Dat%2Bb%2Asin%28ct%29+%2Cy%3Db%2A%281-cos%28ct%29%29%E5%85%B6%E4%B8%ADa%2Cb%2Cc%E4%B8%BA%E9%9C%80%E8%A6%81%E7%94%A8inputbox%E8%BE%93%E5%85%A5%E7%9A%84%E5%B8%B8%E6%95%B0)
用vb 方法画摆线.函数轨迹如下:x=at+b*sin(ct) ,y=b*(1-cos(ct))其中a,b,c为需要用inputbox输入的常数
用vb 方法画摆线.函数轨迹如下:x=at+b*sin(ct) ,y=b*(1-cos(ct))
其中a,b,c为需要用inputbox输入的常数
用vb 方法画摆线.函数轨迹如下:x=at+b*sin(ct) ,y=b*(1-cos(ct))其中a,b,c为需要用inputbox输入的常数
Rem 正如一楼所述,你没给出t的取值范围,这里我假设就是窗体的宽度
Rem 其实这种题最难的不是画函数,而是预估函数的最大值和最小值,只有这样才能归一化,否
Rem 则没法显示
Private Sub Command1_Click()
Rem x=at+b*sin(ct) ,y=b*(1-cos(ct))
Dim t As Integer, x As Double, y As Double, ang As Double
Dim minX As Double, MaxX As Double, minY As Double, MaxY As Double
Dim StartX As Integer, StartY As Double, LastX As Integer, LastY As Double
Dim a As Integer, b As Integer, c As Integer
' a = Val(InputBox("a是?"))
' b = Val(InputBox("b是?"))
' c = Val(InputBox("c是?"))
a = 1: b = 2: c = 3
Pi = 3.14
Me.ScaleMode = vbPixels
minX = 0: MaxX = 120
minY = 0: MaxY = 5
StartX = minX: StartY = MaxY
For t = 1 To ScaleWidth Step 1
ang = (t / Me.ScaleWidth) * 2 * Pi '仅显示一个周期
ant = t
x = (a * t + b * Sin(c * ang))
x = x * (Me.ScaleWidth - 20) / (MaxX - minX) '归一化处理
ang = (t / Me.ScaleHeight) * 2 * Pi '仅显示一个周期
ang = t
y = (b * (1 - Cos(c * ang)))
y = Me.ScaleHeight - 40 - y * Me.ScaleHeight / (MaxY - minY) '归一化处理
Rem Me.PSet (x, y), vbRed
Rem Me.Circle (x, y), 2, vbRed
LastX = x: LastY = y
Me.Line (StartX, StartY)-(LastX, LastY), vbRed
StartX = LastX: StartY = LastY
Next
End Sub