高中数学图形变换与程序的设计

(整期优先)网络出版时间:2010-12-22
/ 2

高中数学图形变换与程序的设计

吴治伟

关键词:数学图形;三种基本变换;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