- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常用函数作图画板
常用函数作图画板
1.课程设计目的
本课程设计实现的是小型函数作图画板,主要实现的功能是通过函数的表达式在画图板上显示出相应的函数图形。其中支持的函数种类有直线、抛物线、圆锥曲线和三角函数的作图;可以对曲线的颜色和宽度进行设定;可以在同一个面板图上显示出多条函数线;在画板上的函数图像可以保存在文件中,也可以从文件中读取函数图像到画板上;在画上函数图像时,自动把函数表达式显示在图像旁边,并可以为图像增加必要的文字说明。坐标系原点可以自行设定,可以自由缩放。
2.设计方案论证
2.1开发环境的建立
在系统中安装JDK1.7.0,并设置相关环境变量;
将eclipse程序放到系统磁盘中,设置好工作空间;
2.2设计思路
2.2.1本程序中构建一个抽象基类Shape,每种函数的图像类都继承该类,具体作图的算法在每个图像类中实现,对于外部调用来说,并不关心它是椭圆形还是抛物线,都可以统一用指向子类的基类对象来调用,实现了运行时多态。每个画布对象保存了一个LinkedListShape类型的集合对象,重画时只需用个循环,依次取出每个Shape对象,并调用重载的画图方法draw。
2.2.2为解决重画闪烁问题,采用了双缓冲技术,先在一个Image对象上画图,再一次性将图复制到画布上。
2.3设计方法
2.3.1系统模块设计
此程序将分两个模块来实现功能:
界面设计:头部是一个菜单栏,实现新建画布,打开图像,保存图像,退出等功能。左边栏是一个工具箱,放置了各图像画图按钮和对应的参数输入面板。中间是画布选项卡,是作图区域。底部是一个属性面板,可设置画笔大小、线颜色、放大和缩小图像。
2.3.2主要算法设计
各函数图像的算法:
构建一个抽象基类Shape,每种函数的图像类都继承该类,在子类中重载draw(Image bufferImage)方法
主要的类包括:
父类:抽象类 Shape
子类:抛物线画法类Parabola ,双曲线类Hyperbola,坐标轴类Axis , Global类,sin函数类Sin ,直线画法类Straight, DoubleTextField, IntTextField等等。
2.3.3系统功能设计
本程序将实现以下功能:
(1)支持直线、抛物线、圆锥曲线和三角函数的作图。
点击相应的按钮,可以显示参数输入面板,用户输入函数表达式的相关参数后,点击Draw按钮就可以完成画图。
(2)同一个画布中同时作多个图象。
每个画布对象中有一个Shape集合,每做一个图,就将指向Shape的子类对象放入集合中,重画时再从该集合中取出。
(3)保存打开图像。
本程序可将画板上的图象成jpg文件,并可以打开jpg图片。
(4)显示函数表达式。
在画函数图象的同时将表达式显示在图象旁边。
2.4流程图如图1
2.5类,方法,属性的功能描述
2.5.1抛物线画法类Parabola
Parabola类成员方法 : draw() 画抛物线; setA()设置A; getA()得到A;setB()设置B; getB()得到B; setC()设置C; getC()得到C; setP()设置P; getP()得到P;
点击相应的按钮(显示参数面板(输入参数(点击Draw按钮(获取参数构造Shape(将该Shape对象加入画布Canvas对象中的成员LinkedListShape(调用画布对象的repaint()方法重画。
演示画抛物线,点击Draw按钮时,首先判断当前编辑的画布Canvas是否为空,不为空则获取参数,抛物线有两种公形式的输入:二项式y2=ax2+bx+c或标准式y2=2px,获取相应的参数后就构造Shape对象:
Shape shape=new Parabola(a, b, c);// 二项式,或者
Shape shape=new Parabola(p,parabolaType);//标准式
如果构造Shape成功,接着设置画笔颜色和画笔大小:
shape.setColor(Global.getColor());
shape.setStroke(Global.getStroke());
最后将Shanpe对象加入集合并重画:
canvas.getShapeList().add(shape);//加入集合
canvas.repaint();
System.out.println(获取参数画抛物线);
2.5.2 双曲线类Hyperbola
双曲线类Hyperbola成员方法:draw()画双曲线;setA()设置A ;setB()设置B;
setC()设置C;setD()设置D ; getA()得到A;getB()得到B;
getC()得到C;getD()得到D ;
2.5.3 坐标轴类Axis
文档评论(0)