- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贵州大学计算机图形学实验报告----直线生成算法
贵州大学计算机图形学实验报告
学院:计算机科学与信息学院 专业: 班级:
姓名 学号 实验组 实验时间 指导教师 成绩 实验项目名称 实验一 直线生成算法 实验目的 通过本实验,了解并掌握在光栅显示系统中直线的生成和显示算法,熟悉相关开发平台。为后继实验打下基础。 实验要求 能够使用DDA数值微分法绘制直线。
能够使用中点画线算法绘制直线。
能够使用Bresenham画线算法绘制直线。 实验原理 一、DDA数值微分法画直线
已知直线段L的起点为P0(x0,y0),终点为P1(x1,y1)
直线的斜率K则为:K=(y1-y0)/(x1-x0).直线的方程为:y = kx+b.则对于|k|=1来说,x每增加1个步长,y增加 k(直线的斜率)。对于|k|1来说,y每增加1个步长,x增加1/k。
分析如下所示:
|k|=1的推导过程
yi+1 = kxi+1 + b = k(xi+Δx)+b = kxi+b+kΔx
yi+1 = yi+ kΔx
Δx = 1
yi+1 = yi+ k
|k|1的推导过程
Xi+1 = yi+1/k – b/k = yi/k - b/k +Δy/k
Δy = 1
Xi+1 = Xi+1/k
DDA算法的分析:
复杂度:加法+取整
优点:避免了y=kx+b 方程中的浮点乘法,比直接用点斜式画线快。
缺点:需浮点数加法及取整运算,不利于硬件实现。
二、中点划线法
假设直线的起点、终点分别为:(X0,Y0),(X1,Y1),直线方程: F(x,y)=ax+by+c=0,其中: a=y0-y1,b=(x1-x0),c=x0y1-x1y0。
如F(x,y)=0, 则(x,y) 在直线上
如F(x,y)0, 则(x,y)在直线下方
如F(x,y)0, 则(x,y)在直线上方
对于|k|=1
假设已确定当前象素点P(Xp ,Yp ),然后确定下一个象素点,即T 或B之一。M为T,B中点,Q为理想直线与栅格线的交点。若M在Q的下方,选T,否则选B。使用直线的正负划分性来判断M和Q的位置关系.构造判别式:
d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c
当d0,M在L(Q点)下方,取右上方T为下一个象素;
当d=0,M在L(Q点)上方,取右方B为下一个象素;
当d=0,选T或B均可,约定取B为下一个象素
判断了M的位置之后则可以依次的画出各个点,从而得到一条直线。
对于|k|1
d=F(M)=F(xp+0.5,yp+1)=a(xp+0.5)+b(yp+1)+c
当d=0,M在L(Q点)下方,取右上方T为下一个象素;
当d0,M在L(Q点)上方,取右方B为下一个象素;
当d=0,选T或B均可,约定取B为下一个象素
中点划线算法的分析:
优点:用整数加法代替了DDA数值微分法中的浮点数加法及取整运算,大大提高了算法的效率。
缺点:在计算d的符号时,需要做4个加法和2个乘法
改进:因为d是x和y的线性函数,因此可采用增量计算。通过计算可得对于|k|=1的情况d的初值为a+0.5b,当d=0,M在L上方,增量d1为a;当d0,M在L下方,增量d2为a+b。对于|k|1的情况d的初值为0.5a+b,当d=0,M在L下方,增量d1为b;当d0,M在L上方,增量d2为a+b。
三、Bresenham划线算法
该算法是计算机图形学领域中使用最为广泛的直线扫描转换算法,该划线算法类似与中点划线算法,也是由误差项符号决定下一个像素右边点还是右上点。
基本原理:过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。该算法的优点在于增量计算,使得对于每一列只要检查一个误差项的符号,就可以确定该列所求的像素。根据直线的斜率来确定变量在x或y方向递增一个单位。另一个方向y或x的增量为0或1,它取决于实际直线与最接近网格点位置的距离。这一距离称为误差。
由以上原理,为方便计算,令e = d-0.5,e的初值为-0.5,增量为k。当 e=0时,取当前像素(xi,yi)的右上方像素(xi+1,yi+1),e减小1,而当e0时,更接近于右方像素(xi+1,yi)。
Bresenham算法的分析:
优点:高效,巧妙地采用了e = d-0.5,e的初值为-0.5来简化运算,把e和0.5的比较转化成了e和0的比较,使得每次画点只需考虑误差项增量的符号即可。 实验环境 硬件平台:PC机
软 件:Windows平台,eclipse
编程语言:java 实验步骤 掌握三种划线算法的基本原理;
依据划线算法,在eclipse下编写源程序并进行调试;
对运行过程中的错误进行修改;
对运行结果进行
您可能关注的文档
- 药理学记忆口诀及笔记.doc
- 药理学试题A张小庆.doc
- 营运部技术职能业务流程.doc
- 营销学发展史.doc
- 融合教育网络培训测试答案.doc
- 融资主管笔试题及答案.doc
- 血管外护理常规友谊.doc
- 装修工程部分竣工资料模板.doc
- 装修公司月计划表.doc
- 装潢技术面试题.doc
- 甘肃省XB师范大学附属中学2025届高三上学期一模诊断考试地理答案.doc
- 甘肃省XB师范大学附属中学2025届高三上学期一模诊断政治含解析.doc
- 安徽省皖江名校2024-2025学年高一上学期12月联考英语无答案.doc
- 2025年1月八省联考高考综合改革适应性测高三化学陕西山西宁夏青海卷无答案.doc
- 2025年1月八省联考高考综合改革适应性测高三化学四川卷无答案.doc
- 2025年1月八省联考高考综合改革适应性测高三政治陕西山西宁夏青海卷无答案.doc
- 2025年1月内蒙古自治区普通高等学校招生考试适应性测试(八省联考)历史无答案.doc
- 2025年1月内蒙古自治区普通高等学校招生考试适应性测试(八省联考)历史含解析.doc
- 2025年1月四川省普通高等学校招生考试适应性测试(八省联考)历史含解析.doc
- 2025年1月四川省普通高等学校招生考试适应性测试(八省联考)政治无答案.doc
文档评论(0)