我们知道,三角函数主要有这样几个公式:
sin(a) = 对边a / 斜边c
cos(a) = 底边b / 斜边c (其中角度a,可以是任意角度)
如下图所示:

由图可知,在一周之内,角度a可以在从0度到360度取值而对于钟表来说,每个刻度之间的度数差别为360度除以60个刻度,等于6度,也就是说公式里的角度a已经知道了.而且可知边a实际上就是圆上任意一点在y轴上的坐标,而边b是加上就是圆上任意一点在x轴上的坐标,半径r由我们所要画出的圆形的大小决定的,所以我们可以得到圆上任意一点在坐标系中的x , y轴上的取值.公式如下:
x = sin(a) * r
y = cos(a) * r
而且在vb中,也有这样的函数可供使用.
1、cos函数
作用:返回一个Double,指定一个角度的余弦值
格式: Cos(number)
2、sin函数
作用:返回一个Double,指定一个角度的正弦值
格式: Sin(number)
下面我们通过示例来看看具体的用法。
首先,我们将用这些知识来画出一个正弦:
下面是代码:
'=======================
'说明,x从0到form1的最右面
'y值中,因为i是从0变到form1的最右面
'所以i/form1.scalewidth 就从0 变到1
'所以,i/form1.scalewidth*2*3.1415926既是o*2pi 到1* 2pi
'所以,cos(i/form1.scalewidth*2*3.1415926),就从1到-1,在变到1
'所以,1-cos(i/form1.scalewidth*2*3.1415926),就从0到2,在变到0
'所以y 就从0到form1.scaleheight,在变到0
'即可画出cos曲线
'=======================
Private Sub huacos ( ) ‘自定义了一个名为huacos的过程
Dim x As Double
Dim y As Double
For i = 0 To Form1.ScaleWidth ‘设定周期为Form1 . ScaleWidth
x = i
y = (1–Cos(i/ Form1.ScaleWidth * 2 * 3.1415926 ) ) * Form1.ScaleHeight/2
‘ 因为三角函数中的角度的增长方向,和计算机中相反,所以要用1减去cos值
PSet(x,y)
Next i
End Sub
Private Sub Form _ Activate ( )
Huacos ‘调用huacos 过程
End Sub
下图为运行结果:

余弦和它相似,代码如下:
Private Sub huasin ( ) ‘自定义了一个名为huasin的过程
Dim x As Double
Dim y As Double
For i = 0 To Form1 . ScaleWidth ‘设定周期为Form1 . ScaleWidth
x = i
y = (1–Sin(i/Form1.ScaleWidth*2*3.1415926)) * Form1.ScaleHeight / 2
‘ 因为三角函数中的角度的增长方向,和计算机中相反,所以要用1减去sin值
PSet (x, y)
Next i
End Sub
Private Sub Form _ Activate ( )
huasin ‘调用huasin过程
End Sub
下图为运行结果:

有了这些基础,画出一个正圆也就没问题了。请看下面的代码。
Private Sub huayuan( )
Dim x As Double
Dim y As Double
For i = 0 To 360
x=(1–Sin(i/360*2*3.1415926))*(Form1.ScaleHeight/2–100) 100
y=(1–Cos(i/360*2*3.1415926))*(Form1.ScaleHeight/2–100) 100
Pset(x,y)
Next i
End Sub
Private Sub Form _ Activate( )
huayuan
End Sub
上面的代码不难,好好思考一下吧.下面是运行结果:

上面的例子里,我们使用360个点组成了一个密集度挺高的圆形,可是既然vb中已给我们提供了现成的画圆形的函数,为什么不用呢?但通过上面的例子,我们应该想到,如果我们将360个点,变成60个点,那不就正好是一个钟表的刻度吗?!这样的话我们只需要改动两个地方,一个是点的个数,另一个是点与点之间的弧度,应该为360度的60分之一,也就是每60度画一个点。代码如下:
Private Sub huabiaopan ( )
Dim x As Double
Dim y As Double
For i = 0 To 60
x=( 1 – Sin(i/60*2*3.1415926))*(Form1.ScaleHeight/2–100) 100
y=( 1 – Cos(i/60*2*3.1415926))*(Form1.ScaleHeight/2–100) 100
PSet(x,y)
Next i
End Sub
Private Sub Form _ Activate ( )
huabiaopan
End Sub
下面是运行结果: (为了看得清楚些,我将颜色设为了红色,大家可以随喜好自行修改,方法当然是在Pset函数中了)

看来我们距离成功越来越近了。对于钟表里的三个针来说,每一时刻都会指向其中一个刻度,所以我们只要在其中添加代码,让它实现从圆心到所指刻度画直线就可以实现钟表里的三个针了。
下面是关于其中一个针的走动,代码如下:
Private Function huamiao ( a As Integer )
'用同背景相同的颜色,在前一次的位置上,从新画直线,抹除前一次画的线
x =(1–Sin((a 1)/60*2*3.1415926))*(Form1.ScaleHeight/2–200) 200
y =(1–Cos((a 1)/60*2*3.1415926))*(Form1.ScaleHeight/2–200) 200
Line(Form1.ScaleHeight/2,Form1.ScaleHeight/2)-(x,y),QBColor ( 7 )
'然后开始画後一秒的线
x =(1–Sin(a/60 * 2 * 3.1415926 ) ) * (Form1.ScaleHeight/2–200) 200
y =(1–Cos(a/60 * 2 * 3.1415926 ) ) * (Form1.ScaleHeight/2–200) 200
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关文章
热点关注
- 在asp.net中为Web用户控件
- .NET3.5和VS2008中的ASP.N
- 对.NET Framework 反射的
- Asp.net Ajax 1.0 异步回
- ASP.NET2.0的控件状态和视
- 通过避免下列10个常见ASP.
- 中国地区三级联动下拉菜单
- 解析Asp.net中资源本地化
- 一个无刷新效果定时自动更
- 动态创建MSSQL数据库表存
- asp.net用url重写URLReWri
- 使用ASP.NET Atlas编写显
- 关于ASP.NET调用JavaScrip
- 使用ASP.Net Forms模式实
- asp.net ajax 使用updatep
- 优化ASP.NET应用程序性能
- ASP.NET中动态修改web.con
- ASP.NET中利用Crystal Rep
- asp.net如何生成图片验证
- 基于ASP.NET的Web动态控件
- 分享个极好的无刷新二级联
- asp.net 2.0 上传控件的使
- 创建ASP.NET监视服务器进
- Asp.net把UTF-8编码转换为
- 开发基于ASP.NET WebServi
- asp.net结合html,javascr
- asp.net 2.0下嵌套masterp
- 正则表达式提取数字
- 最新版FreeTextBox(版本3.
- 获取本机上配置好的Oracle
- ASP.Net全局变量的设置和
- VB几个有用的函数
- 用代码画折线图/柱形图/
- FCKeditor2.2 ASP.NET2.0
- 客户端回调实现gridView无
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD




