用VB制作李萨如图形动态演示程序计算机二级考试

文章作者 100test 发表时间 2009:04:30 06:46:52
来源 100Test.Com百考试题网


  1 引言
  李萨如图形是一个质点的运动轨迹[1],该质点在两个垂直方向的分运动都是简谐运动。李萨如图形是物理学的重要内容之一,在工程技术领域也有很重要的应用。利用李萨如图形可以测量未知振动的频率和初相位,掌握李萨如图形的形成过程有很重要的意义。因而动态显示李萨如可以深入理解其形成过程。
  2 李萨如图形的形成
  假定形成李萨如图形的两个简谐运动,一个在X轴上,一个在Y轴上,
  
  
  它们的运动方程为(假设它们的振幅相等):它们的合运动轨迹就是李萨如图形。为了能够形象地描述李萨如图形的形成过程,一般是把X轴和Y轴上的简谐运动分别用旋转矢量图来描述,如图1所示。由上式计算出不同时刻的质点的坐标(x,y),依次连接这些点,得到的图形就是李萨如图形。  


  图1  李萨如图形的形成过程

  3 李萨如图形动态演示的制作原理
  为了动态演示李萨如图形的形成过程,需要把描述两个简谐运动的旋转矢量的运动过程和它们的合运动过程动态地画出来。
  具体的做法是:
  (1)画出描述X、Y方向简谐运动的旋转矢量的参考图,分别由两条垂直的直线,一个圆构成;
  (2)通过计算,分别画出从圆心出发的代表X、Y方向简谐运动旋转矢量位置的直线;
  (3)画出合运动的定位线,得到属于李萨如图形的点的坐标,如果是第一个点,则直接描点;否则与前一点相连,得到质点的运动轨迹;
  (4)擦去两个旋转矢量和合运动定位线;
  (5)继续计算下一点的坐标,再回到第2步重复进行;
  (6)直到暂停或终止程序运行。
  按照以上的算法,用VB6.0编制程序[2, 3]。运行程序,发现在擦去合运动的定位线的同时,把X、Y方向简谐运动的旋转矢量图和李萨如图形也擦去了一部分。例如图1中的A、B、C、D和E点等都被擦去,经过一段时间以后,X、Y方向简谐运动的旋转矢量图和李萨如图形都变成了虚线图,不再是一幅完整的图形。
  为了得到良好的视觉效果,应该使上述被擦掉的部分能够及时补画上。对于X、Y方向简谐运动的旋转矢量图,由于它是由规则的直线和圆画出的,因而再次重画相应的直线和圆即可。而李萨如图形是不规则的,被擦去的点的坐标,当然可以通过计算的方法得到,但是从图1可以看出,这种计算是相当复杂的,因为在一般情况下,很难准确判断李萨如图形中被擦去的是哪些点。
  为了解决这个问题,笔者采取的办法是,在程序中引入两个数组,用这两个数组来依次记录计算得到的李萨如图形的点的坐标(x,y)值,在擦去合成线以后,再次根据数组中的数据重新绘画被损坏的图形。
  绘制李萨如图形的程序源码如下:
  Private Sub Timer1_Timer()
  DrawWidth = 2
  清除动画显示区域
  If i = 1 Then
  Line (Xxc - wid, Yyc - wid)-(Xxc wid, Yyc wid), BackColor, BF
  End If
  擦去图形,形成动画效果
  Line (Xxc, Xyc)-(Xx, Xy), BackColor
  Line (Yxc, Yyc)-(Yx, Yy), BackColor
  Line (Xx, Xy)-(Xx, Yy), BackColor
  Line (Yx, Yy)-(Xx, Yy), BackColor
  画X方向的简谐振动的旋转矢量图
  Line (Xxc - wid, Xyc)-(Xxc wid, Xyc), RGB(255, 0, 0)   画X轴
  Line (Xxc, Xyc - wid)-(Xxc, Xyc wid), RGB(255, 0, 0)   画Y轴
  Circle (Xxc, Xyc), A, RGB(255, 0, 0)  画圆
  画Y方向的简谐振动的旋转矢量图
  Line (Yxc - wid, Yyc)-(Yxc wid, Yyc), RGB(255, 0, 0)   画X轴
  Line (Yxc, Yyc - wid)-(Yxc, Yyc wid), RGB(255, 0, 0)   画Y轴
  Circle (Yxc, Yyc), A, RGB(255, 0, 0)  画圆
  画李萨如图形的坐标轴
  Line (Xxc - wid, Yyc)-(Xxc wid, Yyc), RGB(255, 0, 0)   画X轴
  Line (Xxc, Yyc - wid)-(Xxc, Yyc wid), RGB(255, 0, 0)   画Y轴
  计算相位
  If i = 1 Then   初相位
  Xxw = Xchxw * pi / 180
  Yxw = Ychxw * pi / 180
  Else   t时刻相位
  Xxw = Xxw 2 * Xpl * pi / 400
  Yxw = Yxw 2 * Ypl * pi / 400
  End If


相关文章


计算机二级VB辅导:可以换肤的窗体计算机二级考试
二级VB辅导:VB中自动提示保存修改后的文件计算机二级考试
VB辅导:用BASIC语言写智能手机程序计算机二级考试
vb.net实现简单的眼睛保护系统计算机二级考试
用VB制作李萨如图形动态演示程序计算机二级考试
利用VB2005制作颜色渐变的进度条计算机二级考试
二级VB辅导:VB在远程管网数据传输中的应用计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