martes, 13 de septiembre de 2011

computacion grafica

1.     DIBUJAR UNA LINEA Y CALCULAR LA DISTANCIA Y EL PUNTO MEDIO

                                 ·        DISEÑO

                                                                              Ejecución
 CODIGO FUENTE
package applabgraficolinea;
public class Formulario extends javax.swing.JFrame {
    /** Creates new form Formulario */
    public Formulario() {
        initComponents();
    }
@SuppressWarnings("unchecked")
private void btnGraficarActionPerformed(java.awt.event.ActionEvent evt) {                                           
       //Leer cajas de texto a las variables instancia.
        int xo= Integer.parseInt(this.txtXo.getText());
        int yo= Integer.parseInt(this.txtYo.getText());
        int x1= Integer.parseInt(this.txtX1.getText());
        int y1= Integer.parseInt(this.txtY1.getText());
lienzo1.setXo(xo);
        lienzo1.setYo(yo);
        lienzo1.setX1(x1);
        lienzo1.setY1(y1);
        lienzo1.DibujarLinea();
Calculos C = new Calculos();
        String d = String.valueOf(C.DistanciaPuntos(xo, yo, x1, y1));
        this.txtDistancia.setText(d);
        String p = String.valueOf(C.PuntoMedio());
        this.txtPuntoMedio.setText(p);
}
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Formulario().setVisible(true);
            }
        });
    }
// Variables declaration - do not modify                    
    private javax.swing.JButton btnGraficar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JPanel jPanel1;
    private applabgraficolinea.Lienzo lienzo1;
    private javax.swing.JTextField txtDistancia;
    private javax.swing.JTextField txtPuntoMedio;
    private javax.swing.JTextField txtX1;
    private javax.swing.JTextField txtXo;
    private javax.swing.JTextField txtY1;
    private javax.swing.JTextField txtYo;
}
Calculos.java
package applabgraficolinea;
public class Calculos
{
    private double distancia;

    public Calculos()
    {
        this.distancia =0;
    }
    public double DistanciaPuntos(int Xo, int Yo, int X1, int Y1)
    {
        this.distancia = Math.sqrt((Math.pow((X1-Xo),2)) +(Math.pow((Y1-Yo), 2)));
        return this.distancia;
    }
    public double PuntoMedio()
    {
        double pm = this.distancia / 2;
        return pm;
    }

}
Lienzo.java
package applabgraficolinea;

import java.awt.*;
public class Lienzo extends javax.swing.JPanel
{
    //Implementando variables de instancia.
    private int Xo, Yo;
    private int X1,Y1;
   //Implementar Propiedades de escritura.
    public void setX1(int X1) {
        this.X1 = X1;
    }
public void setXo(int Xo) {
        this.Xo = Xo;
    }
    public void setY1(int Y1) {
        this.Y1 = Y1;
    }
    public void setYo(int Yo) {
        this.Yo = Yo;
    }
      public Lienzo() {
        initComponents();
    }
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        //Algoritmo DDA mejorado
        int dx = X1 - Xo;
        int dy = Y1 - Yo;
        g.setColor(Color.blue);
       if (Math.abs(dx) > Math.abs(dy))
        {
            float m = (float) dy / (float) dx;
            float b = Yo - m * Xo;
            if(dx<0)
                dx =  -1;
            else
                dx =  1;
            while (Xo != X1)
            {
                Xo += dx;
                Yo = Math.round(m*Xo + b);
                g.drawLine( Xo, Yo, Xo, Yo);
            }
        } else
        if (dy != 0)
        {
            float m = (float) dx / (float) dy;
            float b = Xo - m*Yo;
            if(dy<0)
                dy =  -1;
            else
                dy =  1;
            while (Yo != Y1)
            {
                Yo += dy;
                Xo = Math.round(m * Yo + b);
                g.drawLine( Xo, Yo, Xo, Yo);
            }
        }
    }
    public void DibujarLinea()
    {
        repaint();
    }
   
    @SuppressWarnings("unchecked")
Realizar un ejercicio que me permita ingresar las coordenadas que  me dibuje una línea utilizando y frame con clase.

                           Pantalla Principal.java

