- 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章 二维线画图元的生成 本章目标 如何绘制简单线画图元(点、线、圆等) 使用OpenGL的相关函数 主要内容 3.1 二维图形显示 3.2 扫描转换直线段 3.3 扫描转换圆弧 3.4 线画图元的属性 3.5 OpenGL相关函数 3.1 二维图形显示 图元的生成 是指完成图元的参数表示形式到点阵表示形式的转换。通常也称扫描转换图元(Scan Converter) 参数表示形式由图形软件包的使用者指定 点阵表示形式是光栅显示系统刷新时所需的表示形式 3.1 二维图形显示 像素操作函数(画像素和读像素) 最基本的绘图函数 画(写)像素: SetPixel ( int x, int y, int color ) 读像素: int GetPixel ( int x, int y) 注意:具体的语言环境使用的函数名可能不同,这里的函数名仅用于课堂教学 3.1 二维图形显示 用OpenGL实现读/写像素函数 3.2 扫描转换直线段 扫描转换直线 求与直线段充分接近的像素集,并以此像素集替代原连续直线段在屏幕上显示 约束 像素间均匀网格 整型坐标系 几点假设 直线段为: 直线段的宽度为1 直线段的斜率 3.2.1 直线方程法 基本思想 根据直线的几何方程确定线段路径上的像素位置 直线方程 M 表示斜率,b 表示 y 轴截距 方法 划分区间[x0, x1]: k0, k1,…, kn, ki+1=xi+1, 其中k0 = x0, kn= x1 计算纵坐标y:yi = mki + b 取整: 3.2.2 DDA算法 数字差分分析法DDA (Digital Differential Analyzer) 方法 程序:p45 主要运算 加法+取整 浮点运算 3.2.2 DDA算法 以下代码是否正确 void LineDDA(int x0,int y0,int x1,int y1,int color) { int x, dx, dy, y; float m; dx = x1 - x0; dy = y1 - y0; m = dy / dx; y = y0; for(x = x0; x = x1; x++) { y = (int)(y + 0.5); SetPixel(x, y, color); y += m; } } 3.2.3 中点算法 3.2.3 中点算法 问题:如何判断距直线最近的下一个像素点? 根据可能所取点间的中点在直线的位置 构造判别式:d = F(M) = F(xp+1, yp+0.5) 由 d 的正和负可判定下一个像素。其中(xp , yp)为当前点坐标: d 0,取NE;否则取E 3.2.3 中点算法 判定再下一个像素 1)若d≥0,取正右方像素E,则判定下一个像素,得: d1 = F(xp+2, yp+0.5) = a(xp+2) + b(yp+0.5) + c = d + a, d的增量是a(即-?y) 2)若d<0,取右上方像素NE,则判定下一个像素,得: d2 = F(xp+2, yp+1.5) = d + a+b , d的增量为a+b (即-(?y-?x)) 3.2.3 中点算法 增量d的初始值 d0=F(x0+1, y0+0.5)=F(x0, y0)+a+0.5b 因(x0, y0)在直线上,F(x0, y0)=0, 所以,d0 = a + 0.5b 增量d的递推公式 优化: 增量都是整数,只有初始值包含小数,可以用2d代替d, 2a改写成a + a 特点:算法中只有整数变量,不含乘除法,可用硬件实现 3.2.3 中点算法 递推公式 程序 3.2.3 中点算法 3.2.3 中点算法 其它几种情况 3.2.3 中点算法 3.3 扫描转换圆弧 处理对象:圆心在原点的圆弧 其它情况如何考虑? 平移到原点,扫描转换后再平移到原位置 圆的八对称性 只需要扫描转换八 分之一圆弧即可 3.3 扫描转换圆弧 两种直接计算方法 离散点 离散角度 缺点:开平方,三角函数运算,计算量大,不可取 3.3.1 圆弧的中点算法 圆弧的正负划分性 3.3.1 圆弧的中点算法 第二个八分圆 特点: 第一象限的八分之一圆弧中x 的变化大于y的变化, 即圆弧上的切矢量斜率在0 ... -1间 3.3.1 圆弧的中点算法 问题:如何判断距圆弧最近的下一个像素点? 隐函数 F(x , y) = x2 + y2 - R2 = 0
您可能关注的文档
最近下载
- 镇痛治疗规范.docx VIP
- 数字文化与娱乐:2025年动漫IP衍生品市场洞察报告.docx
- 护理安全管理在新生儿病房的应用课件教学教材演示幻灯片.pptx VIP
- 2025至2030中国动物园行业产业运行态势及投资规划深度研究报告.docx
- NB-T 47047-2015 承压设备用镍及镍合金无缝管.pdf VIP
- 气道净化护理(2024年中华护理学会团体标准).pptx VIP
- 高中数学函数的单调性教学设计比赛一等奖.doc VIP
- 《电子商务概论》(附微课 第5版)课件 第7、8章 新媒体运营、 电子商务安全.pdf
- 深圳市育才教育团育才三中语文新初一分班试卷含答案.doc VIP
- 测绘地形图图技术总结.doc VIP
文档评论(0)