Recent Posts
Java | 18 sec ago
None | 40 sec ago
None | 1 min ago
None | 1 min ago
C# | 1 min ago
None | 1 min ago
None | 1 min ago
XML | 1 min ago
Python | 1 min ago
ASP | 2 min ago
Sitereport
Find cool info about any domain on the internet?
visit sitereport
Free Subdomains
Want a pastebin.com sub-domain for your community?
learn more...
What is pastebin?
Pastebin is a website that hosts all your text & code on dedicated servers for easy sharing.
learn more...
Learn a little bit about the new Pastebin.com on our help page. hide message
By Anonymous on the 9th of Feb 2010 10:37:04 PM Download | Raw | Embed | Report
  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.awt.Graphics2D;
  4. import java.awt.geom.Rectangle2D;
  5. import java.text.DecimalFormat;
  6.  
  7. import javax.swing.JPanel;
  8.  
  9. /**
  10.  *
  11.  * Esta clase se encarga de
  12.  * dibujar las graficas en
  13.  * el plano, para ello utiliza
  14.  * las librerias de awt
  15.  *
  16.  *
  17.  * @author Byron Chaman
  18.  *
  19.  */
  20. public class grafica extends JPanel{
  21.  
  22.         /**
  23.          *
  24.          */
  25.         private static final long serialVersionUID = 1L;
  26.         private static Rectangle2D plano;
  27.         public  int Idss = 10;
  28.         public  int Vp = 10;
  29.         public info datos = null;
  30.         public int n_lineas = 10;
  31.         DecimalFormat decimal = new DecimalFormat("######.##");
  32.  
  33.         /**
  34.          *
  35.          *  Crea un contenedor en el
  36.          *  cual se dibuja todo, este
  37.          *  va enlazado al jpanel.
  38.          *  
  39.          */
  40.        
  41.         public void paintComponent(Graphics G){
  42.                 super.paintComponents(G);
  43.                 areaPlano(G);
  44.         }
  45.        
  46.         /**
  47.          *
  48.          * El unico objetivo de
  49.          * este constructor es
  50.          * enlazar la información
  51.          * que se envia en el nodo
  52.          * ya que esta clase extiende
  53.          * de JPanel teniendo sus propios
  54.          * constructores
  55.          *
  56.          * @param data Recibe como parametro un nodo
  57.          * de la clase info.
  58.          *
  59.          */
  60.         public grafica (info data){
  61.                 datos = data;
  62.         }
  63.         /**
  64.          *
  65.          * Creando el plano
  66.          *
  67.          * Esta es la función principal
  68.          * de todo el programa, aquí se
  69.          * hacen los calculos de la
  70.          * escala y el ploteo de la
  71.          * gráfica.
  72.          *
  73.          * */
  74.         public void areaPlano (Graphics g) {
  75.                 int alto = 20;
  76.                 int largo = 20;
  77.                
  78.                
  79.                 plano = new Rectangle2D.Double ();
  80.                 plano.setRect(alto, largo, 500, 500);
  81.                
  82.             Graphics2D g2D;
  83.             g2D = (Graphics2D) g;
  84.          // dibujar rectángulo 2D en rojo
  85.             g2D.setPaint( Color.white );                  
  86.             //g2D.setStroke( new BasicStroke( 10.0f ) );
  87.             g2D.fill( new Rectangle2D.Double(alto, largo, 500, 500 ) );
  88.             g2D.setPaint(Color.black);
  89.             g2D.draw( new Rectangle2D.Double(alto, largo, 500, 500 ) );
  90.             //g2D.clearRect(0, 0, 1, 1);
  91.             g2D.draw(plano);       
  92.             g2D.setColor (Color.blue);
  93.             g2D.drawLine(alto + 250, largo , largo + 250, 500 + alto);
  94.             g2D.drawLine(largo, alto + 250, largo + 500, alto + 250);
  95.            
  96.            
  97.             int intervalo = (int) (250/(0.5*n_lineas)); //Separación entre linea y linea
  98.             float mayor;
  99.             if(Math.abs(datos.dar_Idss())<Math.abs(datos.dar_Vp()))
  100.                 mayor = Math.abs(datos.dar_Vp());
  101.             else
  102.                 mayor = Math.abs(datos.dar_Idss());
  103.             float inter = (mayor*2)/n_lineas;
  104.             mayor = mayor*-1;
  105.             //Dibujando escala sobre y
  106.             int px1 = largo + 245;
  107.             int px2 = largo + 255;
  108.             for(int i=alto+500;i>alto;i=i-intervalo){
  109.                 g2D.drawLine(px1, i, px2, i);
  110.                 g2D.drawString(decimal.format(mayor)+"",px2,i);
  111.                 mayor = mayor + inter;
  112.             }
  113.            
  114.             //Dibujando escala sobre x
  115.             int py1 = alto + 245;
  116.             int py2 = alto + 255;
  117.             for(int i=largo+501; i>largo; i=i-intervalo){
  118.                 g2D.drawLine(i, py1, i, py2);
  119.                 if(i!=largo+251)
  120.                         if(i!=largo+501)
  121.                                 g2D.drawString(decimal.format(mayor)+"",i,py1);
  122.                 mayor = mayor - inter;
  123.             }
  124.             mayor = (mayor + inter)*-1; //convirtiendo mayor en el dato real
  125.            
  126.            
  127.             //Ploteando
  128.             int pix = 250;
  129.             g2D.setColor(Color.red);
  130.             float id = datos.dar_Idss();
  131.             float n = id/pix;
  132.             int Plotx=0;
  133.                 String cadena = Float.toString(datos.dar_Vp());
  134.             for(int i = 0; i<pix+1; i++){
  135.                 try{
  136.                         float vg;
  137.                         if(cadena.charAt(0)=='-')
  138.                                 vg = (float) ( (1 - (Math.sqrt( id/datos.dar_Idss() ))  )*(datos.dar_Vp()*-1) );
  139.                         else
  140.                                 vg = (float) ( (1 - (Math.sqrt( id/datos.dar_Idss() ))  )*datos.dar_Vp() );
  141.                         if(Float.isNaN(vg))
  142.                                 vg = datos.dar_Vp();
  143.                         System.out.println("vg="+vg+"  id="+id);
  144.                         int plotx= 0;
  145.                         //Creando la escala
  146.                         int pres = 250; //Presición de la gráfica, tamaño de un cuadrante
  147.                         float a  = mayor/pres;
  148.                         float tmp = a;
  149.                         int b  = 1;
  150.                         while(a<vg){
  151.                                 plotx = b;
  152.                                 a=a+tmp;
  153.                                 b++;
  154.                         }
  155.                         if(cadena.charAt(0)=='-'){
  156.                                 if(Math.abs(datos.dar_Idss())<Math.abs(datos.dar_Vp())){
  157.                                         float div = (Math.abs(datos.dar_Idss())/Math.abs(datos.dar_Vp()));
  158.                                         int extra = 250-(int)(div*250);
  159.                                         //System.out.print("\n extra=" + extra);
  160.                                         g2D.drawLine( (-Plotx+largo+250), (int)((i*div)+alto+extra),  (-plotx+largo+250), (int)((i*div)+1+alto+extra));
  161.                                 }
  162.                                 else{
  163.                                         g2D.drawLine( (-Plotx+largo+250),  i+alto,  (-plotx+largo+250), i+1+alto);
  164.                                 }
  165.                                 if(datos.dar_Vg()!=0){
  166.                                         if(Math.abs(vg) >= Math.abs(datos.dar_Vg())){
  167.                                                 punto_q(-Plotx+largo+250, g2D);
  168.                                                 datos.cambiar_Vg(0);
  169.                                         }
  170.                                 }
  171.                                
  172.                         }
  173.                         else{
  174.                                 if(datos.dar_Idss()<datos.dar_Vp()){
  175.                                         float div = (datos.dar_Idss()/datos.dar_Vp());
  176.                                         int extra = 250-(int)(div*250);
  177.                                         //System.out.print("\n extra=" + extra);
  178.                                         g2D.drawLine( Plotx+largo+250,  (int)((i*div)+alto+extra),  plotx+largo+250, (int)((i*div)+1+alto+extra));
  179.                                 }
  180.                                 else
  181.                                         g2D.drawLine( Plotx+largo+250,  i+alto,  plotx+largo+250, i+1+alto);
  182.                                 if(datos.dar_Vg()!=0){
  183.                                         if(vg >= datos.dar_Vg()){
  184.                                                 punto_q(Plotx+largo+250, g2D);
  185.                                                 datos.cambiar_Vg(0);
  186.                                         }
  187.                                 }
  188.                                
  189.                         }
  190.                         if(plotx>0)
  191.                         Plotx = plotx;
  192.                         //Graficando punto Q
  193.                        
  194.                        
  195.                 }
  196.                 catch(Exception e){                    
  197.                 }
  198.                 id = id - n;
  199.             }
  200.            
  201.             System.out.println("\n \n");
  202.         }
  203.        
  204.         void punto_q(int vgg, Graphics2D g2d){
  205.                 g2d.setColor(Color.yellow);
  206.                 g2d.drawLine(vgg, 20, vgg, 270);
  207.                 g2d.setColor(Color.red);
  208.                                
  209.         }
  210.  
  211. }
Submit a correction or amendment below. Make A New Post
To highlight particular lines, prefix each line with @h@
Syntax highlighting:
Post expiration:
Post exposure:
Name / Title:
Email: