计算机图形学 四、画圆

1、DDA画圆算法

已知圆的方程:x^{2}+y^{2}=R^{2}

角增量(弧度)的选取:d\theta =\theta /(n-1)

n越大,点越多,速度越慢。所以在不同精度下,对于不同半径给定不同的的精度下,对于不同的半径给定不同的角增量。为精度计划,取\left | d\theta \right | =1/(R-1)

2、圆扫描算法

圆的对称性:

八分圆的对称性特点。八分圆的圆周上的某点(x,y)可计算出其他七个八分圆圆周上对应的点的坐标。

2、中点画圆算法

利用圆的对称性,只讨论1/8圆(第一象限中的第二个八分圆),基本原理与中点画线算法相似。

圆的表达式F(x,y)=x^{2}+y^{2}-R^{2},点M为P1P2的中点,M=(X_{p+1},Y_{p-0.5})。有如下结论:

若d<0则P1为下一个像素,判别式为d'=F(x_{p}+2,y_{p}-0.5)=d+2x_{p}+3

否则P1为下一个像素,判别式为:d'=F(x_{p}+2,y_{p}-1.5)=d+2(x_{p}-y_{p})+3

d的初值为:d0=F(x_{0+1}+y_{0-0.5})=1.25-R(x0,y0=R)

改进方法A:用d-0.25代替d

改进方法B:

每当x递增1,d递增dx=2;dx初值为3

每当y递增1,d递减dy=2;dy初值为-2r+2

4、Bresenham算法

为讨论方便,仅考虑圆心在原点,半径为R的第一象限上的一段圆弧。且取(0,R)为起点,按顺时针方向绘制该1/4圆弧。

如图,HDY三像素中距离圆周边距离最小者,即为所求的像素点。

下一像素为H时,则\Delta _{d}'=\Delta _{d}+2(x+1)+1

下一像素为D时,则\Delta _{d}'=\Delta _{d}+2(x+1)-2(y-1)+1

下一像素为V时,则\Delta _{d}'=\Delta _{d}-2(y-1)+1

\Delta _{d}的初值为2(1-R)

五、椭圆的扫描转换

原理和中点画圆差不多,省流:

(1)上半(x递增)

d<=0时,d'=d+b^{2}(2x_{i}+3)

d>0时,d'=d+b^{2}(2x_{i}+3)+a^{2}(-2y_{i}+2)

(2)下半(y递增)

d<=0时,d'=d+b^{2}(-2y_{i}+3)

d>0时,d'=d+b^{2}(2x_{i}+2)+a^{2}(-2y_{i}+3)

(3)上下半

上半初始值:

初始点:(0,b)

误差项的初始值:

下半初始值(误差项):

上半终止判别:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值