I created a piece of code that simulates a pendulum with the gravity(assuming no friction or resistance). However, it is not as smooth as I want it to be. So.. does anyone know what I can do to make it smoother?
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
import java.lang.Runnable;
class gui extends Canvas
implements Runnable{
int x_not,
y_not;
gui(int width, int height){
x_not = width/2;
y_not = height - (height - 50);
} //end constructor
public void paint(Graphics g) {
double phi;
try {
//The sleep() method is invoked on the main thread to cause a one second delay.
Thread.currentThread().sleep(100);
} catch (InterruptedException e) {}
phi = (Math.PI/4)*Math.sin(Math.sqrt(9.8/200)*System.currentTimeMillis()*Math.pow(10.0, 3.0));
buildPendulum(phi, g);
repaint();
} //end paint method
void buildPendulum(double phi, Graphics g)
{
//
// build the pendulum with respect to the angle phi
//
double Ax,Ay,
Bx,By,
Cx,Cy,
Dx,Dy,
Ex,Ey,
Fx,Fy,
Gx,Gy,
Hx,Hy;
Ax = x_not + 2*Math.cos(phi);
Ay = y_not + 2*Math.sin(phi);
g.drawLine(x_not, y_not, (int)Ax, (int)Ay);
Bx = Ax + 200*Math.cos(phi + (Math.PI/2));
By = Ay + 200*Math.sin(phi + (Math.PI/2));
g.drawLine((int)Ax, (int)Ay, (int)Bx, (int)By);
Cx = Bx + 7*Math.cos(phi);
Cy = By + 7*Math.sin(phi);
g.drawLine((int)Bx, (int)By, (int)Cx, (int)Cy);
Dx = Cx + 30*Math.cos(phi + (Math.PI/2));
Dy = Cy + 30*Math.sin(phi + (Math.PI/2));
g.drawLine((int)Cx, (int)Cy, (int)Dx, (int)Dy);
Ex = Dx + 20*Math.cos(phi + (Math.PI));
Ey = Dy + 20*Math.sin(phi + (Math.PI));
g.drawLine((int)Dx, (int)Dy, (int)Ex, (int)Ey);
Fx = Ex + 30*Math.cos(phi - Math.PI/2);
Fy = Ey + 30*Math.sin(phi - Math.PI/2);
g.drawLine((int)Ex, (int)Ey, (int)Fx, (int)Fy);
Gx = Fx + 8*Math.cos(phi);
Gy = Fy + 8*Math.sin(phi);
g.drawLine((int)Fx, (int)Fy, (int)Gx, (int)Gy);
Hx = Gx + 200*Math.cos(phi - Math.PI/2);
Hy = Gy + 200*Math.sin(phi - Math.PI/2);
g.drawLine((int)Gx, (int)Gy, (int)Hx, (int)Hy);
g.drawLine((int)Hx, (int)Hy, (int)x_not, (int)y_not);
}
public void run()
{
}
}