/* * kepler.java * * Created on 23. Mai 2004, 22:17 */ /** * * @author nus */ import java.awt.*; import java.applet.*; import java.awt.event.*; public class kepler extends Applet implements ActionListener { TextField vein; TextField alphaein; TextField hein; TextField dtein; Button ok; double v; double alpha = 0; double h; double dt; public void init() { setLayout(new BorderLayout()); Panel panel = new Panel(); panel.setLayout(new GridLayout(12,1,10,5)); Label text = new Label("Eingaben - "); panel.add(text); Label labelv = new Label("Startgeschwindigkei"); panel.add(labelv); vein = new TextField("2000",8); panel.add(vein); Label labela = new Label("Startwinkel"); panel.add(labela); alphaein = new TextField("0",8); panel.add(alphaein); Label labelh = new Label("Starthöhe"); panel.add(labelh); hein = new TextField("10", 8); panel.add(hein); Label labelt = new Label("Zeitschritt"); panel.add(labelt); dtein = new TextField("1000",8); panel.add(dtein); ok = new Button("ok"); panel.add(ok); ok.addActionListener(this); add("East", panel); } public void actionPerformed (ActionEvent ae) { if (ae.getSource() == ok) { werteuebernehmen(); repaint(); } } public void werteuebernehmen() { v = Double.valueOf(vein.getText()).doubleValue(); alpha = Double.valueOf(alphaein.getText()).doubleValue(); h = Double.valueOf(hein.getText()).doubleValue(); dt = Double.valueOf(dtein.getText()).doubleValue(); } public void paint(Graphics bs) { int zaehler=120; double GM = 392000000000000.0; double er = 6470000; double ax; double ay; double vx; double vy; double x; double y; double r; double r3; alpha = alpha/180 * 3.14; vx = v * Math.sin(alpha); vy = v * Math.cos(alpha); x = h * er; y = 0; Color yl = new Color(255,255,245); bs.setColor(yl); bs.fillRect(0,0, 600,600); bs.setColor(Color.red); bs.drawOval(200 - (int) (er/(20*er)*400), 200 - (int)(er/(20*er)*400), (int)(er/(20*er)*800), (int)(er/(20*er)*800)); bs.setColor(Color.blue); for (int i=1; i < zaehler; i++) { r3 = Math.sqrt(x*x + y*y); r = r3*r3*r3; ax = -GM*x/r; ay = -GM*y/r; vx = vx + ax*dt; vy = vy + ay*dt; x = x + vx*dt; y = y + vy*dt; bs.fillRect(200 + (int)(x/(20*er)*400), 200+(int)(y/(20*er)*400), 2, 2); } } }