- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 基本图元算法 int x,y; } VPOINT;
已知条件:起点,终点
2 直线算法
2.1 DDA直线算法
一、DDA算法
每个点的计算方法:
①在最大位移方向上,取步长=1;
②计算另一坐标分量;
x=x±1, y=y±yincre;
或 y=y±1, x=x±xincre;
③取整作为点坐标。
分析:8种斜线情形、水平线、垂直线
二、算法
void DDALine(VPOINT p1, VPOINT p2, int color)
{ int delta, i; //delta为x、y方向最大位移的绝对值
float xinc, yinc;
float x,y; // 留心①:必须float类型
if(abs(p2.x-p1.x)abs(p2.y-p1.y))
{ delta=abs(p2.x-p1.x);
if(p2.x-p1.x0) xinc=1; else xinc=-1; // 留心yinc=(float)(p2.y-p1.y)/abs(p2.x-p1.x); // 留心③
}
else
{ delta=abs(p2.y-p1.y);
if(p2.y-p1.y0) yinc=1; else yinc=-1;
xinc=(float)(p2.x-p1.x)/abs(p2.y-p1.y);
}
x=p1.x; y=p1.y;
for(i=1; i=delta; i++)
{ putpixel(x+0.5, y+0.5, color); //留心④:四舍五入
x=x+xincre; y=y+yincre;
}
}
水平线、垂直线的处理?
缺点:存在实数的除法运算。
测试例程:
main()
{ VPOINT p1={200,200}, p2;
int radius=100, angle;
for(angle=0; angle360; angle++)
{ p2.x=p1.x+ radius*cos(angle);
p2.y=p1.y+ radius*sin(angle);
DDALine(p1, p2, 1);
}
}
三、增量法
由于图形中的点的相邻性,借助相邻点的坐标计算下一点的坐标,将乘/除法运算转换为加/减法运算。
2.2 Bresenham直线算法(中点画线法)
一、构造判别式
构造判别式,将两个候选像素的中点代入,根据值的正负,确定选择哪个像素点。
取判别式为直线方程:
若,则在直线中;
若,则在直线上方;
若,则在直线下方。
二、计算判别式(考虑情形:且p1.xp2.x)
若,取;若,取。
增量法的体现:
如何取下一个像素点?
如何计算下一步的值?
能否用当前的值推导下一步的值?
的初值:
推导下一步的值:
若,取;
若,取。
三、算法
void MidpointLine1(VPOINT p1, VPOINT p2,int color)
{ int a,b,d1,d2,d,x,y;
a=p1.y-p2.y; b=p2.x-p1.x;
d=2*a+b; d1=2*a; d2=2*(a+b); // 技巧:只判断正负
putpixel(p1.x,p1.y,color);
for(x=p1.x+1,y=p1.y; x=p2.x; x++)
{ if(d=0) d=d+d1;
else { y++; d=d+d2; }
putpixel(x,y,color);
}
}
优点:全部整型数加减运算。
思考:所有情形的算法
void allMidpointLine(VPOINT p1, VPOINT p2,int color)
{ int delta_x, delta_y;
delta_x=p2.x-p1.x; delta_y=p2.y-p1.y;
if(abs(delta_y)=abs(delta_x))
{ if(delta_x0 delta_y0) MidpointLine1(p1,p2,color);
if(delta_x0 delta_y0) MidpointLine1(p2,p1,color);
if(delta_x0 delta_y0) MidpointLine2(p1,p2,color);
if(delta_x0 delta_y0) MidpointLine2(p2,p1,color);
}
else
{ if(delta_x0 delta_y0) MidpointLine3(p1,p2,colo
您可能关注的文档
- 、3.24平方差公式分解因式教学设计.doc
- [文综]2009年高考宁夏文科综合试题及其参考答案.doc
- “2014年湖北电力公司普考复习题”试卷5-变电二次.doc
- “探索已知圆的相切圆”活动设计.doc
- 《5.5-直线和圆的位置关系》课件.ppt
- 《等比数列的概念与通项公式》优质课比赛说课课件.ppt
- 《二项式定理》教案8(新人教A版选修2-3).doc
- 《高考风向标》2012年高考地理一轮复习-第四部分-第十九章-第一节-中国的地理概况课件.ppt
- 《合并同类项》七年级(上).doc
- 《课堂新坐标》2014届高考物理一轮复习配套word版文档:第六章-第2讲-电场能的性质描述.doc
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)