计算机图形学实验报告实验2.docx
- 文档编号:10757000
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:14
- 大小:253.10KB
计算机图形学实验报告实验2.docx
《计算机图形学实验报告实验2.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验报告实验2.docx(14页珍藏版)》请在冰点文库上搜索。
计算机图形学实验报告实验2
贵州大学实验报告
学院:
计算机科学与信息学院专业:
计算机科学与技术班级:
10级计科101班
姓名
吴晨
学号
1008060248
实验组
实验时间
2013-6-10
指导教师
吴云
成绩
实验项目名称
实验二椭圆生成算法
实验目的
通过本实验,使学生了解并掌握在光栅显示系统中圆、椭圆的生成和显示算法,进一步熟悉相关开发平台。
实验要求
1、优化后的算法:
二次差分法
2、可任意指定圆心坐标。
3、书写实验报告:
(1)给出算法描述,包括理论、算法和数据结构;
(2)根据算法和数据结构:
编制源程序;
(3)给出实验数据和结果
(4)编制源程序;
3、对于一些较为重要的算法,可以适当给出代码
实验原理
一、生成园弧的中点算法
算法原理:
画出第二个八分园(45°-90°),利用八对称性画出其它八分园。
1.用中点算法画第二个八分园。
从当前已获得的象素递推出下一个象素。
园弧的隐函数的形式为
F(x,y)=x2+y2-R2=0
则园弧的正负划分性为:
F(x,y)>0,(x,y)在园外;
F(x,y)<0,(x,y)在园内;
F(x,y)=0,(x,y)在园上。
设(xi,yi)为已确定的象素坐标,则下一个象素只能是正右方的E点或右下方的SE点。
设M是E和SE的中点,M=(xi+1,yi-0.5):
如F(M)<0,则M在园内,说明E距离圆弧更近,下一点取正右方E点;
如F(M)>0,则M在园外,说明SE距离圆弧更近,下一点取右下方SE点;
如F(M)=0,则M在园上,下一点取E点或SE点。
构造判别式:
d=F(M)=F(xi+1,yi-0.5)=(xi+1)2+(yi-0.5)2-R2
(1)d<0,中点在圆内,选正右方的E点,再下一个象素的判别式为:
dnew=F(xi+2,yi-0.5)=(xi+2)2+(yi-0.5)2-R2=d+(2xi+3)
沿正右方向,d的增量为:
(2)d>=0,中点在圆外,选右下方的SE点,再下一个象素的判别式为:
dnew=F(xi+2,yi-1.5)=(xi+2)2+(yi-1.5)2-R2=d+(2xi+3)+(-yi+2)
=d+2(xi-yi)+5
沿右下方向,d的增量为:
(3)d初始值为:
d0=F(1,R-0.5)=1+(R-0.5)2-R2=1.25-R
在d的运算中包含了浮点数的运算,为了消除d中的浮点数运算,分析上述算法,可以看出,算法中取作用的只是d的符号,所以可设另一整数变量h:
h=d-0.25
所以:
初始化运算d0=1.25–R对应于:
h0=1-R
判别式d<0对应于h<-0.25
又因为:
h的初值h0为整数,运算过程中的分量也为整数(∆E和∆SE为整数),故h始终为整数。
所以可用h代替d作判断。
其初始值:
h0=d0-0.25=(1.25-R)-0.25=1-R
有以下对应关系:
h<0d<0
h>0d>0
h=0d=0
算法分析:
二阶差分法:
利用二阶差分降低增量的阶数
二阶差分(降低增量的阶数,用差分法消除中点算法中的乘法运算)。
中点算法中:
1,如在现有点p(xp,yp)上,对p+1点选择了E(xp+1,yp)点
(1)增量ΔE
二阶差分增量为:
(2)增量ΔSE
二阶差分增量为:
2,如在现有点p(xp,yp)上,对p+1点选择了SE(xp+1,yp-1)点
(1)
增量ΔE
二阶差分增量为:
(2)增量ΔSE
二阶差分增量为:
x
y
d
E
SE
x=x+1(d<0)
y
d+E
E+2
SE+2
x=x+1(d>0)
y-1
d+SE
E+2
SE+4
算法步骤:
1,依据上一次迭代中的d的符号来选择现在点E或SE(d0=1-R);
2,用在上一次迭代计算的和来计算新的d;
3,用移到新象素点的二次差分值,并用它来更新和移到下一点。
二、椭圆中点算法
算法原理:
中点算法可以推广到一般二次曲线如椭圆。
中心在原点的椭圆方程为:
隐函数的形式为:
a=b时,该方程表示的是圆。
椭圆具有四对称性,可只考虑第一象限的椭圆弧。
椭圆上任一点(x,y)处的法向量为:
如在p点法线两分量相等,则p点将椭圆第一象限分成两部份,上半部份法向量在y方向的分量比x方向的大,在下半部份相反。
在p点:
在当前中点处,法向量(2b2(Xp+1),2a2(Yp-0.5))的y分量比x分量大,即:
b2(Xp+1) 而在下一中点,不等式改变方向,则说明椭圆弧从上部分转入下部分。 与圆弧中点算法类似: 确定一个象素Pi后,接着在下两个候选象素的中点计算一个判别式d=F(M)的值,由判别式的符号确定更近的点。 1.先讨论椭圆弧的上半部分(令△x=1) 设Pi(xi,yi)已确定,则下一对待选像素的中点是: M(xi+1,yi-0.5) 对初始点(0,b),第一个中点为(1,b-0.5),则: (1)当d<0(取T点)时,下一点(i+1)点的坐标为(xi+1,Yi),为确定i+2点取的下一个中点M的坐标为: (xi+2,yi-0.5) (2)当d>=0(取B点)时,下一点(i+1)点的坐标为(xi+1,Yi-1),为确定i+2点取的下一个中点M的坐标为: (xi+2,Yi-1.5) 2.在每一次迭代中都要判断椭圆是否已从上半部进入了下半部,如果b2x>=a2y,则椭圆进入下半部份,此时令△y=1,且: (1)若d<0,取右下方像素R,则 (2)若d>=0,取正下方像素L,则 3.终止条件为: y=0 MidpointEllipe(a,b,color) inta,b,color; {intx,y;floatd1,d2; x=0;y=b; d1=b*b+a*a*(-b+0.25); putpixel(x,y,color);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)