
package dinámica;
import javax.swing.JApplet;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JOptionPane;
/**
*
* @author program
*/
public class dinanica 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,"INGRESE LA ALTURA h","Triángulo escaleno",JOptionPane.DEFAULT_OPTION);
int x = Integer.parseInt(aux);
String aux1 = JOptionPane.showInputDialog(null,"INGRESE el largo l","Triángulo escaleno",JOptionPane.DEFAULT_OPTION);
int y = Integer.parseInt(aux1);
g.drawLine(50, 180, 180, 180);
g.drawLine(180, 180, 180,90);
g.drawLine(50,180, 180, 90);
//g.drawLine(180-x, 100, 150-x, 100-x);*/
String aux=JOptionPane.showInputDialog(null,"INGRESE EL 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,"INGRESE EL 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,"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;
g.setColor(Color.RED);
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,"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)));
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.BLACK);
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.RED);
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.cyan);
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.RED);
g.drawString("FUERZA = ", 260,44);
g.drawString("MASA =", 270,59);
g.drawString("TIEMPO =", 260,74);
g.drawString("MIU =", 280,89);
g.drawString("ACEL =", 270,104);
g.drawString("DESPLA =", 260,119);
g.drawString("LA NORMAL =", 230,134);
g.drawString("ANG PLANO =", 230,149);
g.drawString("b =",30+(int)x/2,170);
g.drawString("h =",(int)x+40,160-(int)y/2);
g.setColor(Color.BLACK);
g.drawString(""+(int)x,50+(int)x/2,170);
g.drawString(""+(int)y,(int)x+60,160-(int)y/2);
g.drawString(""+(short)angulo, 322,149);
g.drawString(""+fuerza, 322,44);
g.drawString(""+(short)masa, 322,59);
g.drawString(""+tiempo, 322,74);
g.drawString(""+miu, 322,89);
g.drawString(""+miu, 322,89);
g.drawString(""+(short)aceleracion, 322,104);
g.drawString(""+(short)desplazamiento, 322,119);
g.drawString(""+(short)(miu*masa*gravedad*Math.cos(angulo*Math.PI/180)), 322,134);
}
}
buen programa, ta muy vistoso y despliega toda la info necesaria
ResponderEliminarse observa como van las lineas y cuales pertenecen las mismas.. muy buen trabajo
ResponderEliminarEncuentro muy completo tu programa, la tabla el dibujo y las lineas del fenomeno estan muy entendibles, buen trabajo
ResponderEliminarmuy buen codigo.. pero si me puedes explicar como sacast en punto central del rectangulo... es un trabajo muy completo gracias
ResponderEliminarEs 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.
ResponderEliminarEsta coorecta tu aplicacion, tu codigo es entendible.. nos sirve de gran ayuda para mucha aplicaciones en dinamica
ResponderEliminar