6 votos

La determinación del número mínimo de píxeles en el límite de un círculo dibujado en el espacio discreto

Estoy tratando de dibujar un círculo en el espacio discreto (imagen real de píxeles de espacio). Tengo el centro (x,y) y radio r de un círculo que se supone que debo dibujar. La manera en la que extraigo de este círculo es la siguiente:

Desde el centro de la posición (x,y), tengo un bucle for más ángulos $\theta \in \{0,2\pi\}$. Digamos que el ángulo se incrementa por $\Delta\theta$ en cada iteración. En cada iteración, calculo que un x-desviación y un y-la desviación, $$\Delta x = r cos(\theta)\\ \Delta y = r sin(\theta).$$ El punto sobre la circunferencia del círculo se calcula como $$x' = \text{round}(x + \Delta x)\\ y'= \text{round}(y + \Delta y).$$

Esto le da una ubicación de $(x', y')$ en un espacio diferenciado en el que me puede el color de un píxel. ¿Cómo puedo determinar para un radio dado, ¿cuál es el mínimo número discreto de "píxeles" voy a tener a lo largo de la circunferencia.

En otras palabras, digamos que si tengo un radio de 10, entonces cuántos puntos discretos que tengo a lo largo del límite del círculo? Es este problema bien definido? Sé que hay un error aquí de lo que se compone de una discreta de la circunferencia. Considero que todos los conectados píxel a ser una circunferencia punto.

7voto

Ape-inago Puntos 216

Usted probablemente debe ser el uso de Bresenham Círculo del Algoritmo?

La "distancia" entre los píxeles adyacentes es 1 o $\sqrt{2}$, es decir, dos píxeles adyacentes, o bien comparten una fila o columna, o que están en diagonal. Esto limita la cantidad de la circunferencia consecutivos píxeles puede consumir. Por lo que el número de píxeles necesarios, $x$, para completar la circunferencia de los círculos con un radio de $r$ píxeles está delimitado $\sqrt{2} \pi r \leq x \leq 2 \pi r$, o aproximadamente el $4.443 \times r \leq x \leq 6.283\times r$. Esto da una primera aproximación, por la que se comprueba la posterior estimación.

Para obtener más precisión vemos que, por simetría, sólo los píxeles dibujado en el primer octante (es decir, $\pi/4$) necesitan ser calculadas; el resto se puede encontrar mediante el uso de la misma desplazamientos, pero en diferentes direcciones. Con cada uno de los píxeles consecutivos en el primer octante progresando hacia arriba, hay, al menos, $\lfloor r \sin(\pi/4)\rfloor$ píxeles. Multiplica esto por 8, y se obtiene aproximadamente el $5.657\times r$, que está dentro de los límites anteriores.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X