关键词:数学图形;三种基本变换;VB程序
作者简介:吴治伟,任教于陕西省西安电建学校。
VisualBasic是一种面向对象的程序设计语言,具有很强的图形、图像处理功能,广泛应用于图形设计、图像处理及多媒体设计中。因此,高中数学图形变换与VB语言各种图形的变换是密不可分的,学生通过VB程序的综合实践,受到良好的图形变换和技能训练,培养了学生的创造能力、开发能力,全面提高了学生的素质。
一、平移变换
定理:x1=x+a,y1=y+h.(x,y)为原坐标,(a,h)为平移量,(x1,y1)为新坐标
例1:平移变换
程序设计:⑴2个子程序。画图初始化
PrivateSubform_load()
Picture1.Scale(-30,30)-(30,-30)‘控件坐标系,在屏幕坐标
Picture1.DrawWidth=1‘Object.DrawWidth=n,n为0~32767像素
EndSub
画线
PrivateSubxian(x0,y0,c)‘x0,y0为平移量,c为颜色
Forx=-18to18step2
y=x^3/800+y0:x1=x+x0
Ifx=-18then
Picture1.Pset(x1,y)‘Object.Pset(x,y)为画点语句,当c缺省时,Pset为前景色画点
Else
Picture1.Line-(x1,y),c‘Object.Linet(x,y),c为画线语句
EndIf
Next
EndSub
⑵5个功能键设计:①画一条曲线
PrivateSubCommand1_Click()
x0=0:yo=0:c=QBColor(1)‘QBColor(n)函数,n为0~15,有16种颜色
Callxian(x0,y0,c)
EndSub
②水平移动画15条曲线
PrivateSubCommand2_Click()
yo=0:c=QBColor(3):Forx0=-10to10:Callxian(x0,y0,c)
Next
EndSub
③垂直移动画15条曲线
PrivateSubCommand3_Click()
yo=0:c=QBColor(14):Forx0=-10to10:Callxian(x0,y0,c)
Next
EndSub
④画8组曲线
PrivateSubCommand4_Click()
c=QBColor(12):Fori=1to5:y0=(i-3)*10:Forx0=-10to10:Callxian(x0,y0,c)
Next
Next
EndSub
⑤清屏,退出
PrivateSubCommand5_Click()PrivateSubCommand6_Click()
Picture1.ClsEnd
EndSubEndSub
二、比例变换
定理:x1=x·kx,y1=y·ky
kx,ky为x、y方向的放大系数。大于1时放大;小于1时缩小。kx=ky时为相似变换;ky是x的函数,则发生奇异变换。
例2:比例变换
程序设计:⑴初始化
PrivateSubcsh()
Picture1.Scale(-10,10)-(10,-10)
Picture1.DrawWidth=1‘Object.DrawWidth=n,n为0~32767像素
Picture1.FillColor=QBColor(12)‘Object.FillColor=颜色函数,对圆、饼、矩形框填色使用
Picture1.FillStyle=0‘Object.FillStyle=n,n的取值范围为0~7
c=120
Forx=0To2Step0.05
c=c+5:r=5-x*2
c2=RGB(0,c,c)‘RGB(red,green,blue),表示红、绿、蓝色。范围0~255
Picture1.FillColor=c2
Picture1.Circle(x,x),r,c2‘是画圆或椭圆,(x,y)是圆心的坐标,r是半径
Next
Picture2.Scale(-15,16)-(15,-16)
EndSub
⑵“变换过程”设计
PrivateSubbili(n)
Forx=-10To9Step0.1
Fory=-9To10Step0.1
c=Picture1.Point(x,y)‘一个长整型数值,它有4个字节。(空位蓝绿红)
r=cAnd&HFF:g=(cAnd65280)\256:b=(cAnd&HFF0000)\65536
SelectCasen
Case1:kx=1:ky=1‘全等
Case2:kx=2:ky=1‘变宽
Case3:kx=1:ky=2‘变高
Case4:kx=(20-y)/20:ky=1‘奇异变换
EndSelect
Picture2.Line(kx*x,ky*y)-Step(kx,ky),RGB(r,g,B),BF
Nexty,x
EndSub
⑶按钮1:画“=》”,全等变换(n=1)
PrivateSubCommand1_Click()
Callcsh
Form1.Scale(-200,200)-(200,-200):Form1.FillColor=QBColor(8)
Form1.Line(-65,50)-(-40,13),QBColor(3),BF
Forx=-40To-30Step0.5:y=80+2*x
Form1.Line(x,y)-Step(0,60-4*(x+40)),QBColor(3)
Next
n=1:Callbili(n)
EndSub
⑷另外3个变换按钮:长宽变换(n=2),高矮变换(n=3),奇异变换(n=4)
PrivateSubCommand2_Click()
Callcsh:n=2:Callbili(n)
EndSub
PrivateSubCommand4_Click()
Callcsh:n=4:Callbili(n)
EndSub
⑸清屏与退出按钮。
PrivateSubCommand5_Click()PrivateSubCommand6_Click()
Picture2.ClsEnd
EndSubEndSub
三、旋转变换
定理:如图,设点M在xOy坐标系中的坐标为(x,y),当xOy坐标系绕原点逆时针旋转了角,变为x1Oy1坐标系.此时记点M的坐标为(x1,y1),则(x1,y1)与(x,y)的关系如下:
x1=OA+AB=xcosα+ysinα
y1=MF-AE=ycosα-xsinα
例3:旋转变换
要求:旋转角度用InputBox输入,单位为度。
程序设计:
Constpi=3.14159‘常数
PrivateSubCommand1_Click()
Picture1.Circle(0,0),20,QBColor(9),,,2
Dimb1AsString
b1=InputBox("请输入旋转角度:","输入",30,0,0)
Ifb1=""ThenExitSub
b=pi*Val(b1)/180:sb=Sin(b):cb=Cos(b)
Fora=0To2*piStep0.01‘旋转变换
x=10*Cos(a):y=20*Sin(a):x1=x*cb+y*sb:y1=x*sb-y*cb
Ifa=0Then
Picture2.PSet(X1,Y1)
Else
Picture2.Line-(X1,Y1),QBColor(4)
EndIf
Next
EndSub
清屏与退出按钮。
PrivateSubCommand2_Click()PrivateSubCommand3_Click()
Picture2.ClsEnd
EndSubEndSub
PrivateSubform_load()‘初始化:设置两个图形框,并在第一个图形中画椭圆
Picture1.Scale(-40,40)-(40,-40):Picture1.DrawWidth=2
Picture2.Scale(-40,40)-(40,-40):Picture2.DrawWidth=2
EndSub
当前,高中数学函数图形的变换提出了更高的要求,学生的判断能力和发现问题、解决问题的能力。更好运用VB的基本语法,激励学生善于进行总结,培养良好的学生思维的创造性。
参考文献:
[1]中国教育学会中学数学教学专业委员会.面向21世纪的数学教学[M].杭州:浙江教育出版社,1997.
[2]北京朗曼教学与研究中心.高中数学应用问题[M].长春:吉林科学技术出版社,1998.
[3]匡松.VisualBasic的程序设计[M].北京:中国铁道出版社,2007.
作者单位:陕西省西安电建学校
邮政编码:710000