计算机图形学-圆的扫描转换

上个学期的专业选修课,现在想复习一下,趁机把手写的笔记草稿敲成了电子版

圆的扫描转换

圆的扫描转换是在屏幕像素点阵中确定最佳逼近于理想圆的像素点集的过程。这里记录两种方式:

  1. 中点画圆法

  2. Bresenham画圆法

1. 中点画圆法

圆的八分对称性质,所以只需要考虑1/8圆即可

圆心在原点的圆,把某个点是否在圆内可以通过如下判断

假设有一个点,则我们计算它的下一步中点和圆的关系,将带入得到

根据的大小(即中点在圆内还是圆外),来确定选择下一步的目标点

在第一象限的另一半1/8圆的时候,才会向Bresenham下图中右侧情况考虑

2. Bresenham画圆法

考虑圆心在原点半径为R的第一个1/4圆,取为起点,按顺时针方向生成圆

当前点为P,这三个点HDV到圆心的距离的平方与对应圆弧上一点到圆心距离的平方差为

有以下5种情况:

  • HDV全在圆内
  • H在圆外,DV在圆内
  • H在圆外,D在圆上,V在园内
  • HD在圆外,V在园内
  • HDV全在圆外

分三个大类,(如左图)、(如右图)

  • $\Delta D < 0 $,圆弧在D点上方,从H点和D点中选取一个点,设$\sigma_{HD} = |\Delta H|- |\Delta D|$
  • $\Delta D > 0 $,圆弧在D点下方,从V点和D点中选取一个点,设$\sigma_{VD} = |\Delta V|- |\Delta D|$
  • $\Delta D = 0 $,取D点即可

简化的计算

① 下一个象素点取H点,

② 下一个象素点取D点,

③ 下一个象素点取V点,

3. 椭圆的扫描转化

方程$F(x,y) = b^2x^2+a^2y^2-a^2b^2 =0$,$\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$

我们只讨论第一象限的1/4椭圆,并将其划分为上半部分和下半部分,椭圆上一点的法向量

以圆弧上斜率为-1的点,为分界线,判断是椭圆的上半部分还是下半部分,每次迭代时,必须通过计算和比较法向量的两个分量来确定何时从上半部分转入下半部分,因为算法不同,上半部分,从右和右下中选取一个点,下半部分,从右下和下中选取一个点,中止条件为

文章作者:Jiadai Sun

最后更新:2019年09月25日 22:09:07

原始链接:https://sunjiadai.xyz/2019/06/26/计算机图形学-圆的扫描转换/

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 3.0 许可协议,转载请注明出处!


-----------本文结束-----------
0%