Poligono


PRIMITIVA GRAFICA LINEA
INTRODUCCION







ALGORITMO GRAFICO POLIGONO (JAVA)

public void paint(Graphics g) {
        super.paint(g);
        for(int t=1;t<=this.Lados-1;t++)
        {
            int dx=0,dy=0;
            int x1 = vertices[t].getX();
            int x0 = vertices[t-1].getX();
            int y1 = vertices[t].getY();
            int y0 = vertices[t-1].getY();
           
            dx = x1 - x0;
            dy = y1 - y0;

             if (Math.abs(dx) > Math.abs(dy))
            {        
                float m = (float) dy / (float) dx;
                float b = y0 - m * x0;
                if(dx<0 o:p="o:p">
                    dx =  -1;
                else
                    dx =  1;
                while (x0 != x1)
                {
                    x0 += dx;
                    y0 = Math.round(m*x0 + b);
                    g.drawLine( x0, y0, x0, y0);
                }
            } else
            if (dy != 0)
            {                             
                float m = (float) dx / (float) dy;     
                float b = x0 - m*y0;
                if(dy<0 o:p="o:p">
                    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());   
    }
       public void DibujarPoligono()
    {
        Poligonos();
        repaint();
    }



EJERCICIO

Desarrollar un ejercicio en NetBeans java con la primitiva grafica Poligono.
PASO1: Crear un nuevo proyecto, abriremos netbeans y le daremos en archivo luego la opción nuevo proyecto, después se desplegara esta ventana y escogemos la categoría java y a la derecha de la misma ventana escogemos la opción Java class Library y luego presionamos next o siguiente.





Ahora le daremos un nombre a nuestro proyecto y será Polígono….





PASO 2: Ahora crearemos un paquete, le daremos clic derecho sobre la opción con el nombre (default package) luego New y después  escogemos la opción Java Package.






Ahora se desplegara esta ventana debes poner un nombre en este caso será (graficarpoligono) y le damos Finish.





Ahora de la misma forma crearemos un JFRAME daremos click derecho sobre el paquete graficarpoligono luego la opcion new y después la opción Jframe form.





Despues se desplegara esta ventana deberemos poner un nombre y sera PAINT  lla q esta sera la que se ejecutara cuando mandemos a copilar la aplicación.




Ahora igual que creamos el jframe crearemos un JPANEL seguimos los mismos pasos pero ahora escogeremos la opción Jpanel y después le daremos un nombre q será AreaDibujo







Despues también crearemos una clase q se llamara Punto.

Si siguieron los pasos correctamente el proyecto quedara de esta forma:

PASO 3: Ahora nos ubicaremos dentro del JPANEL le damos click derecho sobre AreaDibujo (Jpanel)  y damos click sobre la opción Open donde escribiremos la siguiente programación:






Luego escogemos la pestaña source y aquí es donde meteremos el algoritmo grafico





Primero importaremos la clase punto:
package graficarpoligono;
  import graficarpoligono.Punto;
import java.awt.Graphics;

Ahora declaramos un arreglo y las variables para el radio y el número de lados:
public class AreaDibujo extends javax.swing.JPanel {
 private Punto[] vertices;
    private int X;
    private int Y;
    private int Radio;
    private int Lados;
Aqui generamos las propiedades de lestura de las variables que creamos:
    public void setRadio(int Radio) {
        this.Radio = Radio;
    }
    public void setLados(int Lados) {
        this.Lados = Lados;
    }
Aquí inicializamos las variables en cero:
    public AreaDibujo() {
        initComponents();
        this.X=0;
        this.Y=0;
        this.Lados=0;
        this.Radio=0;
    }
   
Bien ahora viene la parte más importante de este ejercicio q es donde pondremos el ALGORITMO DE LA PRIMITIVA POLIGONO:

     @Override
    public void paint(Graphics g) {
        super.paint(g);
        for(int t=1;t<=this.Lados-1;t++)
        {
            int dx=0,dy=0;
            int x1 = vertices[t].getX();
            int x0 = vertices[t-1].getX();
            int y1 = vertices[t].getY();
            int y0 = vertices[t-1].getY();
           
            dx = x1 - x0;
            dy = y1 - y0;

             if (Math.abs(dx) > Math.abs(dy))
            {        
                float m = (float) dy / (float) dx;
                float b = y0 - m * x0;
                if(dx<0 o:p="o:p">
                    dx =  -1;
                else
                    dx =  1;
                while (x0 != x1)
                {
                    x0 += dx;
                    y0 = Math.round(m*x0 + b);
                    g.drawLine( x0, y0, x0, y0);
                }
            } else
            if (dy != 0)
            {                             
                float m = (float) dx / (float) dy;     
                float b = x0 - m*y0;
                if(dy<0 o:p="o:p">
                    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());   
    }
   
    public void DibujarPoligono()
    {
        Poligonos();
        repaint();
    }
   
    private void Poligonos()
    {
        double alfa;
        int a, b;
        vertices = new Punto[this.Lados];
        alfa = 2 * Math.PI / this.Lados;
       
        for(int i=0;i<=this.Lados-1;i++)
        {
           a= this.X + (int) (this.Radio * Math.cos((i - 1) * alfa));
           b= this.Y + (int) (this.Radio * Math.sin((i - 1) * alfa));
           vertices[i]= new Punto(a,b);
        }
    }
Este codigo se genera automatcamente cuando se genera o crea el JPANEL….
@SuppressWarnings("unchecked")
Luego de esto crearemos un evento, esto lo haremos ubicándonos en la pestaña design  q se encuentra en la parte superior luego luego daremos click derecho sobre el panel q es la zona anaranjada luego escogemos la opcion Events y después mouse y despues el evento  (formMousePressed), Luego de eso se generara un codigo dentro de el pondremos el siguiente codigo:






Esto es para capturar la coordenada del punto centro donde se dibujara el poligono…

private void formMousePressed(java.awt.event.MouseEvent evt) {                                 
        // TODO add your handling code here:
         this.X = evt.getX();
    this.Y = evt.getY();
    }                 
}


PASO 4: Ahora dentro de la clase punto en la pestaña source pondremos el siguiente codigo…………………………………………….




  

PASO 5: Ahora diseñaremos el formulario (Jframe)…


Aquí hemos utilizado:
·       Dos caja de texto
·       Dos label
·       Un botón

Ahora arrastraremos con el mouse el Jpanel de nombre AreaDibujo que se encuentra en la parte izquierda hasta el centro del formulario que diseñamos anteriormente ósea hasta el Jframe………………………..





PASO 6: Ahora en el mismo formulario entraremos a la pestaña source para escribir el siguiente codigo:

·       Ahora solo fata dar dole click en el boton dibujar y pondremos el siguiente codigo, aquí llamamos al metodo (dibujarpoligono) que se encuentra en el Jpanel (AreaDibujo) y capturamos el valor de la caja de texto(num_lados) y el de radio para enviarlas a las variables q se declararon en el Jpanel…………………………………………….




PASO 7:Por ultimo mandamos a ejecutar la aplicación para verificar que funcione correctamente, aquí solamente daremos un click en cualquier parte del formulario para definir en qué ubicación se dibujara  el poligono y también hay q ingresar el numero de lados y el tamaño del radio del poligono……………





Como podemos ver el poligono se dibujó correctamente espero que les haiga servido este manual se agradece sus comentarios.


No hay comentarios:

Publicar un comentario