⭕ 中点画圆算法

Midpoint Circle Algorithm (Bresenham Circle Algorithm) - 利用八对称性的高效圆形绘制

圆心
第一象限计算点
八对称性生成点
当前绘制点

📊 算法执行信息

点击"绘制圆形"开始

🎯 当前计算点的八对称性

一个点 (x, y) 可以通过对称性生成其他7个点:

(x, y)
(y, x)
(-x, y)
(-y, x)
(x, -y)
(y, -x)
(-x, -y)
(-y, -x)

💡 中点画圆算法原理

🔑 核心思想:
  • 利用圆的八对称性,只需计算第一象限的45°圆弧(1/8圆)
  • 使用决策参数判断下一个像素位置
  • 全程只用整数运算(加减法),无需浮点数和乘除法

算法步骤:

  1. 初始化:
    x = 0, y = r (从圆的最上方开始)
    p = 1 - r (初始决策参数)
  2. 循环直到 x > y:
    绘制8个对称点: (±x, ±y) 和 (±y, ±x)
    x = x + 1

    如果 p < 0:
      p = p + 2*x + 1 (选择正右方的点)
    否则:
      y = y - 1
      p = p + 2*(x - y) + 1 (选择右下方的点)

为什么这样做?

⚡ 为什么快?
✓ 没有浮点运算
✓ 没有乘除法
✓ 没有平方根
✓ 只有整数加减法
✓ 利用对称性减少计算量

圆的方程:

x² + y² = r²

对于圆上的点:F(x,y) = x² + y² - r² = 0
点在圆内:F(x,y) < 0
点在圆外:F(x,y) > 0

🎓 算法特点对比

特性 中点画圆算法 传统方法
运算类型 只用整数加减法 需要sin/cos或平方根
速度 极快 ⚡ 较慢
对称性 利用八对称 (1/8计算) 全圆计算
应用 图形硬件、游戏引擎 理论教学