计算机图形学实验归纳总结报告书.doc

计算机图形学实验归纳总结报告书.doc

ID:51907829

大小:179.50 KB

页数:17页

时间:2020-03-18

计算机图形学实验归纳总结报告书.doc_第1页
计算机图形学实验归纳总结报告书.doc_第2页
计算机图形学实验归纳总结报告书.doc_第3页
计算机图形学实验归纳总结报告书.doc_第4页
计算机图形学实验归纳总结报告书.doc_第5页
资源描述:

《计算机图形学实验归纳总结报告书.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验报告书学生学号:写自己的实验课程名称:计算机图形学开课学院:资源与环境工程学院(将“计算机科学与技术学院”用白纸条覆盖,并在白纸条上写“资源与环境工程学院”)指导老师姓名:尹章才学生姓名:学生专业班级:时间:2011-2012学年第1学期第1实验实验课程名称:计算机图形学实验项目名称:直线的生成算法专业班级:实验日期:2011-10-14第一部门:实验分析与设计一、实验内容描述根据图形的几何描述,确定二维像素矩阵上,哪些像素是正好在图形上或最靠近图形。使所选择的像素尽量靠近理想图形。直线光栅化:已知一条直线

2、的两个端点坐标,确定二维像素距阵上位于或最靠近这条直线,即是理论直线的所有像素的坐标值在光栅显示器的荧光屏上生成一个对象,实质上是往帧缓存寄存器的相应单元中填入数据。画一条从(x1,y1)到(x2,y2)的直线,实质上是一个发现最佳逼近直线的象素序列,并填入色彩数据的过程。这个过程也称为直线光栅化。二、实验基本原理与设计实现直线光栅化的方法之一是解直线的微分方程式,即dy/dx=常数或daty/datx=(y2-y1)/(x2-x1)其有限差分近似解yi+1=yi+datyyi+1=yi+datx*(y2-y1

3、)/(x2-x1)式中x1,y1和x2,y2是所求直线的端点坐标,yi是直线上某一步的初值。从直线的起点开始,确定最佳逼近于直线的y坐标。假定端点坐标均为整数,让x从起点到终点变化,每步增加1,计算对应的y坐标,并取相素(x,round(y))。用这种方法,直观可行,但效率低下。这是因为每步运算都需要一个浮点乘法与一个舍入运算。当datx=1时,有yi+1=yi+k,即当x每递增1时,y递增k(直线的斜率)Bresenham算法是计算机图形学领域中使用最广泛的直线扫描转换算法,通过在每列象素中确定与理想直线最近

4、的象素来进行直线的扫描转换的。算法原理是,过各行、各列象素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列象素中与此交点最近的象素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求象素。假设y列的象素已确定,其行下标为x,那么下一个象素的列坐标必为y+1,而行坐标要么不变,要么递增1。是否增1取决于误差项d的值。因为直线的起点在象素中心,所以误差项d的初始值为0。Y下标每增加1,d的值相应递增直线的斜率值,即d=d+k

5、(k=daty/datx为直线的斜率)。一旦d>=1时,就把它减去,这样保证d始终在0,1之间。当d>0.5时,直线与y+1列垂直网格线交点最接近于当前象素(x,y)的右上方象素(x+1,y+1);而当d<0.5时,更接近于象素(x,y+1);当d=0.5时,与上述二象素一样接近,约定取(x+1,y+1)。令e=d-0.5。则当e>=0时,下一象素的x下标增加1,而当e<0时,下一象素的x下标不增。E的初始值为-0.5。一、主要仪器设备及耗材计算机。第二部分:实验调试与结果分析一、调试过程 int x0, y0

6、, x1, y1;//DDA算法    x0=60;  y0=60;x1=500; y1=68;int dx,dy,epsl,k;float x,y,xIncre,yIncre;dx=x1-x0; dy=y1-y0;x=x0;  y=y0;if(abs(dx)>abs(dy))epsl=abs(dx);else epsl=abs(dy);xIncre=(float)dx/(float)epsl;yIncre=(float)dy/(float)epsl;for(k=0;k<=epsl;k++){pDC->SetP

7、ixel((int)(x+0.5),(int)(y+0.5),100);x+=xIncre;y+=yIncre;}注意上述分析和算法仅适用于

8、k

9、《=1的情形。在这种情况下,x每增加1,y最多增加1,故在迭代过程的每一步,只要确定一个象素。而当直线斜率K的绝对超过1时,必须把x,y的地位交换,y每增加1,x相应增加1/k。////////////////////////////////////////////////////////////////////////////////////////////////

10、///////////////////////    int x0,y0,x1,y1;//Bresenham算法x0=60;y0=60;x1=500;y1=65;int x,y,dx,dy,e;dx=x1-x0;dy=y1-y0;e=-dx; x=x0; y=y0;while(x<=x1){pDC->SetPixel(x,y,222);x++;e=e+2*dy;if(e>0){y++;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。