import java.awt.Graphics; import java.awt.Color; import Punto; public class Muelle { private Punto pto1, pto2; // puntos limite private double k; // cte de recuperacion private double l0; // longitud propia private double gamma; // amortiguamiento public Muelle( Punto p1, Punto p2 ) { pto1 = p1; pto2 = p2; double ix = pto1.q[0]-pto2.q[0]; double iy = pto1.q[1]-pto2.q[1]; k = 1.0; l0 = Math.sqrt(ix*ix + iy*iy); gamma = 0.0; } public void setCoef( double k ) { this.k = k; } public void setAmortig( double g ) { gamma = g; } public void dibujar( Graphics g ) { g.setColor(Color.red); g.drawLine(pto1.panX,pto1.panY,pto2.panX,pto2.panY); /* cx[0] = pto1.panX; cy[0] = pto1.panY; cx[5] = pto2.panX; cy[5] = pto2.panY; double ix = (cx[5]-cx[0])/16.0; double iy = (cy[5]-cy[0])/16.0; cx[1] = cx[0] + (int) Math.round( 2*ix-iy); cx[2] = cx[0] + (int) Math.round( 6*ix+iy); cx[3] = cx[0] + (int) Math.round(10*ix-iy); cx[4] = cx[0] + (int) Math.round(14*ix+iy); cy[1] = cy[0] + (int) Math.round( 2*iy-ix); cy[2] = cy[0] + (int) Math.round( 6*iy+ix); cy[3] = cy[0] + (int) Math.round(10*iy-ix); cy[4] = cy[0] + (int) Math.round(14*iy+ix); g.drawPolyline(cx,cy,6); */ } public void fuerzas( ) { double ix = pto1.qc[0] - pto2.qc[0]; double iy = pto1.qc[1] - pto2.qc[1]; double l = Math.sqrt(ix*ix + iy*iy); double fk = k*(l - l0)/l; double fx = fk*ix; double fy = fk*iy; double ca1 = 2.0*gamma*pto1.masa; double ca2 = 2.0*gamma*pto2.masa; pto1.fx -= fx + pto1.qc[2]*ca1; pto1.fy -= fy + pto1.qc[3]*ca1; pto2.fx += fx - pto2.qc[2]*ca2; pto2.fy += fy - pto2.qc[3]*ca2; } public void tensionNula( ) { double ix = pto1.q[0]-pto2.q[0]; double iy = pto1.q[1]-pto2.q[1]; l0 = Math.sqrt(ix*ix + iy*iy); } }