Beruflich Dokumente
Kultur Dokumente
Docente
ANGEL VARON
2015
Desratizacin circunferencia.
La desratizacin de circunferencias o crculos es posible trabajar un slo segmento de
la circunferencia y se obtienen las dems por simetra. Igualmente se dispone de algoritmos
DDA y de Bressenham para el dibujo de circunferencias.
Estas ecuaciones sern las que ocuparemos para calcular cada punto (x,y) del crculo, donde
el r ser obviamente el radio de crculo y q ser el ngulo que forma el radio con la parte
positiva del eje x. En forma grfica sera as:
El ngulo deber estar en radianes ya que las funciones de seno y coseno que incluye Java,
trabajan con los ngulos en radianes. La frmula para transformar grados a radianes es la
siguiente:
Entonces para dibujar el crculo de un radio determinado, solamente tenemos que hacer un ciclo
desde 0 hasta 360, pero con incrementos pequeos, calcular cada punto con las ecuaciones
en coordenadas polares e ir dibujando cada punto. El ciclo en vez de ir de 0 a 360 (ngulos en
grados) ir de 0 a 6.28 (360*3.14/180=6.28) ya que el ngulo debe estar en radianes.
Como dijimos el ciclo de 0 a 6.28 debe hacerse con incrementos pequeos, no contando de uno
en uno, ya que para un crculo de radio muy grande, podran aparecer huecos entre un punto y
el siguiente, por lo tanto tenemos que usar un incremento fraccionario. El valor 0.005 produce
buenos resultados. Dibujar el
Crculo punto a punto es una tarea un poco lenta, debido a que se debe calcular en cada punto
el seno y el coseno del ngulo, y estas funcionas son muy lentas. Para solucionar esto se
pueden crear tablas predefinidas o precalculadas.
circunferencia coincide con el centro geomtrico de cualquier polgono regular. Para esto,
necesitamos usar algunas funciones trigonomtricas, junto con el ngulo ya calculado. El
paso principal es averiguar la coordenada del siguiente vrtice de nuestro polgono.
Usaremos las siguientes frmulas:
x i = cx + r * cos( i* )
y i = cy + r * sen( i* )
donde:
i = 0,1,2,...,N-1,
r es el radio de la circunferencia, y
c = (cx, cy) es la coordenada del centro geomtrico de la circunferencia y del polgono.
Al agregar el centro a nuestra frmula, conseguimos mover el centro geomtrico
del origen (0,0) al que nosotros deseemos.
} else
if (dy != 0)
{
float m = (float) dx / (float) dy;
float b = x0 - m*y0;
if(dy<0)
dy = -1;
else
dy = 1;
while (y0 != y1)
{
y0 += dy;
x0 = Math.round(m * y0 + b);
g.drawLine( x0, y0, x0, y0);
}
}
}//fin for
if (this.Lados>0)
g.drawLine( vertices[this.Lados -1].getX(), vertices[this.Lados -1].getY(), vertices[0].getX(),
vertices[0].getY());
}