注册 登录
编程论坛 VB6论坛

请帮忙解决有关作图画曲线的问题

成昆 发布于 2020-05-30 22:24, 2135 次点击
运行截图
只有本站会员才能查看附件,请 登录
中的代码,作出的图
只有本站会员才能查看附件,请 登录
中曲线明显缺了两个角。为什么?应该如何解决?谢谢!
5 回复
#2
成昆2020-05-30 22:49
补充说明一下,我想在打开窗口中显示“三尖瓣线”,但根据曲线方程写出的代码,运行结果,在圆周三分之一,三分之二的两个点位置,曲线并没有划到大圆的圆周上。请帮忙修正前面的代码,或者说说出现这结果的原因。谢谢!
#3
成昆2020-05-31 09:56
今天再查对一遍输入的曲线方程
只有本站会员才能查看附件,请 登录
,公式中R=9,r=3。
#4
wmf20142020-05-31 10:45
应该是scalemode的问题,下述代码可自适应画三尖瓣线,供楼主参考
程序代码:
Private Sub Form_Load()
  Me.ScaleMode = 1
  Me.AutoRedraw = True
  Dim x As Single, i As Integer, m As Integer, h As Integer, w As Integer
  h = Me.ScaleHeight / 2
  w = Me.ScaleWidth / 2     'h、w值为圆心
  m = w
  If h < w Then m = h
  m = m - 60                'm为原的半径
  Circle (w, h), m
  For x = 0 To 8 * Atn(1) Step 0.001
    PSet (m / 3 * (2 * Cos(x) + Cos(2 * x)) + w, m / 3 * (2 * Sin(x) - Sin(2 * x)) + h)
'    PSet (m * 2 / 3 * Cos(x) + m / 3 * Cos(2 * x) + w, m * 2 / 3 * Sin(x) - m / 3 * Sin(2 * x) + h)
  Next
End Sub
#5
cwa99582020-06-01 14:08
注意 圆的半径通常是按照水平单位来指定的。如果坐标系使用的水平单位和垂直单位是相同的话(按照缺省规定,应当这样),可以不用考虑单位问题。但如果使用的是自定义标尺,则水平单位和垂直单位可能对应不同的长度。
楼主的代码就是自定义标尺,x,y的长度不一定是相等的。你把窗体拉窄点,就会发现左边的两点会在圆的外面了。

解决办法:使x,y的实际值相等。
Private Sub Command1_Click()
    Dim x As Single, h As Single, w As Single
    Const Pi = 3.14159265358979
   
    Cls
    h = Me.ScaleHeight
    w = Me.ScaleWidth
   
    Scale (-20, 20 * h / w)-(20, -20 * h / w)
   
    For x = 0 To 2 * Pi Step 0.001
        PSet (6 * Cos(x) + 3 * Cos(2 * x), 6 * Sin(x) - 3 * Sin(2 * x))
    Next
    DrawStyle = 2
    Circle (0, 0), 9
   
End Sub

[此贴子已经被作者于2020-6-1 14:24编辑过]

#6
成昆2020-06-02 10:28
谢谢你的简便方法!
1