miércoles, 10 de junio de 2009

Plano Inclinado con vectores



import java.applet.Applet;
import java.awt.*;
import javax.swing.JApplet;
import javax.swing.JOptionPane;

public class PlanoInclinado extends Applet {
public void init(){
}
public void paint(Graphics g){
String aux=JOptionPane.showInputDialog(null,"INGRESE EL VALOR DE LA BASE","BASE",JOptionPane.DEFAULT_OPTION);
double base=Double.parseDouble(aux);
String aux2=JOptionPane.showInputDialog(null,"INGRESE EL VALOR DE LA ALTURA","ALTURA",JOptionPane.DEFAULT_OPTION);
double altura=Double.parseDouble(aux2);
double angulo;

g.drawLine(30,150,(int) base+30,150 );
g.drawLine((int)base+30, 150,(int)base+30,150-(int)altura);
g.drawLine(30, 150, (int)base+30, 150-(int)altura);
double tan=altura/base;
angulo=Math.atan(tan);
angulo=Math.toDegrees(angulo);

String aux8=JOptionPane.showInputDialog(null,"INGRESE LA DISTANCIA a DE LA MASA","INGRESE DISTANCIA a",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;

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,"INGRESE EL VALOR DE LA FUERZA","FUERZA EN NEWTONS",JOptionPane.DEFAULT_OPTION);
double fuerza=Double.parseDouble(aux3);

String aux4=JOptionPane.showInputDialog(null,"INGRESE EL VALOR DE LA MASA","MASA EN KILOGRAMOS",JOptionPane.DEFAULT_OPTION);
double masa=Double.parseDouble(aux4);

String aux5=JOptionPane.showInputDialog(null,"INGRESE EL VALOR DEL COEFICIENTE DE ROZAMIENTO","COEFICIENTE DE ROZAMIENTO",JOptionPane.DEFAULT_OPTION);
double miu=Double.parseDouble(aux5);

String aux6=JOptionPane.showInputDialog(null,"INGRESE EL TIEMPO","TIEMPO EN SEGUNDOS",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)));
System.out.println(" "+aceleracion);
double desplazamiento= aceleracion*0.5*tiempo*tiempo;
System.out.println(" "+desplazamiento);
double xn=desplazamiento*Math.cos(angulo*Math.PI/180);
System.out.println(" "+xn);
double yn=desplazamiento*Math.sin(angulo*Math.PI/180);
System.out.println(" "+yn);

g.setColor(Color.RED);
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.BLACK);
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("fr",(int)(xo+xn-xb+(0.5*d)-frx-15),(int)(yo-yn-yb-dx+fry));
g.setColor(Color.BLUE);
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("FN",(int)(xo+xn-xb+(0.5*d)-nx-20),(int)(yo-yn-yb-dx-ny));
g.setColor(Color.LIGHT_GRAY);
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.GRAY);
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));


for(int i=0;i<10;i++){

}


g.drawString("Fuerza", 202,44);
g.drawString(""+fuerza, 322,44);
g.drawString("Masa", 202,59);
g.drawString(""+(int)masa, 322,59);
g.drawString("Tiempo", 202,74);
g.drawString(""+tiempo, 322,74);
g.drawString("U", 202,89);
g.drawString(""+miu, 322,89);
g.drawString("Aceleracion", 202,104);
g.drawString(""+(short)aceleracion, 322,104);
g.drawString("Desplasamiento", 202,119);
g.drawString(""+(short)desplazamiento, 322,119);
g.drawString("F.R. ", 202,134);
g.drawString(""+(short)(miu*masa*gravedad*Math.cos(angulo*Math.PI/180)), 322,134);
g.drawString("Angulo", 202,149);
g.drawString(""+(short)angulo, 322,149);
g.drawString("F. Normal", 202,164);
g.drawString(""+masa*gravedad*Math.cos(angulo*Math.PI/180), 322,164);
g.drawString("Peso", 202,179);
g.drawString(""+masa*9.8, 322,179);
}
}

8 comentarios:

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

    ResponderEliminar
  2. BUEN PROGRAMA, PERO DEBERIAS PONER MEJOR UN DIBUJITO PA VERLO MEJOR

    ResponderEliminar
  3. Encuentro muy completo tu programa, me parece que podrías añadirle un dibujo para visualizar mejor con las lineas de Fuerza, friccion peso y normal... el codigo es entendible buen trabajo

    ResponderEliminar
  4. muy bien el codigo.. esta muy organizado... felicitaciones.. se entiende q funciones empleas en el ejercicio..

    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
  7. 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
  8. Bueno el programa ya tendria un enfocque en que basarme ya que mi trabajo es el contrario al mio osea es de bajada

    ResponderEliminar