Midpoint Circle Algorithm

Midpoint Circle Algorithm #

El algoritmo de dibujo de círculo de punto medio es un algoritmo utilizado para determinar los puntos necesarios para rasterizar un círculo.

Usamos el algoritmo del punto medio para calcular todos los puntos del perímetro del círculo en el primer octante y luego los imprimimos junto con sus puntos de espejo en los otros octantes. Esto funcionará porque un círculo es simétrico con respecto a su centro.

Formulas #

Dado un circle centrado en (0,0) y un radio r. Teniendo un punto con coordenadas p(x,y)

\[F(p) = x^2+y^2-r^2\]
NameMatrix
\[F(p) < 0\]El punto esta dentro del circulo
\[F(p) = 0\]El punto esta en el perimetro
\[F(p) > 0\]El punto esta fuera del circulo

Midpoint circle algorithm
function calculateOctant(middle) {
  x += 1;
  // Mid-point is inside or on the perimeter
  if (p <= 0) {
    p = p + 2 * x + 1;
  } else {
    y -= 1;
    p = p + 2 * x - 2 * y + 1;
  }
  const __x = x * space;
  const __y = y * space;
  savePointsCircle(__x, __y);
  if (fillCircle) {
    for (let i = 1; i < r; i++) {
      savePointsCircle(__x, __y - space * i);
    }
  }

  if (x >= y - 1) {
    return true;
  }
  return false;
}