'新建工程
Private a As Single, b As Single, r As Single
Private x As Single, y As Single, z As Single
Private Sub Form_Paint()
a = 2000: b = 2000: r = 1000 '圆参数
Me.Circle (a, b), r, vbRed
x = 3500: y = 2000: z = 1500 '圆参数
Me.Circle (x, y), z, vbRed
Call CirEx
End Sub
'求两点距离
Private Function GetLen(px1 As Single, py1 As Single, px2 As Single, py2 As Single) As Single
GetLen = Sqr((px1 - px2) ^ 2 + (py1 - py2) ^ 2)
End Function
'画切线,x,y为圆外点纵横坐标,
Private Sub CirEx()
Dim i As Single, j As Single, s As Single
s = 0.6 '误差
For i = a - r To a + r '横坐标
j = b + Sqr(r ^ 2 - (i - a) ^ 2) '上纵坐标
If Abs(GetLen(i, j, a, b) - r) < s And Abs(GetLen(i, j, x, y) - z) < s Then Exit For
Next i
j = b + Sqr(r ^ 2 - (i - a) ^ 2) '上纵坐标
Me.Line (i, j)-(x, y), vbRed
j = b - Sqr(r ^ 2 - (i - a) ^ 2) '上纵坐标
Me.Line (i, j)-(x, y), vbRed
End Sub
追问你的代码很正确,不过我的
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/902397dda144ad34564def8ed1a20cf430ad85cc?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
还差最后一点了,我想通过用command最后画出切线,可是老是提示错误,应该怎么修改
追答我看不到错误定位在哪,你可以设置断点调试,可能是参数设置不合理,不明白的地方HI我。
追问问了半天,也没有一个满意的答案