




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专业实训报告云南大学软件学院专业实训报告Major Practice Report School of Software, Yunnan University成 绩序号学号姓名成绩120101120093蒋丹妮220101120288张夕璞320101120304马通420101120161张正学 期: 2012学年春季学期 课程名称: 专业实训(1) 任课教师: 李 劲 小 组 长: 蒋丹妮 联系电话:电子邮件: 359882359 目录一、 成绩考核表-3二、 小组分工明细表-7三、 项目一-83.1摘要、问题描述-83.2设计-93.3测试结果及小结-113.4代码-12四、 项目二4.1摘要、问题描述-164.2设计-174.3测试结果及小结-4.4代码-五、 项目三5.1摘要、问题描述-85.2设计-95.3测试结果及小结-5.4代码-云南大学软件学院2012学年 春季 学期专业实训(1)成绩考核表(组内每位同学一份)课程名称: 专业实训(1) 年级: 2010 级 专业: 数字媒体技术 学号: 20101120093 姓名: 蒋丹妮 本人承担角色: 组长 指标内容分值指标内涵及评估标准得分解决的关键技术问题10选的准,范围合适,重点突出基本上选准只抓住了部分关键问题没有抓住关键问题技术路线的可行程度10合理可行,具体且有创新合理可行,具体基本合理可行不够合理或不够具体小组成员的工作量(每个人分别打分)15高出平均要求工作量的15%以上高出平均要求工作量达到平均要求工作量低于平均要求的工作量项目完成的技术水平(个人)15难度很大,超出一般本科生要求水平难度较大,达到本科毕业论文水平难度一般,达到普通课程要求水平难度小,很容易实现达到预期目标的程度10完全达到基本达到无法预见未能达到团队合作精神10很强的团队合作精神合作情况良好合作情况一般合作不好,各自为政报告撰写质量(30分)5报告非常完整报告比较完整完整程度一般报告不完整5逻辑结构清晰逻辑组织较好逻辑组织一般逻辑不清5内容非常丰富内容较丰富内容一般内容欠缺5文字表达非常好文字表达较好文字表达一般文字表达差,意思不明了5图表制作非常专业化图件制作良好图件制作一般图件制作效果差5整体效果很好整体效果良好整体效果一般整体效果差综合得分: (满分100分)指导教师:李 劲 2012年 7 月 1 日云南大学软件学院2012学年 春季 学期专业实训(1)成绩考核表(组内每位同学一份)课程名称: 专业实训(1) 年级: 2010 级 专业: 数字媒体技术 学号: 20101120288 姓名: 张夕璞 本人承担角色: 组员 指标内容分值指标内涵及评估标准得分解决的关键技术问题10选的准,范围合适,重点突出基本上选准只抓住了部分关键问题没有抓住关键问题技术路线的可行程度10合理可行,具体且有创新合理可行,具体基本合理可行不够合理或不够具体小组成员的工作量(每个人分别打分)15高出平均要求工作量的15%以上高出平均要求工作量达到平均要求工作量低于平均要求的工作量项目完成的技术水平(个人)15难度很大,超出一般本科生要求水平难度较大,达到本科毕业论文水平难度一般,达到普通课程要求水平难度小,很容易实现达到预期目标的程度10完全达到基本达到无法预见未能达到团队合作精神10很强的团队合作精神合作情况良好合作情况一般合作不好,各自为政报告撰写质量(30分)5报告非常完整报告比较完整完整程度一般报告不完整5逻辑结构清晰逻辑组织较好逻辑组织一般逻辑不清5内容非常丰富内容较丰富内容一般内容欠缺5文字表达非常好文字表达较好文字表达一般文字表达差,意思不明了5图表制作非常专业化图件制作良好图件制作一般图件制作效果差5整体效果很好整体效果良好整体效果一般整体效果差综合得分: (满分100分)指导教师:李 劲 2012年 7 月 1 日云南大学软件学院2012学年 春季 学期专业实训(1)成绩考核表(组内每位同学一份)课程名称: 专业实训(1) 年级: 2010 级 专业: 数字媒体技术 学号: 20101120304 姓名: 马通 本人承担角色: 组员 指标内容分值指标内涵及评估标准得分解决的关键技术问题10选的准,范围合适,重点突出基本上选准只抓住了部分关键问题没有抓住关键问题技术路线的可行程度10合理可行,具体且有创新合理可行,具体基本合理可行不够合理或不够具体小组成员的工作量(每个人分别打分)15高出平均要求工作量的15%以上高出平均要求工作量达到平均要求工作量低于平均要求的工作量项目完成的技术水平(个人)15难度很大,超出一般本科生要求水平难度较大,达到本科毕业论文水平难度一般,达到普通课程要求水平难度小,很容易实现达到预期目标的程度10完全达到基本达到无法预见未能达到团队合作精神10很强的团队合作精神合作情况良好合作情况一般合作不好,各自为政报告撰写质量(30分)5报告非常完整报告比较完整完整程度一般报告不完整5逻辑结构清晰逻辑组织较好逻辑组织一般逻辑不清5内容非常丰富内容较丰富内容一般内容欠缺5文字表达非常好文字表达较好文字表达一般文字表达差,意思不明了5图表制作非常专业化图件制作良好图件制作一般图件制作效果差5整体效果很好整体效果良好整体效果一般整体效果差综合得分: (满分100分)指导教师:李 劲 2012年 7 月 1 日云南大学软件学院2012学年 春季 学期专业实训(1)成绩考核表(组内每位同学一份)课程名称: 专业实训(1) 年级: 2010 级 专业: 数字媒体技术 学号: 20101120161 姓名: 张正 本人承担角色: 组员 指标内容分值指标内涵及评估标准得分解决的关键技术问题10选的准,范围合适,重点突出基本上选准只抓住了部分关键问题没有抓住关键问题技术路线的可行程度10合理可行,具体且有创新合理可行,具体基本合理可行不够合理或不够具体小组成员的工作量(每个人分别打分)15高出平均要求工作量的15%以上高出平均要求工作量达到平均要求工作量低于平均要求的工作量项目完成的技术水平(个人)15难度很大,超出一般本科生要求水平难度较大,达到本科毕业论文水平难度一般,达到普通课程要求水平难度小,很容易实现达到预期目标的程度10完全达到基本达到无法预见未能达到团队合作精神10很强的团队合作精神合作情况良好合作情况一般合作不好,各自为政报告撰写质量(30分)5报告非常完整报告比较完整完整程度一般报告不完整5逻辑结构清晰逻辑组织较好逻辑组织一般逻辑不清5内容非常丰富内容较丰富内容一般内容欠缺5文字表达非常好文字表达较好文字表达一般文字表达差,意思不明了5图表制作非常专业化图件制作良好图件制作一般图件制作效果差5整体效果很好整体效果良好整体效果一般整体效果差综合得分: (满分100分)指导教师:李 劲 2012年 7 月 1 日小组分工明细表:小组人员及职务项目一(Mandelbort集合图像绘制)项目二(L-system绘制)项目三(逾渗检测)蒋丹妮(组长)图像的放大以及协调分配其它工作Lstate类的编写以及文档的编写PandE类以及percolation类的编写张夕璞(组员)Draw_Mandelbrot 类的编写及书写文档L-system类的编写临界渗漏概率任务的实现马通(组员)复数类的编写及文档修改Draw类的编写边类和点类及文档的编写张正(组员)Main函数的编写和测试Main函数的编写和测试项目测试和截图项目一 Mandelbrot集在复平面上的绘制与放大中文摘要本次项目用JAVA实现了Mandelbrot集在复平面上的绘制功能,并且用户可以通过用鼠标点击绘制平面上的点对Mandelbrot集的图像进行局部放大。在复平面上绘制出复数点阵集合,自行设置点的采样数,判定各个点是否满足条件公式,若满足条件则绘制为黑色,若不满足则绘制点的颜色随着迭代次数的变化而变化,最终将呈现出五彩缤纷的图案效果。用户点击绘制平面上的点,程序立即对鼠标点击的区域进行放大,即缩小显示区域,提高单位面积内的采样数,展现图像更多细节。通过记录鼠标点击的坐标中心位置,推算出其他正方形四点坐标,进行与以前窗口相同大小的绘制。英文摘要The Mandelbrot set is a mathematical set of points whose boundary is a distinctive and easily recognizable two-dimensional fractal shape. The set is closely related to Julia sets (which include similarly complex shapes), and is named after the mathematician Benot Mandelbrot, who studied and popularized it. More precisely, the Mandelbrot set is the set of values of c in the complex plane for which the orbit of 0 under iteration of the complex quadratic polynomial zn+1 = zn2 + c remains bounded. That is, a complex number c is part of the Mandelbrot set if, when starting with z0 = 0 and applying the iteration repeatedly, the absolute value of zn remains bounded however large n gets.This project is to draw image which is based on the Mandelbrot set by using the JAVA language, and users can use the mouse to enlarge image of the Mandelbrot set. Draw the lattice collection on the complex plane depended on the number of samplesset by user, then determine whether each point meets the condition:.If the point meet the condition, set it black, if not set it other color.第一、 问题描述曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为“上帝的指纹”。1这个点集均出自公式:Zn+1=(Zn)2+C,这是一个迭代公式,式中的变量都是复数.通过这个迭代公式可以生成Mandelbrot集的图像。 本次项目的内容就是用JAVA实现Mandelbrot集的图像的绘制,并且用户可以通过鼠标进行对Mandelbrot集的图像的局部放大。在复平面上绘制出复数点阵集合,自行设置点的采样数,判定各个点是否满足条件公式,若满足条件则绘制为黑色,若不满足则绘制点的颜色根据迭代次数的大小进行划分,并根据用户用鼠标点击的区域进行放大(所谓的放大就是将鼠标点击的坐标中心位置记录下,并根据坐标推算出其他正方形四点坐标,进行与以前窗口相同大小的绘制)。1 摘自百度百科第二、 概要设计(一) 主程序模块main函数中包含了三个模块:1. 设置了坐标X,Y的范围以及他们之间的刻度:cpDraw.setX(xl, xh, ss); cpDraw.setY(yl, yh, ss);2. 定义了first为Draw_Mandelbrot类的类型函数,传递的参数为xl, xh, yl, yh, s, Max3. 定义了a为mouse_Enlarge类的类型函数,传递的参数为:xl, xh, yl, yh,ss,s, Max(二) 各子程序模块1. Complex类中主要定义了复数的加减乘运算:a) 返回值为复数、传递的参数为复数的Cplus函数定义了复数的相加运算;b) 同样的情况下定义了Cmilus复数相减运算,Cmult复数相乘运算;c) 定义了I_Mandelbrot这个函数目的为了返回迭代次数,方便调用。2. Draw_Mandelbrot类中定义了Draw_Mandelbrot函数a) 在Draw_Mandelbrot函数中调用了Copmlex类中的I_Mandelbrot函数求得了迭代次数;b) 判定迭代次数是否与最大迭代数相等,然后根据迭代次数进行颜色的判定。3. mouse_Enlarge类中a) 确定了鼠标点击的XY坐标,mx,my;b) 求得放大后正方形四点的坐标后调用了cpDrawsetX();cpDrawsetY();重新进行了X,Y坐标轴的定义;c) 定义了then为Draw_Mandelbrot类的类型函数来再次绘制图形。第三、 详细设计(一) ADT 抽象数据类型 complex 1. 数据对象 构建一个复数类2. 数据关系 两个操作数real和imag具有序偶关系,real表示实部, imag表示虚部。3. 基本操作a) Complex cmilus(Complex rhs) 操作结果:实现两个复数的减法。b) Complex cplus(Complex rhs)操作结果:实现两个复数加法,并输出结果。c) public Complex cmult(Complex rhs)操作结果:实现两个复数乘法,并输出结果。d) int I_Mandelbrot(int maxIter) 操作结果:判定复数点是否属于Mandelbrot集,并输出最 大迭代次数。(二) 定义复数类以及内部运算操作:包括了复数的初始化,加法,减法,乘法,以及求模运算,Mandelbrot集合的判定函数,其返回值为整型的迭代次数。1. 进行了复数的初始化;2. 定义了复数的求模运算调用了Math.hypot;3. 定义了复数的相加运算,由于传递的参数是一个复数,故复数的相加运算就是第一个复数的实部加第二个复数的实部,第一个复数的虚部加第二个复数的虚部,最后把相加的实部虚部返回到新的复数z中;4. 减法同加法类似;5. 乘法运算也是通过找准第一个复数与第二个复数的实部虚部(this.real, this.imag)进行了复数z模大小的判定,看起是否小于2;6. z=z.cmult(z).cplus(this);此步是进行条件的判定。(三) 绘制Mandelbrot集合的函数实现(即Draw_Mandelbrot类的定义)1. 在main函数中把采样数S,X,Y坐标范围值以及迭代次数传递进来,然后通过for循环进行采样点的绘制:for(int j=0;js-1;j+)for(int k=0;ks-1;k+)2. 然后定义了点阵图中所有点的X,Y坐标:a=xl+j*(xh-xl)/s; b=yl+k*(yh-yl)/s;3. 它们赋值给z0集合:Complex z0=new Complex(a,b);4. 调用I_Mandelbrot函数返回迭代次数:iterNum=z0.I_Mandelbrot(Max);5. 最后进行颜色值的判定:cpDraw.setPenColor(new Color(255-iterNum*20%255),(255-iterNum*12%255), (255-iterNum*10%255))(四) 鼠标点击的放大1. 确定鼠标点击X,Y的坐标:mx=cpDraw.mouseX();my=cpDraw.mouseY();2. 然后取边长为原图1/10,再进行正方形四个点坐标的计算,即: nx1=mx-(x2-x1)*0.5*0.1; nx2=mx+(x2-x1)*0.5*0.1; ny1=my-(y2-y1)*0.5*0.1; ny2=my+(y2-y1)*0.5*0.1;3. 最后重新专递参数给Draw_Mandelbrot,即:Draw_Mandelbrot then =new Draw_Mandelbrot(nx1, nx2, ny1, ny2, s, Max); 第四、 测试结果第五、 总结蒋丹妮:这次实验我主要负责的是图像放大功能的实现,以及协调分配整个小组的工作,确保项目进度。在做实验的过程中遇到的主要问题是坐标的转换,一开始没有想清楚具体的算法就开始敲代码,整个思维没有理清,耽误了很多时间。而后来在写代码的过程中失误把变量的名字敲错了,导致整个程序不能正确运行,调错调了很久才发现是犯了这样低级的错误。经过这次项目的锻炼,我意识到在实际开发项目的过程中,首先对项目有一个整体的分析和设计很重要。具体的代码只是实现的细节,一开始就陷入到细节中去就很容易迷失方向,误入歧途。调错的时候也有很多方法可以借鉴和学习,通过这次实验我也发现了自己在这方面经验上的不足。以后我要多动手,多思考,总而言之就是要经历各种磨练才能成为一个合格的软件开发人员吧。 张夕璞:这次项目中我负责的Draw_Mandelbrot 这个类,它的功能只要完成的是曼德布洛特集合的绘制,在这个类里主要完成的任务是绘制出满足曼特布洛特集合的点阵,通过调用Complex 类来实现这一个目的。在设计的这个类的过程中进一步的加深了我对java中类的理解,加深了对函数类型及返回值类型的理解,使我更熟悉面向对象程序的思想。同时项目让我意识到自己对面向对象的程序设计还不是很熟悉,在编程的过程中会出现漏掉一下重要数据和写错变量名的问题,在今后的学习中会养成良好的编程习惯,在犯错中不断进步。马通:本次项目的任务就是在画布上绘制一个曼德勃罗特集合图像并且用户可以对鼠标点击的区域进行放大,在本次项目中我主要进行了复数类的定义,描述清楚了复数的基本运算包括加减乘和求模,定义了判定Mandelbrot集合的条件,同时对文档的编辑进行了修改。本次任务让我清晰地认识到从类型使用者到类型制造者角色的转变的重要性,从当初的使用java里默认的类型到现在自己定义的类型,加深了我们对数据结构的理解。本次任务涉及到了复数的简单运算,我们也运用了简单的算法,进一步的加深了我们对java中类的理解,加深了对函数类型及返回值类型的理解,使我们更熟悉面向对象程序的思想。同时本次任务让我们意识到自己的编程能力的不足,平时缺乏练习,缺乏思考。并且通过本次任务使我们清晰地意识到一个好的程序需要一个好的算法,需要好的数据结构。张正: 实验main函数的编写和测试。曼德布洛特集项目的主要目的是绘制一个用户能通过点击鼠标来放大曼德布罗特图像的图形,从而了解Java中类的概念。本次试验的练习让我知道团队合作的重要性,意识到一个好的程序需要一个好的算法,需要好的数据结构。同时由于对编程的不熟悉,在操作的过程中时常出现各种问题。在以后的学习过程中,我会加强训练,在不断学习中进步。第六、代码import Ynu.Sei.cpLibrary.BASIC.cpDraw;public class main public static void main(String args) / TODO Auto-generated method stub double xl=-2,xh=2,yl=-2,yh=2,ss=0.01; int s = 500,Max=100; cpDraw.setX(xl, xh, ss);/定义了X坐标的范围 cpDraw.setY(yl, yh, ss);/定义了Y坐标的范围 Draw_Mandelbrot first=new Draw_Mandelbrot(xl, xh, yl, yh, s, Max);/传递参数进入Draw_Mandelbrot这个类中进行Mandelbrot集合的绘制 mouse_Enlarge a=new mouse_Enlarge(xl, xh, yl, yh,ss,s, Max);/传递参数进入mouse_Enlarge这个类中进行鼠标点击区域的放大public class Complex /*数据定义部分*/double real;/复数的实部double imag;/复数的虚部/*数据定义及实现部分*/public Complex()real=0;imag=0;public Complex(double r,double i)real=r;imag=i;public double real()return real;public double imag()return imag;public String toString()return this.real+this.imag+i;public double abs()return Math.hypot(real, imag);/ 初始化复数public Complex cplus(Complex rhs)double a,b;a=this.real+rhs.real;b=this.imag+rhs.imag;Complex z =new Complex(a,b);return z;/复数加法public Complex cmilus(Complex rhs)double a,b;a=this.real-rhs.real;b=this.imag-rhs.imag;Complex z =new Complex(a,b);return z;/复数减法public Complex cmult(Complex rhs)double a,b;a=this.real*rhs.real-this.imag*rhs.imag;b=this.real*rhs.imag+this.imag*rhs.real;Complex z =new Complex(a,b);return z;/复数乘法public int I_Mandelbrot(int maxIter)int iterNum=0;Complex z=new Complex(0,0);while (z.abs()2&iterNummaxIter)z=z.cmult(z).cplus(this); /此步是进行条件的判定iterNum+;return iterNum;import java.awt.Color;import Ynu.Sei.cpLibrary.BASIC.cpDraw;public class Draw_Mandelbrot Draw_Mandelbrot(double xl,double xh,double yl,double yh,int s,int Max)double a,b;int iterNum;for(int j=0;js-1;j+)for(int k=0;kx1+(x2-x1)*0.5*0.1)&(mxy1+(y2-y1)*0.5*0.1)&(myy2-(y2-y1)*0.5*0.1) /判定鼠标点击位置是否越界,越界将不进行任何操作 cpDraw.clear();/清屏 nx1=mx-(x2-x1)*0.5*0.1;/放大十倍 nx2=mx+(x2-x1)*0.5*0.1; ny1=my-(y2-y1)*0.5*0.1; ny2=my+(y2-y1)*0.5*0.1; ss=ss*0.1; cpDraw.setX(nx1, nx2, ss ); cpDraw.setY(ny1, ny2, ss ); Draw_Mandelbrot then =new Draw_Mandelbrot(nx1, nx2, ny1, ny2, s, Max); cpDraw.setmouseClickedFalse(); 项目二 栈和队列的应用L-system中文摘要 本次项目的主要内容是编写一个L-system解释器,使得用户输入的规则得到解释并生成相应图形。L-system采用字符串重写机制,通过产生式的不断迭代形成字符串来指导画出图形。用户输入的规则由一个个字符组成,每个字符对应着一种操作,这种操作由解释器定义,如F表示画一条线段,+表示逆时针旋转一定的角度等。用户则可以任意拼凑这些给出的字符,构成“规则”。解释器将会把最初的字符串用这些“规则”来替换,生成新的字符串,如+-。 新的字符串又可以再次被解释(替换),用户可以自定义解释的次数,即迭代次数,来生成各种美妙的图形。英文摘要 An L-system or Lindenmayer system is a parallel rewriting system, namely a variant of a formal grammar, most famously used to model the growth processes of plant development, but also able to model the morphology of a variety of organisms.1 An L-system consists of an alphabet od symbols that can be used to make strings, a collection of production rules which expand each symbol into some larger string of symbols, an initial axiom strings from which to begin construction, and a mechanism for translating the generated strings into geometric structures.This project is to write an L-system interpreter to translate the rules user defined and generate relevant graph. A rule consists of many characters, and every character stands for an operation, which is defined by interpreter. For example, F means draw a line and + means rotate direction of drawing withershins theta. Users can group the characters given by interpreter freewill to form the rule. And interpreter will translate the original F character into the new string, like+-.Users can define the number of iterations, to generate all kinds of beautiful graph.1Citing from Wikipedia 第一、 问题描述 Lindenmayer 系统简称L系统是1968年由匈牙利生物学家林登麦伊尔提出的有关生长发展中的细胞交互作用的数学模型,尤其被广泛应用于植物生长过程的研究。L-system或被称为Lindenmayer system是一个相似重写系统,是一系列不同形式的正规语法规则,多被用于植物生长过程建模,但是也被用于模拟各种生物体的形态。L-system也能用于生成自相似的分形,例如迭代函数系统。L-system首创于1968年,创始人是荷兰Utrecht大学的生物学和植物学家,匈牙利裔的Aristid Lindenmayer(19251989)。1 使用 L-系统生成的 3D 杂草 此次实验我们所关注的问题就是如何在二维空间使用户定义的规则得到”解释“并生成相应的图形。1引用自维基百科。第二、 概要设计1. 输入:用户输入规则,+-所旋转的角度,以及迭代次数。2. 输出:解释器输出迭代过后的字符串,迭代次数以及旋转角度,并且执行字符所对应的操作,最终显示出L-system图形来。3. 拟实现的字符操作: F : 向前走单位步长,并绘制边 f : 向前走单位步长 + :顺时针方向旋转Angle角度- :逆时针方向旋转Angle角度 : 将系统当前状态压栈 : 将系统当前状态弹栈4. 迭代过程:用java的string类的替换操作来实现5. 画图过程:参数设置:一是画笔颜色的变化,二是画笔粗细的变化主要通过cpLibrary的库函数来实现。 坐标定位:每执行一次Forward操作,更改画笔的当前坐标。6. 主程序模块:输入参数:用字符串接收用户输入的参数迭代:得到新的字符串输出执行字符对应的操作:用Lsystem类和Draw类来完成相应操作输出其中, 将系统当前状态压栈和弹栈,使用cpLibrary的cpStack来完成相应操作。另外自定义一个Lstate的类型,记录当前状态,如画笔粗细,画笔长度,颜色,位置等。第三、 详细设计ADT 抽象数据类型名称 Lstate1. 数据对象 系统当前状态2. 数据关系 系统状态有多个属性值:绘制方向角,坐标,绘制颜色等。这些状态构成一个集合。3. 基本操作:a) public void assign(Lstate m) 赋值运算,更新系统状态; b) public void setTheta(double newTheta) 等 修改各个参数的值,如setTheta()修改旋转角度的值; c) public double theta()return theta; 返回属性的参数值,如theta()返回当前系统旋转角度。 ADT 抽象数据类型名称 Lsystem1. 数据对象 字符对应的操作2. 数据关系 每个字符对应一个固定的操作3. 基本操作:a) public void Forward() 向前走单位步长,并绘制边 b)void pushS() 将系统当前状态压栈 c)void popS() 将系统当前状态弹栈 d)void plusTheta() 顺时针方向旋转Angle角度 e)void minusTheta() 逆时针方向旋转Angle角度关键操作实现的JAVA代码:1.迭代过程:for( i=0;icount;i+) change=orgin.replace(F, RULE); orgin=change; 其中,orgin和change都为string类型2.绘制线段:线段终点坐标:newX=Ls.X()+Ls.penWidth()*Math.cos(Math.toRadians(Ls.theta();newY=Ls.Y()+Ls.penLength()*Math.sin(Math.toRadians(Ls.theta();cpDraw.Line(Ls.X(),Ls.Y(),newX,newY);画笔粗细长度变化(执行一次Forward之后)newW=Ls.penWidth()-Ls.penWidth()*scale;newL=Ls.penLength()-Ls.penLength()*scale;/scale为默认值Ls.setX(newX);Ls.setY(newY);/重置起始点坐标Ls.setpenWidth(newW);Ls.setpenLength(newL);3.读取字符串并执行相应操作int len =change.length(); for( i=0;ilen;i+)/执行以下操作直到字符串全部读取完毕if(change.charAt(i)=F)b.Forward();else if(change.charAt(i)=-) b.minusTheta();else if(change.charAt(i)=+)b.plusTheta();else if(change.charAt(i)=)b.pushS();else if(change.charAt(i)=) b.popS();else break;4.进栈出栈过程:这里用的是cpLibrary里的cpStack栈:void pushS()Lstate nls=new Lstate();nls.assign(Ls); /记录当前状态SSK.push(nls); void popS()Ls.assign(SSK.pop();第四、 测试结果测试数据: 规则:FF+F-F-F-F-F+F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渔业生产技术培训与合作社合作协议
- 信息安全管理与审计工具箱
- 财务费用核算自动化工具集
- 一场突如其来的大雨事件记事类作文8篇范文
- 销售代理委托协议条款扩展文件
- 特种工种安全培训课件
- 特种工安全培训教学课件
- 企业知识管理与员工培训资源库
- 文件归档方案办公场景表格
- 建材销售个人工作总结
- 可爱的中国教案全册
- 小数除法竖式专项计算144题(有答案)
- 频谱监测及瞬态信号捕获技术课件
- 平凉市崆峒区大寨乡柳沟村地热水矿产资源开发利用方案
- 隧道安全质量培训课件
- 六年级上册语文期末复习句子专项训练及答案
- 2019人教版高中英语选择性必修一UNIT 1 People of Achievement 单词表
- 电力变压器基础知识课件
- JJG 373-1997四球摩擦试验机
- GB/T 37785-2019烟气脱硫石膏
- GB/T 29343-2012木薯淀粉
评论
0/150
提交评论