中点圆算法

17 Mar 2025 | 阅读 2 分钟

它基于以下函数,用于测试任意点 (x, y) 与以原点为中心的半径为 r 的圆的空间关系

MidPoint Circle Algorithm
MidPoint Circle Algorithm

现在,考虑点位于像素 T 和像素 S 之间一半的坐标

这被称为中点 (xi+1,yi-MidPoint Circle Algorithm) ,我们用它来定义一个决策参数

            Pi=f (xi+1,yi-MidPoint Circle Algorithm) = (xi+1)2+(yi-MidPoint Circle Algorithm)2-r2 ...............公式 2

如果 Pi 为 -ve ⟹中点在圆内,我们选择像素 T

如果 Pi 为+ve ⟹中点在圆外(或在圆上),我们选择像素 S。

下一步的决策参数是

Pi+1=(xi+1+1)2+(yi+1-MidPoint Circle Algorithm)2- r2............公式 3

由于 xi+1=xi+1,我们有

MidPoint Circle Algorithm

如果选择像素 T ⟹Pi<0

我们有 yi+1=yi

如果选择像素 S ⟹Pi≥0

我们有 yi+1=yi-1

MidPoint Circle Algorithm

我们可以继续简化为 n 个 (xi,yi) 项,得到

MidPoint Circle Algorithm

现在,Pi 的初始值 (0,r) 来自公式 2

MidPoint Circle Algorithm

我们可以将 MidPoint Circle Algorithm≅1
∴r 是一个整数
所以,P1=1-r

算法

步骤 1: 在公式 2 中,将 x =0,y =r
            我们有 p=1-r

步骤 2: 只要 x ≤ y,就重复步骤
            绘制 (x, y)
            如果 (p<0)
然后设置 p = p + 2x + 3
否则
            p = p + 2(x-y)+5
            y =y - 1 (结束如果)
            x =x+1 (结束循环)

步骤 3: 结束

使用中点算法绘制圆的程序

输出

MidPoint Circle Algorithm
下一个主题扫描转换椭圆