lunes, 8 de junio de 2009

DINAMICA


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Administrador
*/
import javax.swing.JApplet;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JOptionPane;

/**
*
* @author program
*/
public class Dinamica extends JApplet {

/**
* Initialization method that will be called after the applet is loaded
* into the browser.
*/
public void init() {
// TODO start asynchronous download of heavy resources
}

public void paint(Graphics g){
String aux=JOptionPane.showInputDialog(null,"VALOR DE LA BASE","BASE",JOptionPane.PLAIN_MESSAGE);
double x= Double.parseDouble(aux);
g.drawLine(30,150,(int)x+30,150 );
String aux2=JOptionPane.showInputDialog(null,"VALOR DE LA ALTURA","ALTURA",JOptionPane.DEFAULT_OPTION);
double y =Double.parseDouble(aux2);
g.drawLine((int)x+30, 150,(int)x+30,150-(int)y);
g.drawLine(30, 150, (int)x+30, 150-(int)y);

double angulo;
double tan=y/x;
angulo=Math.atan(tan);
angulo=Math.toDegrees(angulo);

String aux8=JOptionPane.showInputDialog(null,"DISTANCIA DE INICIO","DISTANCIA",JOptionPane.DEFAULT_OPTION);
double ab=Double.parseDouble(aux8);
double c=ab*Math.cos(angulo*Math.PI/180);
double xo=30+c;
double l=ab*Math.sin(angulo*Math.PI/180);
double yo=150-l;
double d=20*Math.cos(angulo*Math.PI/180);
double xo1=xo+d;
double m=(c+d)*Math.tan(angulo*Math.PI/180);
double yo1=150-m;
g.setColor(Color.darkGray);
g.drawLine((int)xo,(int)yo,(int)xo1,(int)yo1);
double dx=10*Math.sin(angulo*Math.PI/180);
double dy=10*Math.cos(angulo*Math.PI/180);
double xo2=xo1-dx;
double yo2=yo1-dy;
g.drawLine((int)xo1,(int)yo1,(int)xo2,(int)yo2);
g.drawLine((int)xo2,(int)yo2,(int)(xo-dx),(int)(yo-dy));
g.drawLine((int)(xo-dx),(int)(yo-dy),(int)xo,(int)yo);

String aux3=JOptionPane.showInputDialog(null,"VALOR DE LA FUERZA","FUERZA",JOptionPane.DEFAULT_OPTION);
double fuerza=Double.parseDouble(aux3);
String aux4=JOptionPane.showInputDialog(null,"VALOR DE LA MASA","MASA",JOptionPane.DEFAULT_OPTION);
double masa=Double.parseDouble(aux4);
String aux5=JOptionPane.showInputDialog(null,"VALOR DEL COEFICIENTE DE ROZAMIENTO","COEFICIENTE DE ROZAMIENTO",JOptionPane.DEFAULT_OPTION);
double miu=Double.parseDouble(aux5);
String aux6=JOptionPane.showInputDialog(null,"VALOR DEL TIEMPO","TIEMPO",JOptionPane.DEFAULT_OPTION);
double tiempo=Double.parseDouble(aux6);

double gravedad=9.8;
double aceleracion;
aceleracion=(fuerza/masa)-(gravedad*((miu*Math.cos(angulo*Math.PI/180))+Math.sin(angulo*Math.PI/180)));
double desplazamiento= aceleracion*0.5*tiempo*tiempo;
double xn=desplazamiento*Math.cos(angulo*Math.PI/180);
double yn=desplazamiento*Math.sin(angulo*Math.PI/180);
g.setColor(Color.BLUE);
g.drawLine((int)(xo+xn),(int)(yo-yn), (int)(xo1+xn), (int)(yo1-yn));
g.drawLine((int)(xo1+xn),(int)(yo1-yn),(int)(xo2+xn),(int)(yo2-yn) );
g.drawLine((int)(xo2+xn),(int)(yo2-yn),(int)(xo+xn-dx),(int)(yo-yn-dy) );
g.drawLine((int)(xo+xn-dx),(int)(yo-yn-dy),(int)(xo+xn),(int)(yo-yn) );


g.setColor(Color.MAGENTA);
double yb=5*Math.sin((angulo)*Math.PI/180);
double xb=5*Math.cos((angulo)*Math.PI/180);
double frx=0.1*miu*masa*gravedad*Math.cos(angulo*Math.PI/180);
double fry=0.1*miu*masa*gravedad*Math.sin(angulo*Math.PI/180);
g.drawLine((int)(xo+xn-xb+(0.5*d)),(int)(yo-yn-yb-dx),(int)(xo+xn-xb+(0.5*d)-frx),(int)(yo-yn-yb-dx+fry) );
g.drawString("µ",(int)(xo+xn-xb+(0.5*d)-frx-15),(int)(yo-yn-yb-dx+fry));

g.setColor(Color.ORANGE);
double ny=0.1*masa*gravedad*Math.cos(angulo*Math.PI/180);
double nx=0.1*masa*gravedad*Math.sin(angulo*Math.PI/180);
g.drawLine((int)(xo+xn-xb+(0.5*d)),(int)(yo-yn-yb-dx),(int)(xo+xn-xb+(0.5*d)-nx),(int)(yo-yn-yb-dx-ny));
g.drawString("N",(int)(xo+xn-xb+(0.5*d)-nx-20),(int)(yo-yn-yb-dx-ny));
g.setColor(Color.PINK);
double fx=0.1*fuerza*Math.cos(angulo*Math.PI/180);
double fy=0.1*fuerza*Math.sin(angulo*Math.PI/180);
g.drawLine((int)(xo+xn-xb+(0.5*d)),(int)(yo-yn-yb-dx),(int)(xo+xn-xb+(0.5*d)+fx),(int)(yo-yn-yb-dx-fy) );
g.drawString("F",(int)(xo+xn-xb+(0.5*d)+fx-15),(int)(yo-yn-yb-dx-fy));

g.setColor(Color.GREEN);
double peso=0.1*masa*gravedad;
g.drawLine((int)(xo+xn-xb+(0.5*d)),(int)(yo-yn-yb-dx),(int)(xo+xn-xb+(0.5*d)),(int)(yo-yn-yb-dx+peso) );
g.drawString("P",(int)(xo+xn-xb+(0.5*d)-15),(int)(yo-yn-yb-dx+peso));

g.setColor(Color.BLUE);
g.drawString("La FUERZA es ", 180,60);
g.drawString("La MASA es ", 180,80);
g.drawString("El TIEMPO es ", 180,100);
g.drawString("El ROZAMIENTO es ", 180,120);
g.drawString("La ACELERACION es ", 180,140);
g.drawString("El DESPLAZAMIENTO es ", 180,160);

g.setColor(Color.BLACK);
g.drawString(""+fuerza, 320,60);
g.drawString(""+(short)masa, 320,80);
g.drawString(""+tiempo, 320,100);
g.drawString(""+miu, 320,120);
g.drawString(""+(short)aceleracion, 320,140);
g.drawString(""+(short)desplazamiento, 320,160);
}
}

6 comentarios:

  1. esta bien hecho el deber.. es una buena aplicacion nos puede servir para hacer algunos deberes

    ResponderEliminar
  2. Encuentro muy completo tu programa, me parece que podrías corregirle la linea de "niu" es friccion te corrijo. La tabla esta muy entendible, buen trabajo

    ResponderEliminar
  3. Muy bien el codigo.. esta bien organizado....
    felicictaciones...

    ResponderEliminar
  4. muy buenas lineas d programacion pero talvez m puedes axplicar como sacast el punto central del cubo... es un trabajo completo gracias

    ResponderEliminar
  5. Es un buen programa pues muestra en forma práctica la resolución de un sistema de fuerzas que actúan sobre un bloque de subida, aunque se podria definir un limite para cuando la fuerza es muy grande de tal manera que el gráfico no se salga del applet.

    ResponderEliminar
  6. Encuentro muy completo tu programa, me parece que podrías corregirle la linea de "niu" es friccion te corrijo. La tabla esta muy entendible, buen trabajo

    ResponderEliminar