- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学复习之主要算法与公式
中点画线法算法步骤:
0≤k≤1时中点画线法的算法步骤为:
1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
2.计算初始值△x、△y、d=0.5-k、x=x0、y=y0;
3.绘制点(x,y)。判断d的符号;
若d0,则(x,y)更新为(x+1,y+1),d更新为d+1-k;
否则(x,y)更新为(x+1,y),d更新为d-k。
4.当直线没有画完时,重复步骤3。否则结束。
改进:用2d△x代替d
1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
2.计算初始值△x、△y、d=△x-2△y、x=x0、y=y0。
3.绘制点(x,y)。判断d的符号。
若d0,则(x,y)更新为(x+1,y+1),d更新为
d+2△x-2△y;
否则(x,y)更新为(x+1,y), d更新为d-2△y。
4.当直线没有画完时,重复步骤3。否则结束。
Bresenham算法步骤:
算法步骤:
1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
2.计算初始值△x、△y、d=0、x=x0、y=y0。
3.绘制点(x,y)。
4.d更新为d+k,判断d的符号。若d0.5,则(x,y)更新为(x+1,y+1),同时将d更新为d-1;否则(x,y)更新为(x+1,y)。
5.当直线没有画完时,重复步骤3和4。否则结束。
改进算法步骤:
1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
2.计算初始值△x、△y、e=-△x、x=x0、y=y0。
3.绘制点(x,y)。
4.e更新为e+2△y,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2△x;否则(x,y)更新为(x+1,y)。
5.当直线没有画完时,重复步骤3和4。否则结束。
中点画圆法:
改进:用d-0.25代替d
算法步骤:
1.输入圆的半径R。
2.计算初始值d=1-R、x=0、y=R。
3.绘制点(x,y)及其在八分圆中的另外七个对称点。
4.判断d的符号。若d≤0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。
5.当xy时,重复步骤3和4。否则结束。
椭圆中点画法:
算法步骤:
1.输入椭圆的长半轴a和短半轴b。
2.计算初始值d=b2+a2(-b+0.25)、x=0、y=b。
3.绘制点(x,y)及其在四分象限上的另外三个对称点。
4.判断d的符号。若d≤0,则先将d更新为d+b2(2x+3),再将(x,y)更新为(x+1,y);否则先将d更新为d+b2(2x+3)+a2(-2y+2),再将(x,y)更新为(x+1,y-1)。
5.当b2(x+1)a2(y-0.5)时,重复步骤3和4。否则转到步骤6。
6.用上半部分计算的最后点(x,y)来计算下半部分中d的初值:
7.绘制点(x,y)及其在四分象限上的另外三个对称点。
8.判断d的符号。若d≤0,则先将d更新为b2(2xi+2)+a2(-2yi+3),再将(x,y)更新为(x+1,y-1);否则先将d更新为d+a2(-2yi+3),再将(x,y)更新为(x,y-1)。
9.当y0时,重复步骤7和8。否则结束。
多边形的扫描转换
x-扫描线算法
算法步骤:
(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。
(2)从y=ymin到y=ymax,每次用一条扫描线进行填充。
(3)对一条扫描线填充的过程可分为四个步骤:
a.求交
b.排序
c.交点配对
d.区间填色
当扫描线与多边形的顶点相交时,
若共享顶点的两条边分别落在扫描线的两边,交点只算一个;
若共享顶点的两条边在扫描线的同一边,这时交点作为零个(两边顶点均在下方)或两个(均在上方)。
改进的扫描线(有效边)算法(活性边表法)
边表的构造:
(1)首先构造一个纵向链表,链表的长度为多边形所占有的最大扫描线数,链表的每个结点,称为一个桶,则对应多边形覆盖的每一条扫描线。
(2)将每条边的信息链入与该边最小y坐标(ymin )相对应的桶处。也就是说,若某边的较低端点为ymin,则该边就放在相应的扫描线桶中。
(3)每条边的数据形成一个结点,内容包括:该扫描线与该边的初始交点x(即较低端点的x值),1/k,以及该边的最大y值ymax。
x|ymin ymax 1/k NEXT
(4)同一桶中若干条边按X|ymin由小到大排序,若X|ymax 相等,则按照1/m由小到大排序。
算法步骤:
(1)初始化:构造边表,AET表置空;
(2)将第一个不空的ET表中的边与AET表合并;
(3)由AET表中取出交点对进行填充。填充之后删除y=ym
您可能关注的文档
- 自动录播教室拍摄注意事项及教师要求.doc
- 英语教师试讲术语.doc
- 落地双排外架脚手架安全技术交底.doc
- 落地式脚手架搭设技术交底.doc
- 蓝牙通信技术及应用.doc
- 西南科技大学基础光学试题及答案(A).doc
- 视得安楼宇对讲维修手册.doc
- 计算机主流主板命名规则.doc
- 计算机应用基础(主编 周南岳)1.2 认识微型计算机.doc
- 计算机组成原理期末考试简答题重点.doc
- 某区纪委书记年度民主生活会“四个带头”个人对照检查材料.docx
- 某县纪委监委2024年工作总结及2025年工作计划.docx
- 某市场监督管理局2024年第四季度意识形态领域风险分析研判报告.docx
- 县委书记履行全面从严治党“第一责任人”职责情况汇报.docx
- 税务局党委书记2024年抓党建工作述职报告.docx
- 某市税务局副局长202X年第一季度“一岗双责”履行情况报告.docx
- 副县长在全县元旦春节前后安全生产和消防安全工作部署会议上的讲话.docx
- 某市委书记个人述职报告.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料1.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料.docx
文档评论(0)