实验三 自由曲线的生成
- 格式:doc
- 大小:73.00 KB
- 文档页数:4
实验报告(总)实验⼀溶液型药剂的制备⼀、实验⽬的1. 掌握液体制剂制备过程的各项基本操作。
2. 掌握溶液型制剂配制的特点、质量检查。
⼆、实验药品和器材药品:碘、碘化钾、蔗糖、⼄醇、薄荷油、滑⽯粉、吐温80、樟脑等。
器材:烧杯、玻璃漏⽃(6cm、10cm)、量筒、架盘天平、玻璃棒、滤纸、脱脂棉、电炉、⽔浴箱等。
三、实验指导溶液型液体制剂是指⼩分⼦药物分散在溶剂中制成的均匀分散的供内服或外⽤液体制剂。
溶液的分散相⼩于1nm,均匀澄明并能通过半透膜。
常⽤溶剂为⽔、⼄醇、丙⼆醇、⽢油或其混合液、脂肪油等。
属于溶液型液体制剂的有:溶液剂、芳⾹⽔剂、⽢油剂、醑剂、糖浆剂等。
溶液剂的制备⽅法有三种,即溶解法、稀释法和化学反应法。
四、实验内容与操作(⼀)薄荷⽔的制备1、处⽅1)处⽅Ⅰ⽤分散溶解法:取薄荷油,加滑⽯粉,在研钵中研匀,移⾄细⼝瓶中,加⼊纯化⽔,加盖,振摇10min后,反复过滤⾄滤液澄明,再由滤器上加适量纯化⽔,使成50ml,即得。
另⽤轻质碳酸镁,活性炭各0.8g,分别按上法制备薄荷⽔。
记录不同分散剂制备薄荷⽔所观察到的结果。
2)处⽅Ⅱ⽤增溶法取薄荷油,加聚⼭梨酯80搅匀,加⼊纯化⽔充分搅拌溶解,过滤⾄滤液澄明,再由滤器上加适量纯化⽔,使成50ml,即得。
3)处⽅Ⅲ⽤增溶-复溶剂法取薄荷油,加聚⼭梨酯80搅匀,在搅拌下,缓慢加⼊⼄醇(90%)及纯化⽔适量溶解,过滤⾄滤液澄明,再由滤器上加适量纯化⽔制成50ml,即得。
3、备注1)本品为薄荷油的饱和⽔溶液(约0.05%ml/ml),处⽅⽤量为溶解量的4倍,配制时不能完全溶解。
2)滑⽯粉等分散剂,应与薄荷油充分研匀,以利发挥其作⽤,加速溶解过程。
3)聚⼭梨酯80为增溶剂,应先与薄荷油充分搅匀,再加⽔溶解,以利发挥增溶作⽤,加速溶解过程。
(⼆)复⽅碘溶液的制备1、处⽅碘 2.5g碘化钾 5g纯化⽔加⾄50ml2、操作取碘化钾,加纯化⽔适量,配成浓溶液,再加碘溶解后,最后添加适量的纯化⽔,使全量成50ml,即得。
计算机图形学实验报告信息学院计算机专业20081060183 周建明综括:利用计算机编程语言绘制图形,主要实现以下内容:(1)、中点算法生成任意斜率直线,并设置线型线宽。
(2)、中点算法生成圆(3)、中点算法生成椭圆(4)、扫描算法实现任意多边形填充(5)、Cohen_Sutherland裁剪(6)、自由曲线与曲面的绘制(7)、二维图形变换(8)、三视图变换实验一、直线的生成一、实验内容根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。
二、算法原理介绍双击直线生成.dsw打开给定的程序,或者先启动VC++,文件(file)→打开工作空间(open workspace)。
打开直线生成view.cpp,按注释改写下列函数:1.void CMyView::OnDdaline() (此为DDA生成直线)2.void CMyView::OnBresenhamline()(此为Bresenham画直线)3.void CMYView::OnMidPointLine()(此为中点画线法)三、程序源代码1.DDA生成直线画法程序:float x,y,dx,dy,k;dx=(float)(xb-xa);dy=(float)(yb-ya);k=dy/dx;x=xa;y=ya;if(abs(k)<1){for (x=xa;x<=xb;x++){pdc->SetPixel(x, int(y+0.5),COLOR);y=y+k;}}if(abs(k)>=1){for(y=ya;y<=yb;y++){pdc->SetPixel(int(x+0.5),y,COLOR);x=x+1/k;}}//DDA画直线结束}2.Bresenham画直线源程序:float b,d,xi,yi;int i;float k;k=(yb-ya)/(xb-xa);b=(ya*xb-yb*xa)/(xb-xa);if(k>0&&k<=1)for(i=0;i<abs(xb-xa);i++){ d=ya+0.5-k*(xa+1)-b;if(d>=0){ xi=xa+1;yi=ya;xa++;ya=ya+0.5;}if(d<0){ xi=xa+1;yi=ya+1;xa++;ya=ya+1.5;}pdc->SetPixel(xi,yi,COLOR);}//BresenHam画直线结束}3.中点画线法源程序:float b,d,xi,yi;int i;float k;k=(yb-ya)/(xb-xa);b=(ya*xb-yb*xa)/(xb-xa);if(k>0&&k<=1)for(i=0;i<abs(xb-xa);i++){ d=ya+0.5-k*(xa+1)-b;if(d>=0){ xi=xa+1;yi=ya;xa++;ya=ya+0.5;}if(d<0){ xi=xa+1;yi=ya+1;xa++;ya=ya+1.5;}pdc->SetPixel(xi,yi,COLOR); }//BresenHam画直线结束}四、实验结果1、DDA生成直线2、Bresenham画直线3、中点画线法实验二、bresenham画圆一、实验内容根据提供的程序框架,修改部分代码,用Bresenham画法画一段圆弧或者画圆。
2024年高考生物复习专题模拟精练及真题演练—细胞代谢的综合分析1.(2023历城模拟)某同学搜索“水果酵素”得到下面的信息:①酵素本义是酶的别称。
②《酵素产品分类导则》中将酵素定义为:以动物、植物、菌类等为原料,经微生物发酵制得的含有特定生物活性的产品。
③把水果小块和水按比例放入容器,密封,注意容器内留下20%空间,置于阴凉处6个月后,过滤得到的滤液即为“酵素”。
下列有关叙述合理的是()A.由于水果酵素富含蛋白酶、脂肪酶,因此酵素被人体吸收后具有减肥功能B.发酵前需要对蔬果进行煮沸消毒,确保发酵过程无杂菌污染C.将酵素添加进洗衣粉中配合沸水浸泡,可以帮助分解衣物上的油渍D.“酵素”在生物体中具有降低反应的活化能的作用【答案】D【分析】酵素本义是酶的别称,是大分子物质,不能被人体细胞直接吸收,酵素进入消化道后会被消化酶水解,失去活性,无法起到减肥的作用,A项不合理;发酵过程中利用的是附着的天然菌种,若发酵前对蔬果进行煮沸消毒,将不能发酵,B项不合理;沸水可以使酵素和洗衣粉中的活性物质失活,会降低洗涤效果,C项不合理;酵素本义是酶的别称,酶的作用机理是降低化学反应的活化能,因此“酵素”在生物体中具有降低反应的活化能的作用,D项合理。
2.(2023雨花模拟)如图为乳糖酶催化乳糖水解的两个实验结果,除自变量和图中条件外,其他实验条件均设置为最适条件。
下列有关叙述错误的是()实验1 实验2A.若增大实验1的酶浓度,相对反应速率增大B.若继续增大实验2的酶浓度,相对反应速率不能继续增大C.若继续增大实验1的乳糖浓度,相对反应速率将维持最大值基本不变D.若降低两个实验的反应温度,相对反应速率都将降低【答案】B【分析】最终限制实验1酶促反应速率的因素是酶的浓度,若增大实验1的酶浓度,相对反应速率增大,A项正确;若继续增大实验2的酶浓度,相对反应速率可能不再增大,也可能继续增大,因为乳糖浓度是不确定的,B项错误;最终限制实验1酶促反应速率的因素是酶的浓度,若继续增大实验1的乳糖浓度,相对反应速率将不变,C项正确;根据题意,两个实验都处于最适条件(最适温度和最适pH)下,所以若降低两个实验的反应温度,酶的活性下降,相对反应速率都将降低,D项正确。
利用个人电脑绘制物理实验数据曲线的方法在物理实验中,我们经常需要测量各种物理量,并根据实验数据绘制相应的曲线,以便更好地理解现象和规律。
而随着科技的进步,个人电脑的普及使得我们可以借助计算机软件来进行数据处理和图形绘制,大大提高了实验数据的处理效率和图形表达的质量。
接下来,将介绍一些利用个人电脑绘制物理实验数据曲线的方法,帮助实验者在实验过程中更好地利用现代科技手段。
首先,我们需要选择合适的数据处理软件。
市面上有很多专门用于科学数据处理和图形绘制的软件,例如Matlab、Origin、Excel等。
这些软件都具有强大的数据处理和图形绘制功能,可以满足不同实验需求。
根据实际情况和个人喜好,可以选择合适的软件进行数据处理。
其次,我们需要导入实验数据。
无论是通过实验仪器采集的数据还是手动记录的数据,都需要将其导入到数据处理软件中。
通常,数据处理软件都支持常见的数据格式,如txt、csv等。
可以使用软件提供的数据导入功能,将数据导入到软件的数据表中。
接下来,我们需要对数据进行处理和分析。
在实验中,通常我们需要进行数据平滑、滤波、拟合等处理,以提高数据的准确性和可靠性。
数据处理软件提供了丰富的数据处理函数和算法,可以方便地对数据进行处理。
通过适当的处理,可以去除噪声、修正异常数据,得到更加准确的数据结果。
然后,我们可以开始绘制曲线。
数据处理软件一般都提供了图形绘制功能,可以选择合适的图形类型,如折线图、散点图、柱状图等。
在曲线绘制之前,需要在软件中设置坐标轴的范围、标签和刻度,以便更好地展示数据。
在绘制曲线时,可以选择合适的线型、颜色和符号,以区分不同实验数据点。
另外,数据处理软件还支持添加图例、注释和标题等功能,以提高图形的可读性。
此外,对于某些特殊的实验曲线,我们可能需要进行进一步的数学处理和分析。
例如,某些实验数据需要经过数学模型的拟合,以得到数学表达式和相关参数。
对于这类实验,数据处理软件提供了各种拟合函数和最小二乘法等数学处理方法,可以方便地进行数据拟合和参数提取。
毕业论文阶段性小结第一阶段:时间飞快,转眼开题已经有两个月了,在开题之前为了能够更好的了解和深入研究课题,对课题所涉及的内容进行了文献检索、学习和记录。
除此之外,开始学习之前没有接触过的C语言,为能够运用程序实现双螺杆压缩机的转子型线的设计和改进做准备。
以下是我第一阶段的主要工作内容:(1)C++的MFC模块学习。
双螺杆压缩机的转子型线的质量直接决定着整个压缩机的性能,而传统的设计转子型线的方法很复杂,计算量大,容易出错。
在对转子型线进行改进时,需要不断的尝试修改型线的参数,这样会产生大量的重复性的劳动,这些问题使得压缩机转子型线的优化变得困难又耗时。
计算机能够快速的完成大量的计算任务,所以希望通过自己编写一个程序,在对转子型线进行设计和改进的时候减少计算量,增加设计出一条优秀的转子型线的可能性。
基于这样的想法本阶段重点先学习了C语言,对C语言有了基础性的掌握。
为了让软件有更好的可操作性,选择了C++的MFC模块进行编写,这对于我来说又是一个完全新的东西,目前还在进一步的学习中,与此同时结合本课题的需要对MFC模块进行有针对性的加强学习。
(2)双螺杆压缩机转子型线的算法研究国内外现有的转子型线如,对称圆弧型线中的原始对称圆弧型线,这种型线比较简单直接采用圆弧作为转子型线,转子啮合时没有密封容积,型线的算法简单。
对不对称型线中的原始不对称型线、单边不对称摆线-销齿圆弧型线、Atlas-X型线、SRM-A型线等进行生成算法的研究、推导。
接下来要对近年来快速发展起来的新的高效型线如GHH型线、复盛型线、SRM-D型线及日立型线进行研究。
从转子型线的发展来看,转子型线的组成曲线形式由简单到复杂。
自由曲线理论快速的发展,出现了性能更好的自由曲线,所以近些年来快速发展起来的新的高效型线大都采用了更加高级的曲线作为转子型线的组成曲线。
但自由曲线的最新成果没有完全的应用在转子型线的设计和优化上,怎样运用更好的曲线来设计出一条性能优良的型线的算法还没有找到,这也是课题的重点。
实验一认识性实验一、实验目的:认识并熟悉solidworks三维机械设计软件的用户界面和工作环境以及基本操作方法。
二、实验设备:安装有WINDOWS操作系统及solidworks三维机械设计软件的PC机1台。
三、solidworks三维机械设计软件的用户界面,如图所示。
四、实验内容:1.Windows功能SolidWorks应用程序包括熟悉的Windows功能,例如拖动窗口和调整窗口大小,等等。
许多相同的图标,例如打印、打开和保存、剪切和粘贴等,也都是SolidWorks应用程序的一部分。
一些通用的Windows相关功能包括:打开文件。
从Windows资源管理器中将零件拖入空白的SolidWorks文件,从而打开零件。
打开和保存到web文件夹。
web文件夹是一种SolidWorks工具,该工具允许多用户通过因特网共享和处理SolidWorks零件、装配体或工程图文件及其他文件格式。
生成工程图。
将零件拖入空白的工程文件,以创建零件的一个或多个工程视图。
创建装配体。
将零部件拖入空白的装配体文件,以配合多种零部件并创建装配体。
装配体是保存在SolidWorks文件中相关零件的集合。
使用键盘快捷键。
对所有菜单项目是用键盘快捷键。
例如:Ctrl+O打开文件,Ctrl+s保存文件,Ctrl+z 撤销任务。
2.SolidWorks文件窗口SolidWorks文件窗口有两个窗格。
左边窗格包括:FeatureManager设计树。
列举零件、装配体或工程图的结构。
当从设计树种选择一个实体,可以编辑内部草图、编辑特征、压缩和解除压缩特征或零部件,等等。
PropertyManager.显示许多功能(例如草图、圆角特征、装配体配合等)的相关信息和用户界面功能。
ConfigurationManager.帮助创建、选择和查看文件中的零件和装配体的多个配置。
3.功能选择和反馈SolidWorks应用程序允许您使用不同方法执行任务。
实验曲线绘制方法在科学实验中,曲线绘制是至关重要的一个环节。
它帮助我们理解实验数据,并从中得出结论。
以下是一个基本的实验曲线绘制流程,主要包含以下六个方面:1. 数据收集在进行实验之前,需要明确实验目的和实验设计。
然后,根据实验设计采集数据。
数据可以是实验过程中直接测量的量,也可以是通过计算得出的量。
确保数据的准确性和可靠性是至关重要的。
2. 数据处理收集到数据后,需要进行预处理和分析。
这包括数据清洗、缺失值处理、异常值处理、数据转换等。
数据处理可以帮助我们提取有用的信息,为后续的曲线绘制做准备。
3. 绘制曲线根据处理后的数据,选择合适的图形类型进行绘图。
常见的图形类型包括折线图、散点图、柱状图等。
在选择图形类型时,需要考虑数据的特性和实验目的。
例如,如果数据具有相关性,可以选择折线图;如果数据分布不规律,可以选择散点图。
4. 曲线标注在绘制好曲线后,需要对曲线进行标注。
标注包括图形的标题、坐标轴标签、图例等。
这些标注可以帮助读者更好地理解图形。
此外,还可以添加文本框或注释,对图形中的特殊点或区域进行解释。
5. 误差分析误差分析是实验过程中必不可少的一个环节。
它可以帮助我们评估实验结果的可靠性和准确性。
在绘制曲线时,需要将误差考虑在内,并使用误差线或误差棒来表示误差范围。
这有助于展示数据的可信程度和实验的精度。
6. 结果分析在完成曲线绘制和误差分析后,需要对结果进行分析。
根据实验目的和预期结果,对实际曲线进行评估。
如果结果符合预期,那么可以得出结论并解释原因。
如果结果不符合预期,那么需要重新审视实验过程并重新采集数据。
此外,还可以使用统计方法来评估实验结果的可信程度和显著性水平。
实验报告贝塞尔曲线生成算法的设计与调试一、实验目的在掌握曲线、曲面数学理论的基础上,通过调试,绘制Bezier 曲线。
加深同学对数学理论的理解。
通过二条Bezier曲线的拼接设计,掌握自由曲线的拟合方法。
二、实验原理1、由三次Bezier曲线的公式:P(t)=∑P i B i,3(t) 出发,编写生成Bezier曲线的程序,要求如下:(1)用鼠标输入特征多边形的四点。
然后调用Bezier曲线生成算法绘出曲线。
(2)重复上步3—4遍,验证编写的算法的正确性。
2、将特征多边形改为五个控制点,修改程序后绘出四次曲线。
3、实现二条三次Bezier的拼接,并使连接点处保持一阶连续。
三、实验程序typedef cptype float[4][4];float cc (int n,int i) //计算n!/(i!(n-i)!){int j;float a;a=1;for(j=i+1;j<=n;j++) a*=j;for(j=2;j<=n-i;j++) a/=j;return a;}float b_lend(Int i,int n,float t2) //计算B i,n(t){float v;v=cc(n,i);for(j= 1;j<=i;j++) v*=t2;for(j=1;j<=n-i;j++) v*=(1-t2);return v;}void bezier(float x0,float y0,float z0,float t0,int n,cptype cp2)//给定t0,计算f(t0){int i;float b1,g;for(i=0;i<=n;i++){b1=b_lend(i,n,t0);x0=x0+cp2[i,1]*b1;y0=y0+cp2[i,2]*b1;z0=z0+cp2[i,3]*b1;}}void draw_curv(int k,cptype cp1)//将t分成k等份,循环迭代,绘出曲线。
小鼠缺氧实验实验报告1/13文档可自由编辑\篇二:缺氧缺氧动物模型复制及中枢神经系统功能抑制和低温对缺氧的影响【摘要】目的:本实验学习复制乏氧性缺氧和血液性缺氧的动物模型方法,观察缺氧过程中呼吸的反应及血液色泽和全身一般情况的变化,并了解温度和中枢神经系统机能状态对缺氧耐受的影响以及对照实验和控制实验条件重要性。
方法:通过复制缺氧动物模型,观察不同类型缺氧过程中呼吸、黏膜和血液色泽的变化。
通过测定耗氧量和小鼠的存活时间来观察中枢神经系统机能抑制和低温对缺氧的影响。
结果:中枢神经系统功能抑制和低温对动物耐受缺氧的影响与对照组相比,存活时间和总耗氧率有显著性差异;复制不同原因造成的不同缺氧类型小鼠都表现出了不同的呼吸频率和存活时间的变化。
结论:给小鼠注射氯丙嗪、冰浴降温可显著降低总耗氧率,延长其存活时间(p0.01)。
co 中毒、亚硝酸盐可显著缩短小鼠存活时间,降低呼吸频率。
美兰可以缓解亚硝酸盐对小鼠的作用,已定程度延长小鼠存活时间,延缓呼吸频率的下降。
【关键词】缺氧氯丙嗪总耗氧率co亚硝酸盐美兰存活时间当供应组织的氧不足,或组织利用氧障碍时,机体的机能和代谢可发生异常变化,这种病理过程称为缺氧。
根据缺氧的原因不同可将缺氧分为低张性缺氧、血液性缺氧、循环性缺氧和组织中毒性缺氧四种类型,不同类型的缺氧,机体的代偿适应性反应和症状表现有所不同。
1.材料和方法1.1实验动物:小白鼠(雌性)。
1.2药品:氯丙嗪(chlorpromazine)、钠石灰(sodalime),亚硝酸钠(sodiumnitrite)、亚甲基蓝(美蓝)(methyleneblue,mb)、0.9%nacl(physiologicalsalinesolution)、co(carbonmonoxide)。
1.3器材:100、500ml广口瓶和测耗氧装置。
1.4方法1.4.1中枢神经系统功能抑制和低温对缺氧的影响取2只性别相同体重相近的小鼠,准确称取体重,并随机分为生理盐水组和氯丙嗪组。
2014---2015高三一轮复习课堂复习学案细胞呼吸(2)细胞呼吸方式的探究实验【学习目标】:掌握细胞呼吸方式的探究实验。
【自主复习指导一】:认真阅读教材第91-92页内容,5分钟后独立完成下列检测1.实验原理(1)选择酵母菌为实验材料的原因酵母菌是一种单细胞真菌,在有氧和无氧的条件下都能生存,属于生物。
(2)产物的检测试剂现象(颜色变化)澄清的石灰水CO2酒精【自主复习指导二】:认真思考植物组织呼吸方式的探究材料。
欲确认某生物的呼吸类型,应设置两套呼吸装置,如图所示(以发芽种子为例):实验现象结论装置一液滴装置二液滴只进行产乳酸的无氧呼吸或种子已死亡只进行产酒精的无氧呼吸进行有氧呼吸和产酒精的无氧呼吸只进行有氧呼吸或进行有氧呼吸和产乳酸的无氧呼吸【特别提醒】为使实验结果精确除减少无关变量的干扰外,还应设置对照装置。
对照装置与装置二相比,不同点是用“煮熟的种子”代替“发芽种子”,其余均相同。
【当堂训练】1.下列有关“探究酵母菌的呼吸方式”实验的叙述,错误的是() A.实验中将葡萄糖溶液煮沸的目的是灭菌和去除溶液中的O2B .在探究有氧呼吸的实验过程中,泵入的空气应去除CO 2C .实验中需控制的无关变量有温度、pH 、培养液浓度等D .可通过观察澄清石灰水是否变混浊来判断酵母菌的呼吸方式2. 在下图3个密闭装置中,分别放入质量相等的三份种子:消毒且刚萌发的小麦种子、未消毒刚萌发的小麦种子及未消毒刚萌发的花生种子。
把三套装置放在隔热且适宜条件下培养,下列有关叙述中错误的是 ()A .当a 和b 玻璃管中的水珠开始移动时,分别记录其移动速率v a 和v b ,则v a <v bB .如果b 和c 中都消耗了等质量的有机物,记录温度计读数为T b 和T c ,则T c >T bC .如果b 和c 中都消耗了等质量的有机物,记录水珠移动距离L b 和L c ,则L b <L cD .如果a 和c 中都消耗了等质量的有机物,记录温度计读数为T a 和T c ,则T a >T c 3.某同学用如图所示实验装置测定果蝇幼虫的呼吸速率。
实验三 Bezier曲线生成
一、实验目的
1. 理解并会自己编程实现二维Bezier曲线的画图
二、实验内容和要求
1.选择自己熟悉的任何编程语言, 建议使用VB,VC或JAVA。
2.创建良好的用户界面,包括菜单,参数输入区域和图形显示区域。
3.实现二维2、3、4阶Bezier曲线的描画。
4.将生成算法以菜单或按钮形式集成到用户界面上。
5.坐标参数可以用鼠标或键盘输入。
三.实验报告
1.用户界面的设计思想和框图。
2.各种实现算法的算法思想。
3.算法验证例子。
4.上交源程序。
四.Bezier曲线生成程序设计的步骤如下:
1.创建工程名称为“Test”单文档应用程序框架
(1)启动VC,选择“文件”|“新建”菜单命令,并在弹出的新建对话框中单击“工程”标签。
(2)选择MFC AppWizard(exe),在“工程名称”编辑框中输入“Test”作为工程名称,单击“确定”按钮,出现Step 1对话框。
(3)选择“单个文档”选项,单击“下一个”按钮,出现Step 2对话框。
(4)接受默认选项,单击“下一个”按钮,在出现的Step 3~Step 5对话框中,接受默认选项,单击“下一个”按钮。
(5)在Step 6对话框中单击“完成”按钮,即完成“Test”应用程序的所有选项,随后出现工程信息对话框(记录以上步骤各选项选择情况),如图1-2所示,单击“确定”按钮,完成应用程序框架的创建。
图1-2 信息程序基本
2.编辑菜单资源
设计如图1-1所示的菜单项。
在工作区的ResourceView标签中,单击Menu项左边“+”,然后双击其子项IDR_MAINFRAME,并根据表1-1中的定义编辑菜单资源。
此时VC已自动建好程序框架,如图1-2所示。
表1-1菜单资源表
3.添加消息处理函数
利用ClassWizard(建立类向导)为应用程序添加与菜单项相关的消息处理函数,ClassName栏中选择CTestView,根据表1-2建立如下的消息映射函数,ClassWizard会自动完成有关的函数声明。
表1-2菜单项的消息处理函数
onRButtonDown()。
4.添加一组自定义公有函数和变量
为CTestView类添加一组自定义公有函数和变量:
void DrawCharPolygon();//绘制特征多边形函数
int Factorial(int m);//阶乘函数
double Cnk(const int &n,const int &i);//Bernstein第一项
void DrawBezier();//绘制Bezier函数
bool Flag;//标志
CPoint *pt;//顶点
int CtrlPoint;//控制多边形顶点
方法:右击类条目CTestView。
5.程序结构代码,在CTestView文件中相应位置添加如下代码
(1)在#include "stdafx.h"
#include "Test.h"
#include "TestDoc.h"
#include "TestView.h"下添加如下预处理语句:
#include "math.h"//数学头文件
#define N_MAX_POINT 10//控制多边形的最大顶点数
#define ROUND(a) int(a+0.5)//四舍五入
(2)在CTestView::CTestView()中添加语句:
Flag=false;
(3)在void CTestView::DrawCharPolygon()中添加语句:
CClientDC dc(this);
CPen MyPen,*pOldPen;
MyPen.CreatePen(PS_SOLID,3,RGB(0,0,0));//控制多边形
pOldPen=dc.SelectObject(&MyPen);
for(int i=0;i<CtrlPoint;i++)
{
if(i==0)
{
dc.MoveTo(pt[i]);
dc.Ellipse(pt[i].x-2,pt[i].y-2,pt[i].x+2,pt[i].y+2);
}
else
{
dc.LineTo(pt[i]);
dc.Ellipse(pt[i].x-2,pt[i].y-2,pt[i].x+2,pt[i].y+2);
}
}
dc.SelectObject(pOldPen);
MyPen.DeleteObject();
(4)在int CTestView::Factorial(int m)中添加语句:
int f=1;
for(int i=1;i<=m;i++)
f*=i;
return f;
(5)在double CTestView::Cnk(const int &n, const int &i)中添加语句:
return double(Factorial(n)/(Factorial(i)*Factorial(n-i)));
(6)在void CTestView::DrawBezier()中添加语句:
CClientDC dc(this);
double x,y;
int rate=800,n;
n=CtrlPoint-1;
for(double t=0;t<=1;t+=1.0/rate)
{
x=0;y=0;
for(int i=0;i<=n;i++)
{
x+=pt[i].x*Cnk(n,i)*pow(t,i)*pow(1-t,n-i);
y+=pt[i].y*Cnk(n,i)*pow(t,i)*pow(1-t,n-i);
}
dc.SetPixel(ROUND(x),ROUND(y),RGB(0,0,255));//曲线颜色
}
(7)在void CTestView::OnLButtonDown(UINT nFlags, CPoint point)中添加语句:if(Flag)
{
pt[CtrlPoint].x=point.x;
pt[CtrlPoint].y=point.y;
if(CtrlPoint<N_MAX_POINT)
CtrlPoint++;
else
Flag=false;
DrawCharPolygon();
}
(8)在void CTestView::OnRButtonDown(UINT nFlags, CPoint point)中添加语句:Flag=false;
DrawBezier();
(9) 在void CTestView::OnMENUBezier()中添加语句:
RedrawWindow();
pt=new CPoint[N_MAX_POINT];
Flag=true;CtrlPoint=0;。