发布时间 : 星期二 文章计算机图形学各种算法的作业(偏于理论)更新完毕开始阅读d669a0c2d5bbfd0a795673b5
LH计算机图形学作业:共九道题
中点画线算法优点是:只有整数运算,不含乘除法;可用硬件实现。 Bresenham算法的优点是:
1、不必计算直线之斜率,因此不做除法; 2、不用浮点数,只用整数;
3、只做整数加减法和乘2运算,而乘2运算可以用硬件移位实现。 4、Bresenham算法速度很快,并适于用硬件实现。 1.6 直线生成算法的发展趋势
(略)
2 椭圆的Bresenham生成算法
2.1 椭圆曲率分析
nt椭圆r??acost,bsi?(
方向的短半轴长度,且
a为沿x轴方向的长半轴长度,b为沿y轴
22223/2a?b),曲率为kr?ab/(asint?bcost),在
第一象限t??0,?/2?,将kr对t求导数,有dkr/dt?0,即曲率为减函数,
)即t?0)处的曲率在点(a,0(
kr(t?0)?a/b2;在点(0,b)(即t??/2)处的
曲率
22kr(t??/2?b/aa/aa。半径为的圆的曲率为,半径为b的圆的曲)率为
b/b2,两圆的曲率关系为b/b2?a/a2(a?b),则两圆的曲率在椭
22)(0,b)的曲率之间,圆上点(a,0与四者的关系为:a/b?1/b?1/a?b/a。
2.2 椭圆方程分析
根据椭圆及圆的曲率分析,椭圆弧分别由半径为
a和b的圆弧逼近
生成。为了更准确的由圆弧生成椭圆弧,在椭圆弧上确定一点P0,将椭圆弧分成曲率较小和曲率较大的两段,椭圆方程为:
F?x,y??b2x2?a2y2?a2b2?0。
其中度,且
a为沿x轴方向的长半轴长度,b为沿y轴方向的短半轴长
a?b?0。由于椭圆的对称性,这里只要讨论第一象限椭圆弧
7
LH计算机图形学作业:共九道题
的生成。将椭圆弧分为上下两部分,以弧上曲率为-1的点(即法向量两个分量相等的点)作为分界。该椭圆上一点(x,y)处的法向量为:
N(x,y)??F?Fi?j?2b2xi?2a2yj ?x?y结合椭圆方程可计算出分界点P0的坐标为:
(a2/a2?b2,b2/a2?b2)。
以P0点为分界点,将第一象限的圆弧分成曲率较大和较小的两段弧。如图2.1所示,
y?[b2/a2?b2,b]椭圆弧,与半径为a的圆在点的
22222T1(0a,到)T2(a/a?b,ab/a?b)的圆弧上对应。在椭圆弧上任取一
点Q1,过Q1作垂直线与圆交于P1点,连接圆心与P1点,与Y轴的夹角为
θ。则
椭圆的参数方程可表示为:
'??x?asinθ,?' ??y?bcosθ.圆的参数方程可表示为:
?x?asinθ, ?y?acosθ.?对于同一θ,椭圆弧上存在唯一的点与圆弧上的点对应,并且对应点的坐标存在如下关系:
'??x?x,?' y?(b/a)y.??
图2.1 圆弧与椭圆弧对应点之一 图2.2 圆弧与椭圆弧对应点之一
8
LH计算机图形学作业:共九道题
如图2.2所示,半径为
22222b的圆上,从点T3(a/ab?b,b/a?b)到
T4(b,0)的圆弧与椭圆上y?(0,b2/a2?b2的)椭圆弧对应,在椭圆弧上任
取一点Q2,过Q2作垂直线与圆交于P2点,连接圆心与P2点,与Y轴的夹角为
θ。则
椭圆的参数方程可表示为:
'??x?asinθ,?' y?bcosθ.??圆的参数方程可表示为:
?x?bsinθ, ?y?bcosθ.?对于同一θ,椭圆弧上存在唯一的点与圆弧上的点对应,并且对应点的坐标存在如下关系:
'??x?(a/b)x,?' y?y.??2.3 椭圆生成算法
当圆弧上的点从(a,0)沿着图2.1、图2.2的对应关系方向变化到
(b,0)时,椭圆弧上相对应的点也从该方向变化到(a,0)。
2.3.1 算法实现过程
1、计算分界点P0(x0,y) 0。
2、用Bresenham算法生成两段圆弧C1、C2。C1半径为a,
x?[0,a2/a2?b2];C2半径为b,y?[0,b2/a2?b2]。
3、将圆弧C1进行比例变换:例系数为
x方向的比例系数为
1,
y方向的比
b/a;将圆弧C2进行比例变换:x方向的比例系数为a/b,
1。
y方向的比例系数为
9
LH计算机图形学作业:共九道题
4、如图2.3,已知椭圆上在第一象限的点三个象限与
Q(x,y),则椭圆上另外
Q(x,y,(?x,y)?,,(x因此只点)对称的点分别为(?x,y)?要画出在第一象限的图形,即可得到整个椭圆的图形。
图2.3 椭圆对称性
2.3.2 算法流程图
椭圆的Bresenham算法流程图如下:
开始 计算分界点P0?x0,y0? 椭圆上点Y的坐标大于y0 Y 用Bresenham算法计算圆弧Tx,Ty N ??用Bresenham算法计算圆弧Tx,Ty ??计算对应圆弧上的点 Y 椭圆上点的Y坐标大于0 N 结束
图2.4 椭圆的Bresenham算法流程图
10