ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:51.50KB ,
资源ID:10009545      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10009545.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(直线扫描转换.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

直线扫描转换.doc

1、1 实验目的1)掌握直线段的中点 Bresenham 扫描转换算法;2)掌握直线绘制类的设计实现;3)掌握菱形图案的生成方法。2 实验要求1)直线绘制通过设计类似 MFC 的直线绘制类来实现,有类似的MoveTo()函数设置直线段起点,LineTo()函数设置直线段终点并完成绘制,还要有直线段颜色设置函数;2)直线的绘制采用中点 Bresenham 扫描转换算法实现,根据直线斜率 k 的范围区分五种不同的情况处理;3)调用设计实现的直线绘制类,在视图区绘制菱形线框,并要求各边颜色不同。3 详细设计3.1 核心算法及类型设计使用中点 Bresenham 扫描算法完成绘制:CP2:CP2()x=0

2、.0;y=0.0;CP2:CP2()CP2:CP2(double x,double y)this-x=x;this-y=y;CLine:CLine() /构造函数CLine:CLine() /析构函数void CLine:SetLineColor(COLORREF color)clr=color;void CLine:MoveTo(CP2 p0)P0=p0;void CLine:MoveTo(double x,double y)P0.x=x;P0.y=y;void CLine:LineTo(double x,double y,CDC*pDC)CP2 p;p.x=x;p.y=y;LineTo(p

3、,pDC);void CLine:LineTo(CP2 p1,CDC*pDC)P1=p1;CP2 p, t;if(fabs(P0.x-P1.x)P1.y)t=P0; P0=P1; P1=t;for(p=P0;p.ySetPixelV (Round(p.x),Round(p.y),clr);elsedouble k,d;k=(P1.y-P0.y)/(P1.x-P0.x);if(k1.0)if(P0.yP1.y)t=P0; P0=P1; P1=t;d=1-0.5*k;for(p=P0;p.ySetPixelV(Round(p.x),Round(p.y),clr);if(d=0)p.x+;d+=1-

4、k;elsed+=1;if(0.0P1.x)t=P0; P0=P1; P1=t;d=0.5-k;for(p=P0; p.xSetPixelV(Round(p.x),Round(p.y),clr);if(d=-1.0 P0=P1;P1=t;d=-0.5-k;for(p=P0; p.xSetPixelV(Round(p.x),Round(p.y),clr);if(d0)p.y-;d-=1+k;elsed-=k;if(kP1.y;p.y-)pDC-SetPixelV(Round(p.x),Round(p.y),clr);if(dSetMapMode(MM_ANISOTROPIC);pDC-SetWi

5、ndowExt(rect.Width(),rect.Height();pDC-SetViewportExt(rect.Width(),-rect.Height();pDC-SetViewportOrg(rect.Width()/2,rect.Height()/2);rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);CLine*line= new CLine;/绘制坐标轴line-SetLineColor(RGB(0,0,0);/黑色line-MoveTo(CP2(-rect.Width()/2,0);/x轴line-LineTo(CP2(rec

6、t.Width()/2,0),pDC);line-MoveTo(CP2(0,-rect.Height()/2);/y轴line-LineTo(CP2(0,rect.Height()/2),pDC);/绘制直线int a=200;CP2 A (0,a);CP2 B (a,0);CP2 C (0,-a);CP2 D (-a,0);/绘制AB边line-SetLineColor(RGB(255,0,0);/红色line-MoveTo(A);line-LineTo(B,pDC);/绘制BC边line-SetLineColor(RGB(0,255,0);/绿色line-LineTo(C,pDC);/绘制

7、CD边line-SetLineColor(RGB(0,0,255);/蓝色line-LineTo(D,pDC);/绘制DA边line-SetLineColor(RGB(255,255,0);/黄色line-LineTo(A,pDC);delete line;3.2 程序设计实现及流程图使用 Bresenham 扫描转换算法进行直线绘制,需要根据斜率 k 值分别选择不同的误差项和初始值,除垂线外,可分为 k1 四种情况。垂线可以直接画出,-11 时,y 轴为主移动方向。在写直线绘制类时,首先定义二维坐标类“CP2” ,用于存储和传递二维坐标参数。直线类中主要包括存放起点、终点和绘制颜色的成员变量

8、,以及SetLineColor()函数设置线段颜色,输入参数为0,1之间的颜色值;MoveTo()函数设置直线段的起点,输入参数是二维坐标;LineTo()函数设置直线段终点并完成绘制,输入参数是二维坐标和绘制用 CD。成员函数SetLineColor()的实现只需传入颜色记录到成员变量 clr;成员函数MoveTo()实现,只需将传入参数记录到成员变量 P1。最后在 CLineDraw()函数中四次调用 Cline 类对象,分别绘制四条边。每条边只需设置两个定点及颜色即可。4 典型测试结果5 实验问题总结直线扫描转换主要是设置直线起点坐标,终点坐标,直线斜率及直线颜色。直线段起点坐标用 MoveTo()函数来实现,输入的参数是二维坐标;LineTo()函数设置直线段终点坐标并完成绘制,输入的参数是二维坐标及绘制用的 CD;SetLineColor()函数设置直线段的颜色。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报