- 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章 二维线画图元的生成
第3章 二维线画图元的生成;象素;本章主要内容;3.1 简单的二维图形显示流程图;3.1 简单的二维图形显示流程图
3.2 扫描转换直线段
3.3 圆弧、椭圆弧扫描转换
3.4 生成圆弧的正负法
3.5 线画图元的属性控制;求与直线段充分接近的像素集
两点假设
直线段的宽度为1
直线段的斜率: ;条件:
待扫描转换的直线段:
斜率:
直线方程:
直接求交算法:
划分区间[x0,x1]:
计算纵坐标:
取整:;DDA算法;Void LineDDA(int x0,int y0, int x1,int y1,int color)
/*假定x0x1, -1=m=1*/
{ int x;
float dy,dx,y,m;
dx=x1-x0;
dy=y1-y0;
m=dy/dx;
y =y0;
for(x=x0;x=x1;x++)
{ PutPixel(x,(int)(y+0.5),color);
y+=m;
}
}/*DDA算法程序结束*/;目标:消除DDA算法中的浮点运算
浮点数取整运算,不利于硬件实现; DDA算法,效率低
条件:
同DDA算法
斜 率:
直线段的隐式方程((x0,y0)(x1,y1)两端点,其中 x1≧x0)
F(x,y)=ax+by+c=0
式中 a=y0-y1, b=x1-x0, c=x0y1-x1y0; 直线的正负划分性;P;P;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。
算法中只有整数变量,不含乘除法,可用硬件实现。; void Midpointline(x0,y0,x1,y1,color)
int x0,y0,x1,y1,color;
{ int a,b,d1,d2,d,x,y;
a = y0-y1; b = x1- x0; d = a+a+b;
d1 = a+a; d2 = (a+b)+(a+b);
x = x0; y = y0;
PutPixel(x,y,color);
while (xx1)
{ if (d0)
{ x++; y++; d +=d2;}
else { x++; d +=d1;}
PutPixel(x,y,color);
}
};本章主要内容;3.3 扫描转换圆弧;; 圆弧的正负划分性;3.3.2 生成圆弧的中点算法;P;构造判别式;所以:初始化运算d0 = 1.25 – R 对应于 e0= 1- R
判别式 d 0 对应于 e -0.25
又因为:e的初值e0为整数,运算过程中的分量也为整数,
故e始终为整数
所以: e -0.25 等价于 e 0
程序如下(完全用整数实现):;3.3.3 椭圆的扫描转换;在上半部分,法向量的y分量大
在下半部分,法向量的x分量大;椭圆的中点画法; 根据d1的符号来决定下一像素是取正右方的那个,还是右下方的那个。
若d1<0,
中点在椭圆内,取正右方象素,判别式更新为:
d1=F(xp+2,yp-0.5)=d1+b2(2xp+3)
d1的增量为b2(2xp+3)
当d1≥0,
中点在椭圆外,取右下方象素,更新判别式:
d1=F(xp+2,yp-1.5)=d1+b2(2xp+3)+a2(-2yp+2)
d1的增量为b2(2xp+3)+a2(-2yp+2);d1的初始条件:
椭圆弧起点为(0,b),第一个中点为(1,b-0.5)
初始判别式:d10=F(1,b-0.5)=b*b+a*a(-b+0.25)
转入下一部分,下一象素可能是一正下方或右下方,此时判别式要初始化。
d2 = F(xp+0.5,yp-1) = b2(xp+0.5)2+a2(yp-1)2-a2b2
若d20,则d2’= F(xp+1.5,yp-2) = d2 + b2(2xp+2)+a2(-2yp+3)
若d2=0,则d2’= F(xp+0.5,xp-2) = d2 + a2(-2yp+3)
下半部分弧的终止条件为 y = 0;程序:MidpointEllipe(int a, int b, int color)
{ int x,y; float d1,d2;
x = 0;
您可能关注的文档
最近下载
- Unit 1 Section A(1a-1d)同步课件-初中英语人教版(2024)七年级下册.pptx VIP
- 燃油泵控制电路.ppt
- 研究生学术规范与学术诚信(南京大)中国大学MOOC慕课 客观题答案.pdf VIP
- 中国二型糖尿病防治指南要点解读.pptx VIP
- 合成生物学-全套PPT课件.pptx
- 94G316(n形钢筋混凝土天窗架).pdf VIP
- 2025至2030年中国甜菜行业市场调查研究及投资前景预测报告.docx
- Unit1AnimalfriendsSectionA1a-1d课件人教版(2024)初中英语七年级下册.pptx VIP
- 冷库的安全操作规程培训课件.pptx VIP
- 中国型糖尿病防治指南解读.ppt VIP
文档评论(0)