H
HB9EDE
Gast
Hallo zusammen,
Ich habe ein programm geschrieben das den orbit der erde um die sonne berechnet. In excel funktioniert es. Als übung habe ich dies in Java graphisch darstellne wollen. Mein problem ist nun das sich die x variable nicht verändert.
Ich habe den teil mit den berechnungen hervorgehoben:
Kann jemand den fehler finden?
Ich habe ein programm geschrieben das den orbit der erde um die sonne berechnet. In excel funktioniert es. Als übung habe ich dies in Java graphisch darstellne wollen. Mein problem ist nun das sich die x variable nicht verändert.
Ich habe den teil mit den berechnungen hervorgehoben:
Code:
// CEarth: Simulating the orbit of the earth around the sun
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.math.*;
public class CEarth extends JFrame {
CMeineCanvas m_malflaeche;
public static void main(String[] args) {
CEarth fenster = new CEarth("Funktionenplotter");
fenster.pack();
fenster.setSize(820,820);
fenster.setResizable(false);
fenster.setVisible(true);
}
CEarth(String titel) {
super(titel);
setLayout(new FlowLayout());
m_malflaeche = new CMeineCanvas();
add(m_malflaeche);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class CMeineCanvas extends Canvas {
CMeineCanvas() {
setBackground(Color.black);
setForeground(Color.blue);
}
public void paint(Graphics g) {
//defining variables needed for calculation
float time=600; // in s
double MASS=198900000000000000L;
final double G = 0.0000000000667259;
double x=149600000000l; //in m
double y=0l; // in m
double vx = 0; // in m/s
double vy = 29790; // in m/s
double ax = -0.00593015488271755; // in m/s*s
double ay = 0; // in m/s*s
double r = 149600000000L; // in m
double t=0;
double xx;
double yy;
double divisor=431714285.714286;
int xpos,ypos;
g.translate(400,400);
g.setColor(Color.red);
g.drawLine(0,-400,0,400);
g.drawLine(-400,0,400,0);
g.setColor(new Color(255,255,0));
[color=red]for(t=0 ; t<=63072000; t+=600) {
x=(time*vx)+x;
y=(time*vy)+y;
vx=(time*ax)+vx;
vy=(time*ay)+vy;
ax=(-x*G*MASS*1000000000)/(Math.pow(r,3));
ay=(-y*G*MASS*1000000000)/(Math.pow(r,3));
r=Math.sqrt(((x*x)+(y*y)));
xx=x/divisor;
yy=y/divisor;
xpos = (int) (xx);
ypos = (int) (-yy);
g.fillOval(xpos,ypos,3,3);[/color]
}
}
public Dimension getMinimumSize() {
return new Dimension(800,800);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
} // Ende der Klasse CFunkPlotter
Kann jemand den fehler finden?