下载

0下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 毕业论文——用VC++实现数学函数图形绘制

毕业论文——用VC++实现数学函数图形绘制.doc

毕业论文——用VC++实现数学函数图形绘制

倒在脚边的过去78
2017-09-27 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《毕业论文——用VC++实现数学函数图形绘制doc》,可适用于综合领域

毕业论文用VC实现数学函数图形绘制用VC实现数学函数图形绘制用VC实现数学函数图形绘制UsetheVCtorealizedrawingfiguresofmathematicfunctions指导教师:付勇制作人:刘海卢文娟Tutor:FuyongProducer:Liuhai、Luwenjuan摘要VisualC(以下简称VC)是面向对象与可视化软件开发工具中比较成熟的一类。MFC是VC中直接由Microsoft提供的类库它集成了大量已定义好的类我们可以根据需要调用相应类或根据需要自定义类。正是基于MFC的这种特性我们试图设计出具有封装性、独立性的功能模块函数数据生成模块函数曲线输出模块模块之间的桥梁是由模板类CArray派生的CPoint类数组充当的。函数数据生成模块用来实现对函数的设置并获得采样点数组得到采样点数据并将其传递到输出模块中。从整体来看实现了各程序模块的独立性使得在函数模块中可任意添加、删除函数可使用不同的DC和GDI可实现不同的输出方式整个工程在函数绘图功能上是无限扩展的。经过反复的调试和检验我们实现了预期目标。我们的主要目的是尝试VC在数学函数绘图方面的功能和应用。这是对VC的探索也是对数学函数绘图多样化的尝试。关键字数学函数图形绘制模板数组三次样条信息与计算科学毕业论文第页用VC实现数学函数图形绘制【Abstract】VisualCisoneoftheobjectorientedandvisualsoftwaredeveloper,whichismorematurethanothersMFCisaclasswarehousewhichissuppliedbyMicrosoft,anditcontainsagreatdealofdefinedclasseswecantransferthecorrespondedclassifnecessary,orgiveafreshdefinitionaccordingourneedsExactlybasedonMFCthiskindofcharacter,wetrytodesignoutthefunctionmoldwhichhavethefunctiontopacktheclassandbeindependentMoldforcreatingFunctiondata,Moldforoutputtingthefunctioncurve,moldpieceofbornmoldpiecebesentbyCpointArrayraredbytemplateCArrayThefirstmoldistomakeoutsetsforthefunctionandgetdataweneedwhichwillbesenttothedefinedarray,sonowthearrayhavethedatathatistobegotbythesecondmoldFromwholeproject,wecanseetheindependenceofeachmold,andexactlywemayincreaseanddecreasefunctionsifnecessary,weevencanusedifferentDCandGDItorealizethecustomedexportationmethodbywhichwecanhaveanewviewofthefunctioncurveSo,thefunctionoftheprojectcanbeextendedfreelyafterrepeatedlydebuggingandexamining,weachieveourpurposeThemostimportantthingwearetryingistofindawaytoconnecttheVCandthefiguresofmathmeticfunctionsThisisnotonlyaexplorationtoVC,butalsoaattemptforrealizingdiversifingthemathmeticfunctions【Keywords】Mathematicfunctionsdrawingfigurestemplatearraytripline信息与计算科学毕业论文第页用VC实现数学函数图形绘制目录用VC实现数学函数图形绘制UsetheVCtorealizedrawingfiguresofmathematicfunctions摘要关键字一、引言二、设计思路总体结构的设计基本结构的设计面临的问题解决问题的方法三、实现三次样条函数绘图函数定义边界条件函数表达式算法程序实现效果四、结论参考文献附录信息与计算科学毕业论文第页用VC实现数学函数图形绘制一、引言从事科技研究的人员常常需要解决一些复杂的数学问题而这些数学问题的解答往往可以从它的函数图形上很直观、明了的表现出来这时快捷方便的绘制出该数学函数的图形就显得尤为重要。用Matlab等数学软件就可以做到这一点但是当我们需要在我们自己的软件产品中快速简洁的绘制出众多自定义的数学函数图形时用Matlab等数学软件就有些麻烦。所以我们选择了用VC来实现数学函数图形的绘制。随着软件工程技术的不断发展应用面向对象的编程技术已经成为当今软件开发的重要手段之一尤其是VC的出现大大推进了面向对象与可视化编程技术的应用与发展。VC主要使用了两种方法:(用Windows提供的WindowsAPI函数。(直接使用Microsoft提供的MFC类库。我们选用的是MFCAppwizard(exe)工程。MFC类库是VC中直接由Microsoft提供的一种编程资源是对程序设计的高度抽象它集成了大量已定义好的类我们可以根据需要调用相应类或根据需要自定义有关类使得程序员的主要精力不用放在程序设计的细节实现上而放在程序的功能拓展上。它允许在编程过程中自定义和扩展运用程序中的类同时还允许对WindowsAPI函数进行存取从而使运用程序能以最小的规模实现最丰富的功能而且能提供高效率的运行代码。更重要的是MFC可以封装不同的类将类封装后形成一个功能模块。也就是说允许为实现功能模块而将不同的类封装。我们选择了用VisualC来实现数学函数图形的绘制。还有以下几种考虑:、VC的良好特性促使我们去了解熟悉和开发、四年来计算数学的学习让我们产生了对一些数学算法进行深一步的实践探索、用VC来实现函数的绘图功能是很有优势的。VC的绘图过程直接引用Windows系统本身资源绘图速度很快不同的映像模式还可以确保图形的准确其可视化的界面设置简单明了、对图形的绘制和算法的研究是无止境的很多时候需要更具体、更详尽信息与计算科学毕业论文第页用VC实现数学函数图形绘制和易懂的算法设计这需要选取一种好的语言自己编写。VC基于C语言易懂且容易掌握。MFC类库的特性无限扩展了VC的功能用它来实现复杂多变的数学算法无疑是一个好的选择。VC运用对象、类、消息传递、封装等概念来构造系统要实现各种各样图形的绘制我们可以将函数看作对象将各种函数封装起来形成不同的类组成函数模块。将处理数据和输出图形定义在不同的模块中而模块之间的接口则是通过用VC的类数组模块定义的CPoint类数组实现的。二、设计思路总体结构的设计正是以上了解使我们得出了这样一条编程思路:函数数据生成模块函数曲线输出模块中间媒介由CPoint类数组构成。函数数据生成模块是实现对函数的设置:包括参数设置自变量设置数据输入并从算法中得到采样点再将采样点传给CPoint类数组。函数曲线输出模块则要从CPoint类数组中得到采样点在已定义好的输出环境中以描点连线的方式绘制图形。(如图)类CPoint函数数据生成模块函数曲线输出模块数组(图)这样的设计既体现了模块间的独立性也体现了数组在两个模块间的桥梁关系。由于对函数的设置也是独立的选择不同的函数会出现与之相适应的设置绘出相应的函数图形所以各函数间也是互相独立的对整个工程的其他部分是没有影响的。我们以sin,cos作为开始的尝试主要为熟悉VC的开发环境构造出良好的绘图环境再以三次样条函数为重点实现对算法的分析充分利用MFC的信息与计算科学毕业论文第页用VC实现数学函数图形绘制优势达到目的。基本结构的设计(将所要表达的对象封装。对函数的属性主要是参数设置一般用对话框来实现对函数的服务即函数算法用具体函数来表达再将具体的函数一个个的封装到为他们创建的函数模块中使它们完全独立开来(我们用函数数据生成模块得到了数据采样点为实现合理的函数绘图形式对采样点要做必要的处理后放入到类数组中(函数曲线输出模块专门负责营造输出氛围:用画笔还是画刷用多文档输出还是单文档用那一种映像模式界面看起来是否美观。当然最终是获得数组中的数据将它们放到适合的坐标轴上随即连线成图。看似独立的三个部分实际上是相互牵制和彼此照顾的采样点受到模板数组的影响通常不同函数得到采样点在放入模板数组前所作的处理也不同。面临的问题我们面临的问题有技术方面的和对每个函数的具体设置有如下几个方面:(函数参数设置自变量的范围函数的具体算法(输出设置:绘图方式坐标的建立、设置图形的缩放(对数组模板类的引用(对误差的控制。解决问题的方法、函数数据生成模块方面我们利用对话框来完成对自变量范围、各种参数的设置这使得对函数特性控制更明了和简单。(如图)信息与计算科学毕业论文第页用VC实现数学函数图形绘制(图)函数参数设置对话框所要关注的是采样点。采样点通过算法得到后需要符合类数组对数据的要求考虑到屏幕坐标是整型值因此所定义的类中的分量类型也应是整型而采样点的数据类型是多样的所以输入前需要对它们进行必要的处理而又由于受输出模块中映像模式的影响输出时也有必要对从数组中得到的数据进行处理。、CPoint类数组的使用是一个重点。它是由模数组定义的一个新的类数组类型。使用模板化就可以使这段程序能够处理某个类型范围内的各种类型的对象。模板具有两种形式:函数模板和类模板。定义模板数组typedefCArray<CPoint,CPoint>CPntArray模板类CArray派生的CPoint类数组具有动态扩展数组长度自动添加和删除以及设置数组元素的优良特性。当需要增加数组长度时不必要提出增加内存空间的申请类数组会自动满足这就有利于承接和输出不同的采样点数对于不同的函数这显然是符合要求的。但模板数组内存储是整型的CPoint对象为了画图的可视性和提高精度需要对采样值进行成比例放大变换。例如点(,)要存入模板数组如果不进行变换系统就会将其强制转换成整型点就变为(),而如果对其进行适当的扩大为了适应常见的轴我们普通的坐标轴一般以厘米为单位而实际屏幕坐标是以像素为单位并且这还与映像模式有关。在sin,cos的例子中我们的映像模式是MMLOMETRIC它将逻辑单位映像为mm,所以面对点(,)我们需要把它变成逻辑单位是厘米的点需要乘以单位就变成厘米点成了(,),存入模板数组后点实际是信息与计算科学毕业论文第页用VC实现数学函数图形绘制(,)输出点是(,)。然而如果我们这样处理现将点乘以点就变成了(,),以此存入模板数组再将点输出时除以那么输出点就是()如果对每个点都做这个处理对于图形差别就是很明显的了误差和精度也容易控制。、函数曲线输出模块是整个设计的核心。函数数据生成模块CPoint类数组函数曲线输出模块。那么我们用什么画以怎样的方式来画呢,这就需要引用计算机绘图的两个重要部分设备环境(DC)和图形设备接口(GDI)。DC主要定义了绘图的状态和方式而GDI则主要定义了绘图工具而且还可以确定在应用窗口中绘制图形的方式即确定绘图模式和映像模式。映像模式通过将图形从程序员定义的逻辑坐标窗口映射到物理设备的视口已实现坐标转换。窗口是对应逻辑坐标上用户设定的一个区域视口是对应于实际设备上用户定义的一个区域。具体解释如下:用屏幕坐标即像素点设立一个窗口利用选中的映像模式确定一个以逻辑坐标系为基础的窗口和一个以物理设备坐标系为基础的视口Windows系统即可按照窗口和视口的坐标比例自动调整图形这样实现了设备的无关性。原点的定义很好的解释了视口与窗口又为建立坐标系画图确立了基调。在我们想象中原点一般都在屏幕的中央这就是窗口的原点(,)然而它在视口中却可能不是(,)因为视口的(,)点在屏幕的左上角我们所要得到的是屏蔽了视口的的窗口坐标希望得到的是现实中的坐标系如此定义即可得到与设备无关的逻辑坐标系:获取屏幕窗口矩形区域并赋给rcCrectrcGetClientRect(rc)选取系统GDI对象(将GDI对象CBRUSH选进DC中)pDC,SelectStockObject(BRUSH)设置映像模式pDC,SetMapMode(MMLOMETRIC)设置屏幕中心为原点(窗口的原点视口的中心)pDC,SetViewportOrg(rcright,rcbottom)信息与计算科学毕业论文第页用VC实现数学函数图形绘制在这个程序片断中不仅设立了逻辑坐标原点利用映像模式确立了坐标轴的逻辑坐标和X轴Y轴的方向建立了视口与窗口的比例而且将GDI对象选入DC中实现了设备环境和图形设备接口的关联确立了图形的基调。着重解释视口与窗口的区别是因为我们为理解这个很绕的问题作了许多的假设、推理对自己的逻辑推理和思考问题的方式实在是一个锻炼。现在总结我们的问题解决方案:函数方面。因为我们选用的sin,cos函数在VC的函数库中有定义所以对他们的设置主要是参数和自变量的范围以及段数(段数就是对自变量范围的等距划分)选取这两个简单的函数让我们熟悉VC的运作方式对三次样条的设计是重要的部分要进行详细的讲解。模板是C语言的一个重要特性它是一种工具。使用模板可以使程序员建立具有通用类型的函数库和类库。模板具有两种不同的形式:函数模板和类模板。数组方面我们只是引用类模板不需要特别的要求。在程序中我们作如下声明和定义得到可动态变化长度的CPoint类型的模板数组:#include"afxtemplh"定义模板数组mPntArraytypedefCArray<CPoint,CPoint>CPntArrayCPntArraymPntArray输出模块中我们定义了坐标轴的绘制以及视口与窗口的的比例得到画笔将GDI对象选入DC中确立了输出模式得到采样点将点连线绘在坐标轴上即得到函数图形。从数组中获取采样点并绘图程序许代码是:if(mPntArrayGetSize()>){DrawCrood(pDC)绘制坐标轴CPointps=mPntArrayGetAt()pDC>MoveTo(psxmDis,psymDs)定位初始点for(intk=k<mPntArrayGetSize()k)直线段连接采样点{信息与计算科学毕业论文第页用VC实现数学函数图形绘制CPointps=mPntArrayGetAt(k)pDC>LineTo(psxmDis,psymDs)}(误差存在于算法的设计、数据的处理。三次样条算法误差控制是基于《数值分析》中对三次样条插值收敛性的讨论证明了插值函数一致收敛于原函数说明了程序算法设计已将模型误差控制到最小。在接收、计算、存储、输出数据时都是双精度的保证舍入误差最小它将逻辑单位映像为mm保证了图形的精确。三、实现三次样条函数绘图三次样条函数是分段插值算法中比较成熟且精度较高的一种它具有二阶连续导数光滑性较好适合像高速飞机的机翼形线、船体放样等型直线等往往要求有二阶光滑度的情况。函数定义定义:若S(x)在具有二阶连续导数且在每个小区间上是三次,,x,x,,a,bjja,x,x,x,,x,bS(x)多项式其中是给定节点则称是节点nx,x,x,,x的三次样条函数。若在节点上给定函数值(j=xy,f(x)njjj……n)并成立(j=,,…,n)()S(x),yjjS(x)则称为三次样条插值函数。边界条件三次样条插值函数的边界条件:,,,,S(x),f(x)S(x),f(x)()nn,,,,,,,,S(x),f(x)S(x),f(x)(j=,,……)()nn信息与计算科学毕业论文第页用VC实现数学函数图形绘制函数表达式满足条件()及加上边界条件(),()的三次样条函数的表达式可得S(x)n()S(x),y,(x)m,(x),jjjj,j其中是由分段三次Hermite插值所得的基函数,(x),,(x)jj,,将代入()得到y,f(x),m,S(x),(x),,(x)y,f(x),m,S(x)jjjjjj在上的表达式:S(x)x,xjjxxhxxxxhxx(,)(,)(,)(,)jjjjSxyy(),jjhhjj()(x,x)(x,x)(x,x)(x,x)jjjjmmjjhhjj(j,,,,,,,,,,n,),,,,,所要求的是根据(j,,,,,,,n)以及边界条件(),()mS(x,),S(x)jjj得矩阵方程:,,,mg,,,,,,,,,,,mg,,,,,,,,,,,,,,,,mg(),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mgn,n,n,n,,,,,,,,mg,,,,,,,,,n,nn如下:,,,,gjjjh,x,xjjjhhjj,,,(j,,,,,,,,n,)(),,jjhhhhj,jj,j信息与计算科学毕业论文第页用VC实现数学函数图形绘制y,yjjfx,x,jjhjh"g,fx,x,f()h"n,g,fx,x,fnn,nng,,(fx,x,fx,x)(j,,,,,,,,n,)jjj,jjjj算法算法步骤:''""步输入初始数据xj,yj(j=,,,……,n)及,,,和nffffnn步j从到n计算hxx及xxfj=jjjj步j从到n由公式(),()及计算λ,μ,gjjj步用追赶法解方程求出步计算的系数或计算在若干点上的值得到采样点绘出图形。程序实现,函数关系图函数数据生成模块函数曲线输出模块参数输入绘制坐标轴算法实现连接采样点类CPoint数组数组赋值函数信息坐标样式参数信息与计算科学毕业论文第页用VC实现数学函数图形绘制,三次样条算法实现函数voidCLLLView::OnCreateYang(){Invalidate(TRUE)InputYang()调用InputYang()实现输入初始数据(j=,,,……,n)及xyj,j,,,,,,边界条件f,f,f,f和原始数据个数nnnmZuigan()调用Zuigan()实现追赶法求jfor(k=xik<xink=(xinxi)mNum)计算采样点的值并赋给数组{kx=kfor(i=i<ni)解公式()S(x),ky{if(kx>=xiikx<=xii){ky=(kxxii)*(kxxii)*(hi*(kxxii))*yii(hi*hi*hi)(kxxii)*(kxxii)*(hi*(xiikx))*yii(hi*hi*hi)(kxxii)*(kxxii)*(kxxii)*mi(hi*hi)(kxxii)*(kxxii)*(kxxii)*mi(hi*hi)}}CPointSegPoint定义临时点SegPointx=(int)(*kx)将采样点值赋给临时点SegPointy=(int)(*ky)临时点值存入CPoint类数组mPntArraymPntArrayAdd(SegPoint)}Compare()调用Compare()函数实现坐标变换stFormat("Yong()")stFormat("d",mNum)stFormat("d",(int)xi)stFormat("d",(int)xin)Invalidate(TRUE)刷新屏幕调用OnDraw()函数进行绘图}其他功能函数代码见附录。信息与计算科学毕业论文第页用VC实现数学函数图形绘制效果,程序整体效果函数参数设置对话框程序整体效果图信息与计算科学毕业论文第页用VC实现数学函数图形绘制,三次样条实例xiyi三次样条插值函数的边界条件:,,S(),S(),,,,,S(),S(),实例图,三次样条函数绘出的sinsin()参数设置三次样条参数设置:xiyi三次样条插值函数的边界条件:信息与计算科学毕业论文第页用VC实现数学函数图形绘制,,S(),,S(),,,,,,S(),,S(),三次样条函数绘图与sin()的比较从比较绘图来看三次样条函数绘制的图形与原函数图形比较吻合说明我们的三次样条函数算法可行误差控制良好。四、结论通过利用VC的MFC类实现了sin,cos及三样条函数的图形绘制我们对VC的开发环境和运行方式有了更深的认识对数学函数的算法以对函数本身的了解有了新的高度尤其是将二者结合起来的尝试让我们对开发软件过程中所遇到的困难有了切身的体会同时又对寻找解决问题的出路充满了兴趣基本实现了我们要求的预期效果。但问题是存在的:由于自身能力和实践的有限我们没能实现过更有意义的函数进行更深层次的探讨和开发工程本身也有不完善的地方我们只是实现了算法但没能对图的准确性、精度、误差做出精确估计和判断也没有对算法作进一步的研究以期得到更简便的算法坐标轴对自变量的范围有一定限制当自变量范围很大时函数图形显信息与计算科学毕业论文第页用VC实现数学函数图形绘制示的会不完整影响函数图形的整体效果。但我们仍然庆幸自己做了这么个尝试:若是遇到数学方面一些具体而又需要自己编程时VC不失为一个好工具它的面向对象和可视化的设计它的编程语言的易于编写和易于理解它的绘图速度尤其是它的自定义类功能和程序的模块化都证明它是一个好的开发工具。在此论文设计过程中刘海同学主要负责软件方面的工作做了许多有创新意义的工作包括程序模块化的实现、输出方式的定义、坐标轴的确定以及对模板类CArray派生的CPoint类数组的引用等。卢文娟同学主要分担了数学函数方面的设计工作实现了函数数据生成模块特别是三次样条函数算法的确立。最后完成了论文的写作。信息与计算科学毕业论文第页用VC实现数学函数图形绘制参考文献、VisualC程序设计教程机械工业出版社黄维通姚瑞霞、用C语言编写数学常用算法人民邮电出版社陈必红、C语言程序设计电子工业出版社吕凤翥、C程序设计清华大学出版社谭浩强、VisualC实践与提高图形图像篇中国铁道出版社李于剑、数值分析华中科技大学出版社李庆扬王能超易大义信息与计算科学毕业论文第页用VC实现数学函数图形绘制致谢衷心的感谢我们的指导教师付勇老师他从一开始的程序整体设计到程序的具体实施以及论文的最后成形为我们解决了许多疑难问题提出了许多意见尤其是在引用模板类CArray派生的CPoint类数组时帮我们解决最主要的难题是整个工程顺利完成的关键。付老师细致、认真的指导态度一直激励着我们促使我们在做毕业论文过程中以严谨的态度对待每一个问题。我们还要感谢热心的同学他们为我们找来了资料提出了很多好的看法最后我们互相感谢对方尽管合作期间有时意见相左但经过我们的不断的交流、探究最后在整个工程的每个细节都达到了一致我们一直合作愉快~卢文娟刘海信息与计算科学毕业论文第页用VC实现数学函数图形绘制附录,参数输入函数程序代码:(输入初始数据xj,yj(j=,,,……,n)及f′,f′,f",f"和原始数据个数n)nnnvoidCLLLView::InputYang()三样条参数输入{mPntArrayRemoveAll()数组赋空flag=CInputInput实例化对话框类CInput接收要输入数据的个数和段数InputmDs=mNumInputmNum=nif(InputDoModal()==IDOK){flag=mNum=InputmDsn=InputmNumCInputInput实例化对话框类CInput输入边界条件InputmF=f将默认的边界条件赋给Input的成员变量InputmF=fInputmF=fInputmF=fif(InputDoModal()==IDOK)将Input成员变量获得的值赋给内存变量{f=InputmFf=InputmFf=InputmFf=InputmFfor(i=i<ni){CInputInput实例化对话框类CInput输入原始数据InputmShu=iif(InputDoModal()==IDOK){xii=InputmXiyii=InputmYi}elsebreak}}}信息与计算科学毕业论文第页用VC实现数学函数图形绘制}m,追赶法实现函数程序代码:(求)jvoidCLLLView::Zuigan(){for(i=i<ni)j从到nj计算hxx及fxxj=jjjj{hi=(xiixii)fi=(yiiyii)hi}for(i=i<ni)j从到n由公式(),()及计算λ,μ,gjjj{ri=hi(hihi)ui=hi(hihi)gi=*(ri*fiui*fi)}g=*fh*fgn=*fnhn*fb=for(i=i<=ni)追赶法的实现求解(){bi=ui(ri*bi)}ni=gfor(i=i<ni)nii=(firi*nii)(ri*bi)mn=ffor(i=ni>i)mi=niimi*bi解出mjm=f},绘制坐标轴函数程序代码:voidCLLLView::DrawCrood(CDC*pDC)绘制坐标轴{CRectrc获得屏幕窗口矩形区域并赋给rcGetClientRect(rc)获得当前客户取得矩形区域mDis=在调用Compare()函数前此参数为if(sig==)根据Compare()若采样点横坐标值全大于则X轴点左移使绘图的有效区域增加mDis=rcright*mRiumDs=信息与计算科学毕业论文第页用VC实现数学函数图形绘制if(sg==)mDs=rcbottom*mRiupDC>MoveTo(rcright,mDs)移点至屏幕坐标左边界点pDC>LineTo(rcright,mDs)划线至屏幕右边界点成X轴pDC>TextOut(rcright,mDs,"X")输出字母XpDC>MoveTo(mDis,rcbottom)移点至屏幕坐标下边界点pDC>LineTo(mDis,rcbottom)划线至屏幕上边界点成Y轴pDC>TextOut(mDis,rcbottom,"Y")输出字母YpDC>TextOut(mDis,mDs,"")输出窗口坐标的原点””pDC>MoveTo(rcright,mDs)画箭头,标出X轴的方向pDC>LineTo(rcright,mDs)pDC>MoveTo(rcright,mDs)pDC>LineTo(rcright,mDs)pDC>MoveTo(mDis,rcbottom)画箭头,标出Y轴的方向pDC>LineTo(mDis,rcbottom)pDC>MoveTo(mDis,rcbottom)pDC>LineTo(mDis,rcbottom)pDC>SetTextColor(RGB(,,))设置输出文本颜色X轴刻度for(i=mRiui>=rcrightmDisi=mRiu)因为点已经确定以点为中心向正、负方向标刻度点{j=istFormat("d",j)pDC>TextOut(imDis,mDs,st)标出刻度值pDC>SetPixel(imDis,mDs,(COLORREF)XFFFFFF)描出刻度点}for(i=mRiui<rcrightmDisi=mRiu)因为点已经确定以点为中心向正、负方向标刻度点{j=istFormat("d",j)pDC>TextOut(imDis,mDs,st)标出刻度值pDC>SetPixel(imDis,mDs,(COLORREF)XFFFFFF)描出刻度点}Y轴刻度for(i=mRiui>=rcbottommDsi=mRiu){j=istFormat("d",j)pDC>TextOut(mDis,mDsi,st)pDC>SetPixel(mDis,mDsi,(COLORREF)XFFFFFF)}for(i=mRiui<rcbottommDsi=mRiu)信息与计算科学毕业论文第页用VC实现数学函数图形绘制{j=istFormat("d",j)pDC>TextOut(mDis,mDsi,st)pDC>SetPixel(mDis,mDsi,(COLORREF)XFFFFFF)}},确定坐标轴样式函数程序代码:voidCLLLView::Compare()实现坐标变换{for(i=i<mPntArrayGetSize()i){mRiu=由于映像模式将逻辑单位映像为mm而一般的坐标单位为cm故对采样值要进行倍的扩大CPointpt=mPntArrayGetAt(i)sg=if(pty>=)如果函数值大于则标识变量sg=确立X轴的位置sg=elsebreaksig=if(mXa>=)如果自变量值大于标识变量sig=确立Y轴位置{sig=}}for(i=i<mPntArrayGetSize()i){mRiu=CPointpt=mPntArrayGetAt(i)sig=if(mXa>=)判断x轴看是否调用Compare()sig=elsebreak}},OnDraw()函数代码:voidCLLLView::OnDraw(CDC*pDC){CLLLDoc*pDoc=GetDocument()ASSERTVALID(pDoc)信息与计算科学毕业论文第页用VC实现数学函数图形绘制CRectrcGetClientRect(rc)选取库存GDI对象pDC>SelectStockObject(BRUSH)设置映射模式pDC>SetMapMode(MMLOMETRIC)pDC>SetWindowOrg(,)设置屏幕窗口原点pDC>SetViewportOrg(CPoint(rcright,rcbottom))文档开始信息if(flag==){pDC>SetBkColor(RGB(,,))pDC>SetTextColor(RGB(,,))pDC>TextOut(rcright,rcbottom,"欢迎使用本数学函数绘画程序~")pDC>TextOut(rcright,rcbottom,"请根据您的需要设置相关参数。")}正、余弦函数绘制if(flag!=flag!=flag!=){if(mPntArrayGetSize()>){DrawCrood(pDC)绘制坐标轴及刻度CPointpt=mPntArrayGetAt()pDC>MoveTo(ptxmDis,ptymDs)for(intk=k<mPntArrayGetSize()k){pt=mPntArrayGetAt(k)pDC>LineTo(ptxmDis,ptymDs)}函数信息pDC>SetBkColor(RGB(,,))pDC>SetTextColor(RGB(,,))pDC>TextOut(,rcbottom,"函数表达式:"st)pDC>TextOut(,rcbottom,"X取值范围:("st","st")")pDC>TextOut(,rcbottom,"截取段数:"st)}}三次样条函数绘图if(flag==){if(mPntArrayGetSize()>){信息与计算科学毕业论文第页用VC实现数学函数图形绘制DrawCrood(pDC)CPointps=mPntArrayGetAt()pDC>MoveTo(psxmDis,psymDs)for(intk=k<mPntArrayGetSize()k){CPointps=mPntArrayGetAt(k)pDC>LineTo(psxmDis,psymDs)}pDC>SetBkColor(RGB(,,))pDC>SetTextColor(RGB(,,))函数信息pDC>TextOut(,rcbottom,"函数表达式:"st)pDC>TextOut(,rcbottom,"X取值范围:("st","st")")pDC>TextOut(,rcbottom,"截取段数:"st)pDC>TextOut(,rcbottom,"边界条件:"st)pDC>TextOut(,rcbottom,""st)pDC>TextOut(,rcbottom,""st)pDC>TextOut(,rcbottom,""st)}}if(mpSelection==){POSITIONpos=pDoc>GetStartPosition()mpSelection=(CLLLCntrItem*)pDoc>GetNextClientItem(pos)}if(mpSelection!=)mpSelection>Draw(pDC,CRect(,,,))}信息与计算科学毕业论文第页

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/32

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利