Manual
“Trazo de círculos”
En el proyecto creado en NetBeans TrazarCirculo, se crearon cuatro clases, las cuales son:
* HerramientasLineas.java
* LienzoDibujo.java
* PanelLienzoDibujo.java
* Main.java
En la clase HerramientasLineas.java viene la lógica del programa, y a continuación se detallara sobre el código de la misma.
/*Declaración de librerias*/import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
/*Declaración de clase principal*/
public class HerramientasLineas {
/*Declaración de variables*/
private static BufferedImage imagen;
private static WritableRaster raster;
private static int alto;
private static int ancho;
/*El método setMedidas para colocar lasmedidias de la imagen y obtener un raster, que es un panel segmentado*/
public static void setMedidas (int nuevoAlto, int nuevoAncho) {
alto = nuevoAlto;
ancho = nuevoAncho;
imagen = new BufferedImage (alto, ancho, BufferedImage.TYPE_INT_RGB);
raster = imagen.getRaster();
}
/*Se crea el método directo que como parametros espera recibir valoresenteros de las variables xc (x de origen), yc (y de origen) y r (radio)*/
public static BufferedImage directo(int xc, int yc, int r )
{
/*Se declaran variables locales que se van a emplear para realizar las operaciones que se muestra en este mismo método*/
int x; double y1, y2;
for (x = xc-r; x <= xc+r; x+=2)
{
/*Este ciclo for se emplea para comenzar a pintar losprimeros puntos realizando las operaciones matematicas*/
y1 = yc + Math.sqrt ((float)r *r - (x-xc)* (x-xc));
y2 = yc - Math.sqrt ((float)r *r - (x-xc)* (x-xc));
putPixel(x,y1,0);
putPixel(x,y2,0);
}
/*Se asegura que se nos devuelva la imagen*/
return imagen;
}
/*Se crea el método incremental que va a tener como parametros xc, yc y r queson de tipo entero*/
public static BufferedImage incremental(int xc, int yc, int r)
{
/*Se crean variables locales que sera utilizadas por este método para hacer operaciones pertinentes de mismo*/
float dt,cc,cs,x,y,t; int tx,ty;
dt=(float)1/r;
cc=(float)Math.cos(dt); cs=(float)Math.sin(dt);
x=0; y=r;
while(y>=Math.abs(x))
{
/*Se imprimenlos pixels con redondeo después de haber verificado si y es mayor o igual al valor absoluto de x*/
tx=Math.round(x);
ty=Math.round(y);
putPixel(xc+tx,yc+ty,0);
putPixel(xc-tx,yc+ty,0);
putPixel(xc+tx,yc-ty,0);
putPixel(xc-tx,yc-ty,0);
putPixel(xc+ty,yc+tx,0);
putPixel(xc+ty,yc-tx,0);putPixel(xc-ty,yc+tx,0);
putPixel(xc-ty,yc-tx,0);
t=x;
x=x*cc-y*cs;
y=y*cc+t*cs;
} /*Nos regresa la imagen*/
return imagen; }
/*Se crea el método Bresenham con tres parámetros xc, yc y r*/
public static BufferedImage bresenham(int xc, int yc, int r)
{
/*Se crean variables locales para que sean empleadas en este método*/
int p,x,y;x=0; y=r;
p=(int) ((float) 5 / 4 - r);
/*Se crea una condicion de tipo while par air hacienda validaciones*/
while(y>x)
{
putPixel(xc+x,yc+y,0);
putPixel(xc-x,yc+y,0);
putPixel(xc+x,yc-y,0);
putPixel(xc-x,yc-y,0);
putPixel(xc+y,yc+x,0);
putPixel(xc+y,yc-x,0);
putPixel(xc-y,yc+x,0);putPixel(xc-y,yc-x,0);
if(p<0)
p+=2*x+3;
else
{
p+=2*(x-y)+5; y--;
}
x++;
}
/*Regresa la imagen*/
return imagen;
}
/*Método putPixel hace que se vayan pintando los pixels*/
public static void putPixel(int x, double y,int num){
int [] colors = {
255,255,255,255
};...
Regístrate para leer el documento completo.