计算机图形学实训报告.doc

上传人:文库蛋蛋多 文档编号:2391817 上传时间:2023-02-17 格式:DOC 页数:7 大小:29KB
返回 下载 相关 举报
计算机图形学实训报告.doc_第1页
第1页 / 共7页
计算机图形学实训报告.doc_第2页
第2页 / 共7页
计算机图形学实训报告.doc_第3页
第3页 / 共7页
计算机图形学实训报告.doc_第4页
第4页 / 共7页
计算机图形学实训报告.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算机图形学实训报告.doc》由会员分享,可在线阅读,更多相关《计算机图形学实训报告.doc(7页珍藏版)》请在三一办公上搜索。

1、计算机图形学实训报告学号: 20091620319 姓名: 班级: 计算机科学与技术专业2班 一、实验目的和要求 1、任意指定一个起始点坐标和终止点坐标画出该直线2、要求用数值微分法(DAA)3、通过实验了解数值微分法的算法形式以前如何用C语言来表示该算法二、算法原理介绍 数值微分法(DAA)对任何沿直线给定的x的增量x,可以从下式中计算出y的增量y:y =Kx同样,可以得出对应于指定的y的x增量x:x=y/K对于具有斜率绝对值|k1的线段,可以让x从起点到终点变化,每步递增(或递减)1,即令x1,用式(3-2)计算对应的y增量,y=k。若前量资助的直线上像素点坐标为(xi , yi ),这一

2、次的直线上像素点坐标为(xi+1,yi+1),则xi+1= xi 1, yi+1= yi k。随后用putpixel(xi+1 ,(int)( yi+1 +0.5),color)函数输出该像素的颜色什即可。这里用int来取整是因为像素的坐标什都是整数。对于具有斜率绝对值|k1的线段,可以让y从起点到终点变化,每步递增(或递减)1,x1/k用式(3-3)计算对应的x增量,。若前一次的直线上像素点坐标为(xi , yi ),这一次的直线上像素点坐标为(xi+1,yi+1),则xi+1= xi 1/k,yi+1= yi 1。随后用putpixel(int)( yi+1 +0.5),yi+1,colo

3、r)函数输出该像素的颜色值即可。如图所示。(xi,(int)(yi+0.5)(xi , yi )(xi +1,yi)(xi+1,(int)(yi+0.5)数值微分法示意图数值微分法的本质,是用数值方法解微分方程,通过同时对和各增加一个小增量,计算下一步的值。以下是用数值微分算法生成直线的C语言描述(0k1)。Void DDALine(int x1,int y1,int x2,int y2,int color) int x; Float k, y=y1; K=1.0(y2-y1)/(x2-x1); For(x=x1;xx2;x+) putpixel (x, (int)(y+0.5),color)

4、; Y=y+k;三、程序文档说明程序主要是采用C语言来实现的,运行环境是用WIN-TC运行。程序采用的是DDA算法来实现画直线,#include /*表示头文件,C语言中必须包含头文件*/;#include /*图形处理函数都在此函数中,所以画图必须*/;#include /*数学函数*/;DDA算法是由函数void DDALine (int x1,int y1,int x2,int y2,int color),在MAIN函数中来调用函数就可以了;getch();/*获取图形*/;closegraph();/*关闭图形系统,退出图形状态*/;initgraph(&gd,&gm,C:TCBGI)

5、 DETECT和gmode图形模式 /*自动检测硬件*/。程序实现的图形所示:四、程序源代码 /*用DDA算法画直线的应用*/#include #include 四、程序源代码#include #include #include #include void DDALine (int x1,int y1,int x2,int y2,int color) int x; float k,y=y1; k=1.0*(y2-y1)/(x2-x1); for (x=x1;x=x2;x+) putpixel(x,(int)(y+0.5),color); y=y+k; void main() int gd =

6、DETECT,gm; initgraph(&gd,&gm,C:TCBGI); setbkcolor(0);printf(This is line drawed DDA add liu mei xia is homework); DDALine(100,100,450,100,1); DDALine(100,150,450,150,2); DDALine(100,200,450,200,3); DDALine(100,250,450,250,4); DDALine(100,300,450,300,5); DDALine(100,350,450,350,6); DDALine(100,50,450,150,1); DDALine(100,100,450,200,2); DDALine(100,150,450,250,3); DDALine(100,200,450,300,4); DDALine(100,250,450,350,5); DDALine(100,300,450,400,6); getch(); closegraph();五、参考文献 1、计算机图形学实用技术(第二版)陈元琰 张睿哲 吴东 编著 清华大学出版社2、C语言程序设计(第2版)廖 雷 主编 高等教育出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号