中点画椭圆课程设计报告_第1页
中点画椭圆课程设计报告_第2页
中点画椭圆课程设计报告_第3页
中点画椭圆课程设计报告_第4页
中点画椭圆课程设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机图形课程设计河南理工大学计算机科学技术学院课程设计报告200 8-200 9年级第二学期课程名称计算机图形设计标题椭圆中点Bresenham算法学生名字张宁宁学号4专业课计算机06-4课导师徐文鹏2009年6月18日列表一、设计标题.2二、设计要求.2三、设计方案.2四、流程图.6五、程序清单.7六、分析方案执行结果.15七、系统不足和改善措施.15八、设计摘要.16一、设计主题:椭圆重点Bresenham算法二、设计要求:1、需要两种输入方法。(1)输入椭圆的长轴长度以生成椭圆。(2)相对于输入点生成椭圆,并输出椭圆的长轴长度。2、椭圆的颜色为红色。三、设计:1,椭圆对称特性:椭圆分别关于x、y轴对称。因此,在计算椭圆生成时,只需计算四分之一个椭圆。这意味着必须计算目标点(x,y)的坐标,并且必须具有(x,-y)、(-x,y)(-x,-y,-y,-x,-y)。在此方案中,从计算x=0到y=0之间1/4的第一个象限生成椭圆。转换方法是假定椭圆中心位于坐标原点,进行计算,然后将其转换到实际中心位置。2,对于第一个象限椭圆,倾斜k=-(b*b)*x/(a*a)*y,对于xy,倾斜k的绝对值小于1,计算时采用x方向的单位量;在Xy中,如果倾斜k的绝对值大于1,则计算将获取y方向上的单位量。附注:xy的区域是第二个区域。3,输入方法1:输入椭圆的长轴长度以生成椭圆。已知:长短半轴分别为a,b,计算的初始位置为(0,b)。椭圆的方程式如下:F (x,y)=b * b * x * a * a * y-a * a * b * b=0(1)对于第一个区域,p点坐标为(,),P1(1,)是p点右侧的点,P2(1,-1)是p点右侧下方的点,M(1,-0.5)是P1,-18顺序d=f (m)=f (1,-0.5)=b* b a* a*(b-0.5)*(B- 0.5)-a* a* b * b=0,=b时,d的初始值为:d=b*b-a*a*b 1/4a*a如果D=0,则P2必须用作下一个像素点,右侧点的坐标为(2,-1),右下角点的坐标为(2,-2),中点坐标为(2,-1.5)。此时,d=f (m)=f (2,-1.5)=d b * b * (2 * 3)-2 a * a * (-1)对于D0,使用P1作为下一个像素点。右侧点的坐标为(2,),右下角点的坐标为(2,-1),中点坐标为(2,-0.5)。此时,d=F(M)=F(2,-0.5)=d 2* b*b* 3* b*b * b(2)对于第二个区域,p点坐标为(,),P1(,-1)是p点正下方的点,P2(1,-1)是p点右下方的点,M(0.5,-1)是P1,-D=f (m)=f (0.5,-1)=b* b *(0.5)*(0.5)a* a*(-1)*(-1)-将p坐标的初始值设置为=、=、=d的初始值为:D=f (0.5,-1)=b* b *(0.5)*(0.5)a* a*(-1)*(-1)-a* a* bD=0时,使用P1作为下一个像素点。正下方点的坐标为(,-2),右下方点的坐标为(1,-2),中点坐标为(0.5,-2)。此时,d=F(M)=F(0.5,-2)=d a*a*(3-2 *)在D0处,P2必须用作下一个像素点,下一个点的坐标为(1,-2),右下一个点的坐标为(2,-2),中点坐标为(1.5,-2)。此时,d=f (m)=f (1.5,-2)=d 2 * b * b * (1) a * a * (3-2 *)(3)根据对称原理计算其他三象限的坐标。输入方法2:基于输入点生成椭圆,并输出椭圆的长轴长度。已知点:两点座标(,),(,)设定椭圆圆的方程式如下:在两点坐标(,)、(,)层代椭圆方程中,a,b的值为:=(*-*)/(-)=(*-*)/(-)然后生成所需的椭圆。四、流程图输入方法1的流程图如图3所示。输入方法2的流程图如图4所示。五、进程列表/diansuanfa . CPP 3360 defines the entry point for the console application。# include“stdafx . h”#include#include#include#includeint a;int b;/*将长短和半轴分别定义为a、b*/Void GetValue()int input=0;Int x1、x2、y1、y2;Printf(输入生成中点算法的方法。 n );Printf(1 .输入椭圆长度半径 n );Printf(2 .输入椭圆坐标 n );/*两种输入方法输出*/scanf(“% d”,input);If(input=1)Printf(请输入 a的值: n );scanf(“% d”,a);Printf(请输入 b的值: n );scanf(“% d”,b);If(input=2)Printf(输入第一个坐标的值: n );scanf(“%d,% d”,x1,y1);Printf(输入第二个坐标的值: n );scanf(“%d,% d”,x2,y2);a=sqrt(y1 * y1 * x2 * x2-x1 * y2 * y2)/(y1 * y1-y2 * y2);b=sqrt(x1 * x1 * y2 * y2-x2 * x2 * y1 * y1)/(x1 * x1-x2 * x2);/*根据输入的两个坐标计算椭圆长半轴a,b的值*/Printf(a=%d ,a);Printf(b=%d ,b);/*输出长短半轴a,b值*/Void PointsEllipse(int x,int y)GlColor3f (1.0f,0.0f,0.0f);/*结果椭圆的颜色为红色*/GL pointsize(1);GlBegin(GL _ POINTS);GlVertex2i(x 200,y 200);GlVertex2i(-x 200,y 200);GlVertex2i(x 200,-y 200);GlVertex2i(-x 200,-y 200);/*根据对称原理获取椭圆上每个点的坐标*/格伦();Void myDisplay()GL clear(GL _ COLOR _ BUFFER _ BIT);GlColor3f (1.0f,0.0f,0.0f);GlBegin(GL _ POINTS);/int a=200,b=100Float x、y、d1、D2;x=0;y=b;/*第一个区域的起始坐标*/D1=b* b a* a*(-b 0.25);PointsEllipse(x,y);/*计算第一个面域椭圆上个别点的座标*/While(b*b*(x 1)0)If (d20)D2=2 * b * b *(x 1)-a* a*(2 * y-3);x;y-;ElseD2=a* a*(-2 * y 3);y-;PointsEllipse(x,y);格伦();GL flush();/*确保前面的OpenGL命令立即运行*/Void Init()get value();GlClearColor(0.0,0.0,0.0,0.0);/*将清除颜色定义为黑色设计*/GlShadeModel(GL _ FLAT);Void Reshape(int w,int h)Gl viewport (0,0,(glsi zei) w,(glsi zei)h);GlMatrixMode(GL _ PROJECTION);GlLoadIdentity();Gluortho 2d (0.0,(GL double) w,0.0,(GL double)h);Int main(int argc,char *argv)Glaut init (argc、argv);glautitdisplaymode(glut _ RGB | glaut _ single);GlutInitWindowPosition(100,100);/*定义屏幕上的窗口位置*/Glautitwindowsize (600,600);/*定义窗口大小*/glaut create window( zhangdiansuanfa!);/*根据前面设置的信息创建窗口*/init();GlutDisplayFunc(my display);GlutReshapeFunc(Reshape);glut main loop();return 0;六、方案运行结果分析运行程序时,窗口将显示以下内容:输入生成集中算法的方法:1、输入椭圆的长度半径。2、输入椭圆坐标。如果输入1,单击“回车”为a输入值,输入a的值,然后单击“回车”,则输入b的值,输入b的值,然后单击“回车”,将显示以a,b为长半轴的红色椭圆。输入2并单击“回车”后,将显示围绕原点通过两个坐标的红色椭圆,方法是输入第一个坐标的值,输入第一个坐标的值,然后单击“回车”,输入第二个坐标的值,然后输入第二个坐标的值。Vii .系统不足和改进计划此算法生成的椭圆以原点为中心,如果可以将椭圆的中心放置在所需位置,则上述算法将通过转换假定中心点位于坐标原点,计算出中心点,然后将其转换回实际中心位置。假设椭圆的中心坐标为(x-center,y-center)2=其中是转换后的均匀坐标,是转换前的均匀坐标,是转换向量。八、设计摘要回顾这次电脑图形讲座设计,现在还感慨万千。在这次讲座设计之前,我以为图形学这门课我学得很好,但我发现仅凭设计还没有理解的东西太多了。设计完成后,觉得自己学了很多东西,不仅学到了很多东西,还从书上学到了很多东西。通过这次教学设计,我认识到理论与实际相结合的重要性,只有理论知识没有实践,一切都是虚幻的,等于在纸上装瓶。只有理论知识是不够的,把学过的理论知识和实践联系起来,从理论中得出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论