我用以下代码可以绘出y=sinx图形
但我对其中下列代码不太理解,为什么要Sin(a) * 5,乘以5是做什么?
如果我要绘出y=2sin(3x)+x 和y=2sin(3x)+cosx
语句应该写成Picture1.PSet (a, Sin(3 * a) * 5 + a), vbRed
和Picture1.PSet (a, 2 * Sin(3 * a) * 5 + Cos(a) * 5), vbRed
是否正确'用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果 For a = -2 * pi To 2 * pi Step pi / 6000 Picture1.PSet (a, Sin(a) * 5), vbRed Next 绘出y=sinx的范例
通用声明模块: Const pi = 3.14159 Dim a Private Sub Command1_Click() '画正弦曲线 '首先清除picture1内的图形 Picture1.Cls 'Scale方法设定用户坐标系,坐标原点在Picture1中心 Picture1.ScaleMode = 0 Picture1.ScaleMode = 3 Picture1.Scale (-10, 10)- (10, -10) '设置绘线宽度 Picture1.DrawWidth = 1 '绘坐标系的X轴及箭头线 Picture1.Line (-10, 0)-(10, 0), vbBlue Picture1.Line (9, 0.5)-(10, 0), vbBlue Picture1.Line -(9, -0.5), vbBlue Picture1.ForeColor = vbBlue Picture1.Print "X" '绘坐标系的Y轴及箭头线 Picture1.Line (0, 10)-(0, -10), vbBlue Picture1.Line (0.5, 9)-(0, 10), vbBlue Picture1.Line -(-0.5, 9), vbBlue Picture1.Print "Y" '指定位置显示原点O Picture1.CurrentX = 0.5 Picture1.CurrentY = -0.5 Picture1.Print "O" '重设绘线宽度 Picture1.DrawWidth = 2 '用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果 For a = -2 * pi To 2 * pi Step pi / 6000 Picture1.PSet (a, Sin(a) * 5), vbRed Next '指定位置显示描述文字 Picture1.CurrentX = pi / 2 Picture1.CurrentY = -7 Picture1.ForeColor = vbBlack Picture1.Print "正弦曲线示意" End Sub
但我对其中下列代码不太理解,为什么要Sin(a) * 5,乘以5是做什么?
如果我要绘出y=2sin(3x)+x 和y=2sin(3x)+cosx
语句应该写成Picture1.PSet (a, Sin(3 * a) * 5 + a), vbRed
和Picture1.PSet (a, 2 * Sin(3 * a) * 5 + Cos(a) * 5), vbRed
是否正确'用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果 For a = -2 * pi To 2 * pi Step pi / 6000 Picture1.PSet (a, Sin(a) * 5), vbRed Next 绘出y=sinx的范例
通用声明模块: Const pi = 3.14159 Dim a Private Sub Command1_Click() '画正弦曲线 '首先清除picture1内的图形 Picture1.Cls 'Scale方法设定用户坐标系,坐标原点在Picture1中心 Picture1.ScaleMode = 0 Picture1.ScaleMode = 3 Picture1.Scale (-10, 10)- (10, -10) '设置绘线宽度 Picture1.DrawWidth = 1 '绘坐标系的X轴及箭头线 Picture1.Line (-10, 0)-(10, 0), vbBlue Picture1.Line (9, 0.5)-(10, 0), vbBlue Picture1.Line -(9, -0.5), vbBlue Picture1.ForeColor = vbBlue Picture1.Print "X" '绘坐标系的Y轴及箭头线 Picture1.Line (0, 10)-(0, -10), vbBlue Picture1.Line (0.5, 9)-(0, 10), vbBlue Picture1.Line -(-0.5, 9), vbBlue Picture1.Print "Y" '指定位置显示原点O Picture1.CurrentX = 0.5 Picture1.CurrentY = -0.5 Picture1.Print "O" '重设绘线宽度 Picture1.DrawWidth = 2 '用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果 For a = -2 * pi To 2 * pi Step pi / 6000 Picture1.PSet (a, Sin(a) * 5), vbRed Next '指定位置显示描述文字 Picture1.CurrentX = pi / 2 Picture1.CurrentY = -7 Picture1.ForeColor = vbBlack Picture1.Print "正弦曲线示意" End Sub
而是长宽比是5:1的长方形,为了照成平衡的视觉效果,故意将Y拉长了
实际是5(程序认为他是10)
|----------------------------|
| | 实际1(程序认为他是10)
| |
|----------------------------|
你想下,如果宽度绘制了1个长度,实际上 5/10 = x/1 x=5/10 个长度
如果高度绘制了1个长度 实际上 1/10 = y/1 y=1/10 个长度
为了制造宽度绘制了一个长度和高度绘制了一个长度实际效果看起来一样的情况,
作者 y = y*5 = 1/10 * 5 = x
用上面范例
Picture1.PSet 应该怎么写,用乘以5吗?
所以需要将y放大5倍
比如函数 y = f(x)
则 picture1.pset (x, 5 * f(x)), vbred
如果你绘制的图片是1:5的长宽比
则 picture1.pset (x, f(x)/5), vbred