Iterative Berechnung einer Satellitenbahn

Thison

Ensign
Registriert
Juli 2009
Beiträge
211
Guten Tag,
ich habe vor im Zuge meiner Facharbeit ein Programm zu schreiben (Java) welches die Satellitenbahn berechnen soll (evtl. später auch Plantenbahn).

Bisher habe ich das:

public class Satellite
{
// instance variables - replace the example below with your own
double x ;
double y ;
double vx;
double vy;
double w;
double r;
double ax;
double ay;
double t;
double deltaT;

/**
* Constructor for objects of class Satellite
*/
public Satellite(double x, double y, double vx, double vy, double m)
{
r = quadratwurzel(x*x+y*y);
t = 0;
deltaT = 0.1;
}

/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public double xKoordinate(double M){
ax = -6.673*potenzieren(10, -11)*M*(x/r*r*r);
vx = vx + ax*deltaT/2;
x = x + vx*deltaT;
t = t+deltaT;
return x;
}

public double yKoordinate (double M) {
ay = -6.673*potenzieren(10, -11)*M*(y/r*r*r);
vy = vy + ay*deltaT/2;
y = y + vy*deltaT;
t = t+deltaT;
return y;
}

public double quadratwurzel(double a)
{
double i;
for( i = 0.00; i <= 1000.00; i++)
w = (1 / 2) * (w + a / w);
return w;
}

public double potenzieren (double a, int p)
{
double i;
if (p<0){
for (i=0; p<i; i--){
a = 1/a;
}
}else{
for (i=1; p<i;i++){
a=a*a;
}
}
return a;
}

}

Jedoch wird bei jeder Methode immer NaN ausgegeben. Ich vermute das hat was mit den Datentypen int und double zu tun?

Des weiteren habe ich die Frage wie es möglich ist, die Satellitenbahn grafisch darzustellen (sprich aus der Vogelperspektive.

-Ich muss den Objekten aufjedenfall ein Bild zuweisen und die Objekte dann im Bild platzieren.
-Dabei soll das Koordinatensystem im Mittelpunkt des Zentralkörpers liegen
-Die Bahn müsste sich zeichnen lassen in dem ich das Objekte immer auf die nächste X und Y Koordinate bewege

Danke vielmals!

MfG,
Thison
 
Zuletzt bearbeitet:
1. deine potenzieren-Methode ist für negative p auf jeden Fall falsch (for-bedingung falsch und der rumpf ebenfalls). Nimm doch einfach Math.pow()

2. double-variablen musst musst du (glaub ich) auch double zuweisen. D.h. t=0.0 (mind. eine nachkommastelle).

//edit: du solltest vllt mal dabei schreiben, dass Java gemeint ist^^
 
Solche Arbeiten sind doch eigentlich dazu gedacht, dass man selbst was davon hat. Anhand deiner Fragen würde ich sagen, du solltest dir das Thema noch mal anschauen.
 
@Fireball89: Vielen Dank für die Antwort. Für negative Exponenten muss ich mal drüber schauen. Aber das mit den Nachkommastellen werde ich probieren und Math.pow() ebenfalls googlen.

@drow17: Konstruktiv. Meine Facharbeit schreibe ich über das Leben eines Sterns. Das hier ist eine Art Bonus ich will mich nur ein wenig mit dem Thema beschäftigen bis meine Bücher da sind. Aber Danke!
 
Zuletzt bearbeitet:
Du hast nen seltsamen Programmierstil. Vielleicht solltest du dir mal ein Buch über Java zulegen.
 
Zurück
Oben