致新手:用VB6解决一些有趣的问题(五)

下面,我们来设计一个强悍的程序

嘿嘿,程序设计起码要这样才有点意思嘛

我们在Picture上画一个三角形,这下可不是Print一堆字符了

我们必须要先算出三角形的 三个顶点 然后连线

比如三角形 ABC三点 我们以A作为坐标原点,对应Picture的中心

我们用X,Y来计算坐标和Picture上坐标的偏移量,A为(0,0)

如果AB长为a 沿着X轴,那么B点的坐标是(a,0)

现在来算C点,根据余弦定理有

'c^2=a^2+b^2-2*a*b*CosC
'CosC=(a^2+b^2-c^2)/2ab

别烦恼了,我数学也马虎,余弦定理难算,我们就来个简单的

(聪明的程序员会千方百计设计出程序)

以A为圆心 AC长(c)为半径的园 X^2+Y^2 = c^2

以B为圆心 BC长(b)为半径的园 (X-a)^2+Y^2=b^2

C点为两个圆的交线,所以两个方程,两个未知数,注意有两个交点哦

(隐隐感觉到 这个就是余弦定理) 解出

2*a*X=a^2+c^2-b^2 '因为我们设AB沿着X轴,所以X只有一个值

把X代入第一个方程 得出 Y=Sqr(c^2 - X^2) ,这里Sqr为平方根

得到的是正值,也就是舍去了低于X轴的那个(程序里下面的Y坐标大)

三个标签 垂直方向对应Text1,Text2,Text3分别存放变长a,b,c

一个按钮 一个Picture

Private Sub Command1_Click() Dim a As Single, b As Single, c As Single Dim pX(2) As Single, pY(2) As Single Dim dX As Integer, dY As Integer a = CSng(Text1.Text) b = CSng(Text2.Text) c = CSng(Text3.Text) If a + b < c Or b + c < a Or a + c < b Then MsgBox "无法够成三角形!", vbExclamation End If Picture1.Cls '清除Picture上的图形 Picture1.ScaleMode = 3 '以像素为单位 Picture1.AutoRedraw = True '自动重画 dX = CInt(Picture1.ScaleWidth / 2) dY = CInt(Picture1.ScaleHeight / 2) pX(0) = 0: pY(0) = 0 pX(1) = a: pY(1) = 0 pX(2) = (a ^ 2 + c ^ 2 - b ^ 2) / (2 * a) pY(2) = Sqr(c ^ 2 - pX(2) ^ 2) Picture1.Line (dX + pX(0), dY + pY(0))-(dX + pX(1), dY + pY(1)) Picture1.Line (dX + pX(1), dY + pY(1))-(dX + pX(2), dY + pY(2)) Picture1.Line (dX + pX(2), dY + pY(2))-(dX + pX(0), dY + pY(0)) End Sub

好吧,来看看我们画出了什么球样

想给图形填充吗?嘿嘿,哪还要更复杂的算法呢,加油吧,未来的世界是我们的

里面所含的内容有: 1、vb6MDPlay重复播放.txt 2、vb6MsgBox消息窗口.txt 3、vb6text自动换行.txt 4、vb6保存(读取)数据到注册表里.txt 5、vb6背景色透明.txt 6vb6打开任意类型的文件.txt 7、vb6打开网页.txt 8、vb6单击按钮复制文本框内的内容.txt 9、vb6单击按钮最小化窗体.txt 10、vb6点击最大化最小化和关闭(有上角的)触发什么事件.txt 11、vb6调用API函数模拟按下Alt键.txt 12、vb6读写txt内容.txt 13、vb6根据MDPlay设计进度框.txt 14、vb6后台发送邮件.txt 15、vb6获取鼠标当前位置.txt 16vb6检测程序是否运行.txt 17、vb6检测键盘的输入.txt 18、vb6检测文件是否存在.txt 19、vb6进度条的使用A.txt 20、vb6进度条的使用B.txt 21、vb6禁止改变窗口大小(允许最大化和最小化).txt 22、vb6模拟按键.txt 23、vb6模拟键盘输入的N种方法.txt 24、vb6判断鼠标左键被按下.txt 25、vb6屏幕任意截图.txt 26vb6全局键盘钩子.txt 27、Vb6如何注册OCX控件.txt 28、vb6什么是键盘虚拟键?.txt 29、vb6使控件大小随窗体的变化而变化.txt 30、vb6使用ShellExecute调用RAR进行解压.txt 31、vb6释放资源文件.txt 32、vb6提取包含特定字符的行的内容.txt 33、vb6托盘+气泡(不用模块).txt 34、vb6拖动text文本框.txt 35、vb6拖动没有标题栏的窗口.txt 36vb6信息收发软件的制作.txt 37、vb6循环整数的运用.txt 38、vb6用MDPlay播放音乐.txt 39、vb6用代码解压缩rar文件.txt 40、vb6用代码添加资源文件.txt 41、vb6在程序中调用资源文件.txt 42、vb6在数据库中保存变量.txt 43、vb6怎么生成不带引号的字符.txt 44、vb6制作时钟(时针、分针、秒针).txt 45、vb6中的text中输入的内容存为txt文本.txt 46vb6中多个简单的命令.txt 47、vb6中怎样加载背景图片,能随窗体大小变化? .txt 以上内容纯属作者本人整理,内容的可靠性也经本作者亲手证实,请放心使用,珍惜作者的劳动成果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值