计算机图形学学习笔记(4.2)画圆与椭圆
发布时间
阅读量:
阅读量
通常使用八分法来绘制圆形图形。考虑到圆形图形的对称性特点,在绘图过程中只需要计算绘制四分之一圆周上相应的像素点即可。如图所示:

最直接的想法是:利用简单函数方程,直接离散计算:

或者利用极坐标方程,直接离散计算,如下图:

联想到直线中点Bresenham算法(参考:Bresenham中点画线算法),同样地,我们可以通过圆的显式方程

来构造中点Bresenham画圆法。
中点Bresenham画圆法
同样地,在简化计算时我们可以仅关注第一象限上半部的八分之一圆周即为所需。为了实现这一目标x每次递增1个单位y依次减去1或保持不变
依据什么来取点呢?我们可以将中点M带入圆的隐式方程来确定y的取值。
将点M带入圆的隐式方程,得到:

如下图所示,如果d<0, M在圆内,则取Pu;否则取Pd。d=0,同一约定取Pu.

接下来的问题是:如何递推?
情况1:d<=0,取Pu:

情况2:d>0,取Pd:

至此,我们就得到了完整的Bresenham中点画圆算法步骤:
输入圆心位置并设定起始半径R;随后根据d值判断方向并计算第二位坐标;接着由前一位置决定下一个点的位置坐标;按照条件关系循环操作直到满足终止条件;最后利用对称性原理绘制完整的圆形图形。
椭圆的中点画法
根据椭圆方程

,我们同样可以得到其隐式方程。
特别地,在处理椭圆时, 我们需要确定其占比为四分之一. 此外, 为了实现目标, 我们必须首先找出关键的分割线, 如下图所示. 在分割线上时, x方向的变化量占主导地位; 而在分割线下方时, 则是y方向的变化量起主导作用. 其他部分的处理方法与此相似.

全部评论 (0)
还没有任何评论哟~
