C语言课程设计简单图形处理.doc
《C语言课程设计简单图形处理.doc》由会员分享,可在线阅读,更多相关《C语言课程设计简单图形处理.doc(17页珍藏版)》请在三一办公上搜索。
1、1.课程设计总体要求22.设计任务与分析22.1设计题目22.2主要内容22.3任务分析23.设计方案23.1模块23.2流程图33.3主要函数33.4负责的模块设计34.程序调试65.总结与心得126.参考文献131. 课程设计总体要求采用模块儿化程序设计; 鼓励可视化编程; 源程序中有足够的注释; 学生可自行增加新功能模块儿; 必须上机调试通过; 注重算法运用,优化存储效率与运算效率; 需提交源程序及相关文件;2. 设计任务与分析2.1设计题目 简单图形处理2.2主要内容 只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c0的三个系数a,b,c;
2、对于圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。2.3任务分析这个系统主要需要实现对求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线。我们可以先构建一个主函数,然后一次插入不同的功能函数。在实现功能函数的过程中又通过菜单函数进行各功能函数的调用。在运用图形处理函数的时候要用到图形文件。3. 设计方案3.1模块(1)输入两点,求出之间的距离。(2)输入圆心和半径输出一般的圆。(3)输入两直线表达式X,Y的系数,求出两直线的交点。(4)输入两点,输出通过该两点的直线。(5)退出。3.
3、2流程图进入选择菜单输入数字040退出系统开始1两点之间的距离退出系统4形成直线2两直线的交点退出系统3形成圆3.3主要函数1.pointjl() (求两点之间的距离)2.linejd();(求两直线的交点)3.yuan();(已知圆心和半径形成圆)4.line1();(已知两点形成直线)5.choice();(功能选择)3.4负责的模块设计我所负责的模块:(1) 输入两直线表达式X,Y的系数,求出两直线的交点。 void linejd()/*求两直线交点*/float a1,a2,b1,b2,c1,c2,x,y;/*请输入直线的系数*/printf(*n);printf(请输入直线1 a1x
4、+b1y+c10 的系数 a1,b1,c1 和直线2 a2x+b2y+c20 的系数 a2,b2,c1:n); printf(*n);scanf(%f,%f,%f,%f,%f,%f,&a1,&b1,&c1,&a2,&b2,&c2);if(a1*b2=b1*a2)if(b1*c2=c1*b2)printf(两直线重合,有无数个交点。n);elseprintf(两直线平行,无交点。n);elsex=(c2/b2-c1/b1)/(a1/b1-a2/b2); y=(c2/a2-c1/a1)/(b1/a1-b2/a2); printf(两直线交点是 x=%f,y=%f.n,x,y);getchar();
5、(2) 输入两点,输出通过该两点的直线。void line1() /*输出输入已知数据的直线*/int x1,y1,x2,y2;int gdriver, gmode, i;printf(*n);printf(请输入两点 ,x1,y1,x2,y2:n);printf(*n);scanf(%d,%d,%d,%d,&x1,&y1,&x2,&y2);gdriver=DETECT;initgraph(&gdriver, &gmode, c:caicbgi);setbkcolor(BLUE);/*设定背景颜色为蓝色*/cleardevice();setcolor(GREEN);setlinestyle(0
6、, 0, 3);setcolor(2);setcolor(WHITE);setlinestyle(4, 0xaaaa, 1);line(x1+320, y1+240, x2+320, y2+240);getch();closegraph();(3) 选择函数的设计int choice ()/*选择函数的定义*/char c;int k=1;menu();c=getchar();while(k)switch(c) case 1:pointjl() ;k=0;break; case 2:linejd() ;k=0;break; /*求已知两直线之间的交点函数*/ case 3:yuan();k=0
7、;break; case 4:line1();k=0;break; case 0:k=0;break; printf(*n);printf(欢迎使用该系统n);printf(*n);return 1;4. 程序调试下面是进入时出现的一个示例图片。通过查找资料并以此图来调试我们知道画面中心的坐标是(320,240),我们就在程序中每个输入的横坐标加上320,纵坐标加上240,以防输入坐标偏离中心太远导致显示不理想。同时该圆的半径是98,这样我们就对数字代表的长度有了一个大概的了解。下面是对输出直线功能的调试。输入数据:0,0,200,200;显示出的图形如下图所示。我们可以看出,X轴正方向向左,
8、Y轴正方向向下。为了进一步验证Y轴正方向向下,我做了第二次输入。如下图,此次输入的数据为:0,0,0,-200;由此可以断定,Y轴的正方向向下。接下来是对求两直线交点的调试。由下图可以看出当输入数据为1,2,3,3,2,1时得出交点为(1,-2)。对于直线x+2y+3=0与直线3x+2y+1=0,我们直接将x=1,y=-2带入,发现均成立,于是所求交点是正确的,程序没有问题。但是当我们输入两条重合或者平行直线时,程序给出了以下结果:可以发现给出的结果为1.#INF00的字样,这表示超出机器浮点类型所表示的范围。于是我认为程序还需改进。改进后调试结果如下:改进成功!下面是对选择功能的调试。输入1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计 简单图形处理 语言 课程设计 简单 图形 处理

链接地址:https://www.31ppt.com/p-2384704.html