Witam. Piszę program z programowania w Javie. Napisałem kod, który wyświetla mi wahadło matematyczne, jednak nie wprawia go w ruch. Prosiłbym o pomoc z tym problemem.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class Wahadlo extends JPanel implements Runnable, KeyListener {
private static final long serialVersionUID = 1L;
private Thread animThreat;
private double t, dt; // t - czas, dt - przyrost czasu
private int d; // długość wahadła
private int x0 = 500;
private int y0 = 500;
private double alfa; // bieżacy kąt wychylenia
private double alfa0; // początkowy kąt wychylenia
boolean ruch = false;
public Wahadlo(double alfa0, int x0, int y0) {
setBackground(Color.WHITE);
setDoubleBuffered(true);
d = 200;
t = 0;
dt = 0.004;
x0 = 100;
y0 = 100;
animThreat = new Thread(this);
animThreat.start();
}
public void paint(Graphics g) {
int x = x0 + (int) (d * Math.sin(alfa));
int y = y0 + (int) (d * Math.cos(alfa));
g.drawLine(x0, y0, x, y);
g.fillOval(x - 10, y - 10, 20, 20);
}
public void movement() {
t += dt; // czas zwiekszony o wartosc przyrostu
alfa = alfa0 * Math.cos(Math.sqrt(981 / d / 0.0375) * t);// rownanie
alfa0 = alfa0 + 10; // wahadla
}
public void run() {
movement();
while (Thread.currentThread().isAlive()) {
if (ruch) {
try {
Thread.sleep(5);
} catch (InterruptedException e) {
}
}
}
repaint();
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}