计算机图形学(2)基本图形的生成和显示——圆的生成

简单画圆法

算法原理:利用圆的参数方程,直接计算离散点值。

θi+1=θi+Δθ

xi+1=xi+rcosθi

yi+1=yi+rsinθi

八分画圆原则

圆有四条对称轴x=0,y=0,x=y,x=y可以将一个圆分成八分,我们可以只扫描转换其中一份,其余七份可以坐标规律得到。

中点画圆法

类似于中点画线法,同一个套路。即是构造判别式,通过代入判别式的正负,取点,更新判别式。
圆的方程F(x,y)=x2+y2R2,如果F(P)=0那么点P在圆上,如果F(P)>0那么P点在圆外,如果F(P)<0那么P点在圆内。

x0=0,y0=R,d0=1R
if(di<0)     di+1=di+2xi+3       xi+1=xi+1(y没有更新)
if(di>=0)    di+1=di+2(xiyi)+5     xi+1xi+1,yi+1=yi1(y更新了!!)

Bresenham画圆法

计算机图形学(2)基本图形的生成和显示——圆的生成
原理很简单:就是看d1和d2那个大,如果d1大,说明圆与竖直网格线交点离下端像素点比较近,如果d2大,说明圆与竖直网格线交点离上端像素点比较近。

d0=32R
if(di<0)     xi+1=xi+1,yi+1=yi,di+1=di+4xi+6
if(di>=0)     xi+1=xi+1,yi+1=yi1,di+1=di+4(xiyi)+10

中点画椭圆法

其实跟中点画线、中点画圆的思想一毛一样,都是将中点代入方程,判断正负。
只不过椭圆只有两条对称轴,这时我们的讨论范围不再是圆的[π/4,π/2],而是整个第一象限,而且还有一个问题,我们是以哪个轴作为跨步,我们从斜率为-1处将第一象限椭圆分成两部分,上半部分以xi+1=xi+1为跨步,下半部分以yi+1=yi+1为跨步。