Codigo Fuente
package labgraficacion01;
public class Principal extends javax.swing.JFrame {
   /** Creates new form Principal */
    public Principal() {
        initComponents();
    }
@SuppressWarnings("unchecked")
private void btnGraficarActionPerformed(java.awt.event.ActionEvent evt) {                                           
      //Leer cajas de texto
        int xo = Integer.parseInt(this.txtXo.getText());
        int yo = Integer.parseInt(this.txtYo.getText());
        int x1 = Integer.parseInt(this.txtX1.getText());
        int y1 = Integer.parseInt(this.txtY1.getText());
//Enviar valores a las variables instancia
        lienzo1.setXo(xo);
        lienzo1.setYo(yo);
        lienzo1.setX1(x1);
        lienzo1.setY1(y1);
  //Llamar al metodo Paint
        lienzo1.DibujarLinea();
    }                          
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }
// Variables declaration - do not modify                    
    private javax.swing.JButton btnGraficar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private labgraficacion01.Lienzo lienzo1;
    private javax.swing.JTextField txtX1;
    private javax.swing.JTextField txtXo;
    private javax.swing.JTextField txtY1;
    private javax.swing.JTextField txtYo;
}
·         Pantalla del Lienzo. Java

·        CODIGO FUENTE
package labgraficacion01;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel {
 //Variables Instancia
   private int Xo,Yo;
   private int X1,Y1;
//Propiedades Escritura
    public void setX1(int X1) {
        this.X1 = X1;
    }
    public void setXo(int Xo) {
        this.Xo = Xo;
    }
    public void setY1(int Y1) {
        this.Y1 = Y1;
    }
public void setYo(int Yo) {
        this.Yo = Yo;
    }
public Lienzo() {
        initComponents();
    }
@SuppressWarnings("unchecked")
@Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.blue);
        g.drawLine(this.Xo,this.Yo, this.X1, this.Y1);
    }
public void DibujarLinea()
    {          
        repaint();
    }}
·         Pantalla de ejecución

Realizar un ejercicio con un formulario Apple me muestre la ejecución por el navegador web al momento de dar clic en el formulario la línea  me grafique
·        Código HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div>Programacion Grafica en la web con applet de Java</div>
  </body>
</html>
<applet code="aplicacionwebdibujandolinea.AppletForm" archive="AppletForm.jar" width="270" height="350">
    </applet>
·        Appletform.java

·        Código Apple
package aplicacionwebdibujandolinea;
public class AppletForm extends javax.swing.JApplet {
    /** Initializes the applet AppletForm */
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
}
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }    }
@SuppressWarnings("unchecked")
private void btngraficarActionPerformed(java.awt.event.ActionEvent evt) {                                           
      int ancho=Integer.parseInt(this.txtancho.getText());
      lienzo1.setAncho(ancho);
      lienzo1.DibujarLineaOrtogonal();
    }                                
// Variables declaration - do not modify                    
    private javax.swing.JButton btngraficar;
    private javax.swing.JLabel jLabel1;
    private aplicacionwebdibujandolinea.Lienzo lienzo1;
    private javax.swing.JTextField txtancho;
    // End of variables declaration                  
}
                                          
                                            ·        Lienzo.java

                   ·        CODIGO
package aplicacionwebdibujandolinea;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel
{
private int X0,Y0;
private int ancho;
    public void setAncho(int ancho) {
        this.ancho = ancho;
    }
    public Lienzo() {
        initComponents();
this.X0=0;
        this.Y0=0;
      this.ancho=0;
    }
@SuppressWarnings("unchecked")
private void MoussePresionar(java.awt.event.MouseEvent evt) {                                
      this.X0=evt.getX();
      this.Y0=evt.getY();
    }
@Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.red);
        g.drawLine(X0, X0, X0, ancho);
        Procesamiento D=new Procesamiento();
        String pm ="Punto medio =" +String.valueOf(D.PuntoMedio(ancho));
        g.drawString(pm, 50, 110);
        g.drawString(D.CoordenadaPunto2(X0, Y0, ancho),50,130);
}                               
public void DibujarLineaOrtogonal()
{
    repaint();
}
}
            ·        Código
package aplicacionwebdibujandolinea;
public class Procesamiento
{
public double PuntoMedio(int ancho)
{
    return ancho/2;
}
public String CoordenadaPunto2(int X0,int Y0,int ancho)
{
int Y1=Y0+ancho;
String cadena="("+String.valueOf(X0)+","+String.valueOf(Y1)+")";
return cadena;
}}
                                                ·         Pantalla de ejecución