计算机图形学各种算法的作业(偏于理论) 联系客服

发布时间 : 星期二 文章计算机图形学各种算法的作业(偏于理论)更新完毕开始阅读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