- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学上机实验报告
实验名称:用DDA算法生成直线
姓名:彭江军
班级:信息与计算科学
学号:2011114093
一:DDA算法的思想精髓
实现直线段光栅化的最简单的方法就是解直线的微分方程。设直线的起点坐标为 (xs, ys),终点坐标为 (xe, ye),那么该直线的微分方程是:
其离散解为:
或:
这里 (xi , yi) 是直线上一点的坐标值。式(3.2.1)和(3.2.2)表示所求直线 y 值和 x 值关于相应增量的逐次递归关系,递归初值为直线的起点。
DDA (Digital Differential Analyzer) 算法即数字微分分析算法就是基于式(3.2.1)或(3.2.2)对直线进行光栅化的算法。在一个坐标轴上以单位间隔对直线采样,以决定另一个坐标轴上最靠近直线的对应整数值。
(1)当直线斜率 0 ≤ m ≤ 1 时,则按单位 x 间隔(Dx = 1)取样并计算每个连续的 y 值:
(2)当 -1≤ m ≤ 0 时,则仍按单位 x 间隔(Dx =-1)取样并计算每个连续的 y 值:
(3)当 m 1 时,则将 x 和 y 交换,这就是说,按单位 y 间隔(Dy = 1) 取样并计算每个连续的 x 值:
(4)当 m - 1 时,则同样交换 x 和 y 交换,并按 Dy =- 1间隔取样计算每个连续的 x 值:
应用上面的算式,解可以设计斜率为任意值的直线。
二:程序代码:
#includestdio.h
#includegraphics.h
#includemath.h
void lineDDA(int xs,int ys,int xe,int ye,int c)
{
int i;
float x=xs,y=ys;
float xIncrement ,yIncrement,steps,dx=xe-xs,dy=ye-ys;
steps=abs(dx);
if(abs(dy)abs(dx))
steps=abs(dy);
xIncrement=dx/steps;
yIncrement=dy/steps;
putpixel(x,y,c);
for(i=1;i=steps;i++)
{
x+=xIncrement;
y+=yIncrement;
putpixel(x,y,c);
}
}
main()
{
int gdriver=DETECT;
int gmode;
initgraph(gdriver,gmode,);
setbkcolor(MAGENTA);
lineDDA(10,14,20,50,1);
getch();
closegraph();
}
三:程序截图如下:
四:试验心得体会:
DDA算法生成直线是非常快的,但是有一点需要注意的,就是x,y的数值类型。因为xIncrement和yIncrement并不都是整数,所以在实际编程中不能照抄课本23页的算法,否者由于精度损失,得到了就是一条和坐标轴平行的直线。
由于画图要调用BGI库中的EGAVGA.BGI文件,来驱动程序,因此要保证程序可以访问到该文件,针对有些同学程序正确但不出来图形,可能原因就在于程序没能用该驱动使initgraph函数正常初始化。
您可能关注的文档
最近下载
- 上海市杨浦区市东中学2020-2021学年高三(上)期中物理试题.pdf VIP
- 消防工程施工重点、难点分析及对策消防工程施工现场细节详解.docx
- 2021届上海市杨浦区市东中学高三(上)期中物理试题(学生版).doc VIP
- 2021届上海市杨浦区市东中学高三(上)期中物理试题(教师版).doc VIP
- 上海市2020年上学期杨浦区市东中学高三物理期中试题.docx VIP
- 2022-2023学年上海市实验学校高二(上)期末地理试卷.doc VIP
- 教育科研工作总结(范文)与教育科研案例·批评中的教育艺术合集.doc VIP
- 6三维建模.6三维建模.ppt VIP
- 上海市市东实验学校2024-2025学年高二下学期3月月考 数学试卷(含解析).docx VIP
- 2024年度-幼儿园《小手不是用来打人的》PPT课件.ppt VIP
原创力文档


文档评论(0)