信号与系统课件中的Flash数学函数引擎
The Flash Math Function Engine in Signals and Systems Courseware
DOI: 10.12677/AE.2020.105140, PDF, HTML, XML, 下载: 467  浏览: 630  科研立项经费支持
作者: 郭仁春, 赵立杰*, 白海军, 王国刚, 王倚天, 汪 滢:沈阳化工大学信息工程学院,辽宁 沈阳
关键词: 信号与系统多媒体课件数学函数引擎FlashSignals and Systems Multimedia Courseware Math Function Engine Flash
摘要: 在《信号与系统》课件的开发过程中,开发者会遇到大量的数学公式与函数图像,因此需要开发一套数学函数引擎来简化开发过程。本文描述了采用Flash软件制作通用数学函数引擎的方法,采用该方法可以简化数学课件的开发过程。这些函数引擎具有通用性和灵活性,可以根据用户需求进行二次开发。
Abstract: In the development process of “signals and systems” courseware, developers will encounter a large number of mathematical formulas and function images, so it is necessary to develop a set of mathematical function engine to simplify the development process. This paper describes the method of making general mathematical function engine with Flash software, which can simplify the development process of mathematics courseware. These function engines have generality and flexibility, and can be redeveloped according to user requirements.
文章引用:郭仁春, 赵立杰, 白海军, 王国刚, 王倚天, 汪滢. 信号与系统课件中的Flash数学函数引擎[J]. 教育进展, 2020, 10(5): 856-860. https://doi.org/10.12677/AE.2020.105140

1. 引言

采用Flash制作多媒体课件,可以制作具有交互功能的高品质的多媒体课件 [1]。Flash提供了ActionScript语言 [2],使用该语言可以实现各种复杂的功能。“信号与系统”课程有大量的数学公式,要制作信号与系统课程的课件首先要解决如何描述函数与函数图像。如果函数图像只是采用Flash工具手工绘制而成,那么这个图像与函数就没有关系。当需要改变该图像的取值范围、线的粗细、背景等,只有重新一张一张绘制了。因此很多数学课件开发者需要一个通用的数学引擎 [3],只要改变函数就可以改变图像,同时还能够修改横纵坐标的取值范围、线的颜色、粗细、背景等,本文将描述一种用Flash开发的数学函数引擎来实现上述目标。

2. 多媒体课件中的函数

在信号与系统中信号实际上就是自变量为时间变化的函数,即信号可以用函数f(x)来表达。因此信号与函数是同一个概念。一个普通的信号f(x)可以通过变换形成下面的式子:

y = a f ( b x + c )

其中f是函数名,x是自变量,a,b,c分别是参数。例如一个简单的正弦函数可以描述为:

y = A sin ( ω x + θ )

其中A,ω,θ分别是振幅,角频率和相位。

一般课件中需要观察函数图像随着a,b,c的改变而变化的过程。有时候还需要改变函数名,这就需要有一个函数引擎来支持,这个函数引擎具有很强的通用性。如图1是描述正弦波的一个例子,通过改变振幅,角频率,相位来观察图像的变化。

Figure 1. Mathematical functions in Multimedia

图1. 多媒体中的数学函数

很显然采用传统的Flash手工绘制的方法是很困难的,更不用说要实现交互式了。采用数学函数引擎实现上述动画就容易多了。

3. 数学函数引擎的制作

为了可移植性更好,需要将数学函数引擎的代码放置在单独的Flash文件中,在Flash CS5中,采用Action Script 3.0程序,新建一个信号类,命名为Signal.as,在该文件中编写如下代码:

package

{

public final class Signal

{

public var a,b,c:Number;

public var name:String;

public function Fun(name:String=,a:Number=1,b:Number=1,c:Number=0)

{

this.a=a;

this.b=b;

this.c=c;

this.name=name;

}

//定义f(x)

public function f(x:Number):Number

{

return a*this[name](b*x+c);

}

//正弦函数

public function sin(x:Number):Number

{

return Math.sin(x);

}

//分段函数

public function seg(x:Number):Number

{

return x>=0&&x<=1?x:0

}

}

}

代码中this[name]是一种特殊的用法,其中name是字符串,用这种方法可以将字符串转换为函数名,例如this[“sin”]调用的是正弦函数,this[“seg”]调用了分段函数。也就是说本来是sin(x),现在写成了this[“sin”](x),这样就可以通过改变字符串来改变函数了。注意本例中提供了两个函数,一个是sin,另一个是seg,这两个函数都是用户自己定义的,如果用户还需要更多的函数可以按例子中的方法补充即可。

4. 通用函数图像类

按照上述的方法再建立一个Curve.as的文件,该文件用来生成函数图像。其部分代码如下:

package

{

public class Curve extends Sprite

{

public var w, h, x1, x2, y1, y2, xn, yn: Number;

public var f;

public function draw_curve():void

{

//代码略.....

}

......

}

}

其中w,h是图像的宽高,x1,x2是横轴的左右端点值,y1,y2是纵轴下和上的取值范围,xn,yn是横纵坐标的刻度份数。这里最值得注意的是变量f,给它赋不同的值,函数图像就会改变。

5. 数学引擎的使用

有了Signal.as和Curve.as两个文件,建立一个新的文件,后缀名是.fla。在这个文件的第一帧编写代码,如下:

var A=1; var ω=1; var θ=0;

var cv=new Curve();

addChild(cv);

cv.x1=−6; cv.x2=6; cv.y1=−2; cv.y2=2; cv.xn=12; cv.yn=4;

cv.w=200; cv.h=150;

var myfun=new Singal(sin,A,ω,θ);

cv.f=myfun.f;

cv.draw_curve();

所得函数图像,如图1所示。如果将代码中,加粗的语句改写为var myfun=new Signal(seg,A,ω,θ);则得到分段函数图像如图2所示。

Figure 2. Piecewise function

图2. 分段函数

至于右边的滑杆控件,只要将它们的值关联到程序中的A,ω,θ即可。

6. 结论

在多媒体的开发实践中,使用该Flash数学引擎简化了数学函数图像的编写,用户可以在此基础上开发更为强大、功能更多的数学引擎,它将使关于数学多媒体课件的内容更加丰富,用户体验更加友好。

基金项目

沈阳化工大学教育教学培育工程项目资助。

NOTES

*通讯作者。

参考文献

[1] 石立峰. 基于Adobe Flash多媒体课件制作方法探讨[J]. 计算机产品与流通, 2018(11): 226.
[2] 王志岗. 基于Flash ActionScript脚本语言的交互式多媒体教学软件开发研究[J]. 信息系统工程, 2017(3): 166-168.
[3] 许丹. Flash在中技数学教学中的运用[J]. 科学咨询(教育科研), 2018(12): 83.