



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXXXXXXX大学(计算机图形学)实验报告实验名称 数值微分(DDA)法、中点画线法、Bresenham算法 实验时间 年 月 日专 业 姓 名 学 号 预 习 操 作 座 位 号 教师签名 总 评 一、实验目的:1.了解数值微分(DDA)法、中点画线法、Bresenham算法的基本思想;2.掌握数值微分(DDA)法、中点画线法、Bresenham算法的基本步骤;二、实验原理:1.数值微分(DDA)法已知过端点 的直线段L:y=kx+b,直线斜率为 从x的左端点 开始,向x右端点步进。步长=1(个象素),计算相应的y坐标y=kx+b;取象素点(x, round(y)作为当前点的坐标。2.中点画线法当前象素点为(xp, yp) 。下一个象素点为P1 或P2 。设M=(xp+1, yp+0.5),为p1与p2之中点,Q为理想直线与x=xp+1垂线的交点。将Q与M的y坐标进行比较。当M在Q的下方,则P2 应为下一个象素点;当M在Q的上方,应取P1为下一点。构造判别式:d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c,其中a=y0-y1, b=x1-x0, c=x0y1-x1y0。当d0,M在L(Q点)上方,取右方P1为下一个象素;当d=0,选P1或P2均可,约定取P1为下一个象素;但这样做,每一个象素的计算量是4个加法,两个乘法。d是xp, yp的线性函数,因此可采用增量计算,提高运算效率。若当前象素处于d0情况,则取正右方象素P1 (xp+1, yp), 要判下一个象素位置,应计算d1=F(xp+2, yp+0.5)=a(xp+2)+b(yp+0.5)=d+a; 增量为a。若d0时,则取右上方象素P2 (xp+1, yp+1)。要判断再下一象素,则要计算d2= F(xp+2, yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b ;增量为ab。3.Bresenham算法过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。设直线方程为: ,其中k=dy/dx。 因为直线的起始点在象素中心,所以误差项d的初值d00。X下标每增加1,d的值相应递增直线的斜率值k,即ddk。一旦d1,就把它减去1,这样保证d在0、1之间。当d0.5时,最接近于当前象素的右上方象素( ),而当d0.5时,更接近于右方象素( )。为方便计算,令ed-0.5,e的初值为-0.5,增量为k。当e0时,取当前象素(xi,yi)的右上方象素( );而当e0时,更接近于右方象素( )。最终,Bresenham算法也是每个象素,需一个整数算法,其优点是可以用于其他二次曲线。三、实验内容:1.DDA画线法:void DDALine(CDC *pdc,int x0,int x1,int y0,int y1,int color) float k=1.0*(y1-y0)/(x1-x0); int x=0,int y=y0; for(x=0;xSetPixel(x,y,color); y=y+k; void CMy3View:On2() / TODO: Add your command handler code hereint x0,y0,x1,y1,color;x0=111;y0=111;x1=138;y1=138;color=RGB(0,0,255);CClientDC dc(this);DDALine(&dc,x0,x1,y0,y1,color);2.Midpoint中点画线法:void Midpoint_Line(CDC *pdc,int x0,int y0,int x1,int y1,int color)int a,b,d,d1,d2,x,y;a=y0-y1,b=x1-x0,d=2*a+b;d1=2*a,d2=2*(a+b);x=x0,y=y0;pdc-SetPixel(x,y,color);while(xx1)if(dSetPixel(x,y,color);void CMy2View:On1() / TODO: Add your command handler code hereint x0,x1,y0,y1,color;x0=111;y0=111;x1=138;y1=138;color=RGB(255,0,0);CClientDC dc(this);Midpoint_Line(&dc,x0,y0,x1,y1,color);3.Bresenham画线法:void Bresenham_Line(CDC *pdc,int x0,int y0,int x1,int y1,int color)int x,y,dx,dy,i;float k,e;dx=x1-x0,dy=y1-y0,k=dy/dx;e=-0.5,x=x0,y=y0;for(i=0;iSetPixel(x,y,color);x=x+1;e=e+k;if(e=0)y+,e=e-1;void CMy1View:On1() / TODO: Add your command handler code hereint x0,x1,y0,y1,color;x0=111;y0=111;x1=138;y1=138;color=RGB(0,255,0);CClientDC dc(this);Bresenham_Line(&dc,x0,y0,x1,y1,color);四、实验总结:在程序代码段的第一句话中一定要注明“CDC *pdc”,否则会出现错误,相应的,在for循环或while循环语句中的“(x,y,color
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025部编人教版小学三年级语文上册全册教案
- 重庆计算机类知识培训课件
- 重庆知识产权优势企业培训课件
- 新解读《GB-T 30638-2014杯装果冻包装机》
- 重庆春招直通车配套课件
- 重庆市驾校培训理论知识课件
- 图形的轴对称等腰三角形(2大考点5种解题方法)原卷版
- 图形的运动(12个考点)-2023学年七年级数学上学期期末考点复习(沪教版)
- 新解读《GB 30756-2014镍冶炼安全生产规范》
- 统计与概率:条件概率、全概率公式与贝叶斯公式、全概率公式与数列递推问题(原卷版)-2026届高三数学一轮复习
- 二零二五版森林抚育项目苗木种植及管护合同2篇
- 药物作用机理创新-洞察分析
- 毕业设计(论文)-口腔助手微信小程序的设计与实现
- ICH《M10:生物分析方法验证及样品分析》
- 电力金具选型手册输电线路金具选型
- 初中开学第一课安全课件
- 2025年企业知识产权管理高效执行方案全面贯标体系实操模板集锦
- 鼻咽通气管日常护理
- 有害物质过程管理系统HSPM培训教材
- DB11T 1649-2019 建设工程规划核验测量成果检查验收技术规程
- 电磁场与电磁波(第五版)完整全套教学课件
评论
0/150
提交评论