- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.1如何在计算机上绘图 3.1.1 在计算机上绘图的一般方法 3.1.2 用OpenGL绘图 建立新项目。在VC中,选择File|New,在弹出的对话中选择Projects面板,再在列表框中选择MFCAppWizard(exe),建立一个MFC单文档视图结构的应用程序。 3.1.2 用OpenGL绘图 选择View|Class Wizard 命令,在Message Map 面板中为视图类添加以下消息函数 OnDestroy(); OnSize(); OnCreate(); 在视图类中添加的四个新函数为CExam1View::Draw(); Void CExam1View::gl_Init(); Void CExam1View::gl_Transform(); Void CExam1View::gl_point(GLint x,Glint y) 程序代码 3.1.2 用OpenGL绘图 在 CExam1View的成员函数OnDraw()中加入对Draw()的调用。 三 基本光栅图形生成算法 3.2直线生成算法 3.2.1 生成直线的DDA算法 设直线的起点坐标为(xs,ys),终点坐标为(xe, ye),令Δx= xe- xs, Δy= ye- ys,则直线参数方程为 (3.1) 目标是能快速地求出能很好地表示直线的象素 3.2.1生成直线的DDA算法 提高速度的方法:乘法用加法实现,用等步长计算直线上的点 ,设(xi,yi)是第i步得到的直线上的点,则直线上第i+1个点是(xi+1,yi+1),其中 当Δx Δy0,即直线斜率小于1,应使x方向每次增加1,y方向最多增加1,此时区Δt=1/Δx;同理,当ΔyΔx0,直线斜率大于1,取Δt=1/Δy,所以 直线的DDA算法程序 void dda(int x1,int y1,int x2,int y2) //直线DDA { int k,i; float x, y, dx, dy; k = abs(x2-x1); if (abs(y2-y1)k) k = abs(y2-y1); dx = float(x2-x1)/k; dy = float(y2-y1)/k; x=float(x1+0.5);//四舍五入 y=float(y1+0.5); for (i=0;ik;i++){ gl_Point(int(x), int(y)); x = x+dx; y = y+dy; } }// end DDA 3.2.2 正负法 基本原理:假设直线斜小于1(0=k=1)。设P=(x,y)是直线上的一点(用Δ表示),点P正右方或右上方的点分别为(xi+1,yi)和(xi+1,yi+1),设M表示PB和PT的中点,设Q是直线与垂直线x=xi+1的交点,若M在Q的下方,则 PT 离直线近,应取为下一个像素;否则应取PB 。 正负法的具体实现 设直线的起点和终点分别为(x0,y0)和(x1,y1),直线方程为: 其中 分别对应于点 在直线上、上方和下方 正负法算法的具体实现 d0,Q在M上方,取P2为下一像素 正负法算法 由于(x0,y0)在直线上,故F(x0,y0)=0。因此,设第一个像素取(x0,y0),则 3.2.3 Bresnham算法 基本原理:令m=△y/△x, 考虑0≤m≤1 x方向增加1, y方向增加m yi+1=yi+m(xi+1–xi)=yi+m 由起点(xs,ys),可求得直线上的点(xi,yi), i=1,2,3,…, 其中 x1= xs, y1= ys 用坐标为(xi,round(yi))的象素来表示直线上的点,其中round(yi)表示最靠近y的整数。 Bresenham 算法 令yir=round(yi), 用坐标为(xi,yi,r)的象素来表示直线上的点,第i+1个点只能在C和D中选取。 构造误差项: 综上,可得ε(xi+2)的递推公式 ε(xi+2)= yi+2–yi+1, r–0.5 = yi+1+m–yi+1, r–0.5 Bresenham 算法源代码 m=(double)dy/(double)dx; e = m–0.5; for(i=0;idx;i++) { gl_Point(x,y); if(e=0){ y=y+1; e=e–1; } x=x+1;e=e+m; } 其中dy=y
您可能关注的文档
- 第9章 Dreamweaver8应用模板制作网页.ppt
- 常用管道展示图图解幻灯片.doc
- 51单片机串口工作方式0及1.ppt
- 第5章 Windows 消息机制.doc
- 第六章 word加目录,文章中间设置为第一页.doc
- 第四讲导热问题(一维导热问题).pdf
- 第四章 VBA传递参数步骤.pdf
- 第七讲:数据管理.ppt
- 计算机常用数制与编码.ppt
- 第五讲 存储管理.ppt
- 无人机考试题库100道带答案(培优).docx
- 2025-2026学年小学心理健康六年级下册北师大版(2013)教学设计合集.docx
- 招募基地合同模板怎么写(3篇).docx
- 无人机考试题库100道及参考答案.docx
- 安全员技师模拟考试题及答案.docx
- 四川科技职业学院《程序设计技术语言》2023-2024学年第一学期期末试卷.doc
- 2025-2026学年小学英语辽师大版一起一年级上册-辽师大版(一起)(2003)教学设计合集.docx
- 浙江电力职业技术学院《体育竞赛与编排》2023-2024学年第二学期期末试卷.doc
- 2025-2026学年小学心理健康六年级下册北师大版(2019)教学设计合集.docx
- 河北省沧州市孟村县达标名校2024-2025学年初三四模英语试题试卷含答案.doc
原创力文档


文档评论(0)