Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 10:51

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Anziehung und Fliehkraft berechnen
BeitragVerfasst: Di Dez 30, 2003 18:42 
Offline
DGL Member

Registriert: Di Dez 30, 2003 18:16
Beiträge: 6
Also Hallo erstmal
ich weiss net ob ihr wusstet aber ich bin der neue :wink:

Ich bastel momentan an einem Duell-Klon.
Für die, die das nicht kennen da sind zwei Raumschiffe die in der Umlaufbahn einer Sonne sind und halt der Gravitation der Sonne ausgesetzt sind und die müssen sich gegenseitig abschiessen und versuchen nicht in die Sonne zu fliegen =)

Also mein Problem ist das mit der Gravitation(und der Fliehkraft) irgendwie zu berechnen, ich denke mit Vektoren dürfte das gehen aber die hatten wir in der Schule noch net. :oops:

Ich bin also für jede Hilfe dankbar :)

P.S.:Das Game is 2D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 30, 2003 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Anziehungskraft zwischen zwei Körpern:

Einfache Variante: a (Beschleunigung) bleibt konstant - in diesem Fall wirkt immer die selbe Kraft (bzw. Geschwindigkeit, von dir wählbar) auf die Raumschiffe in Richtung Sonne.

Korrekte Variante: Die Anziehungskraft nimmt mit dem Quadrat der Entfernung ab, ich verweise auf folgende sehr nette Seite :wink: , da leider (oder zum Glück) Formeln nicht im Forum dargestellt werden können:
http://members.taunusstein.net/~gravitation/n25.html

Fliehkraft:
wirkt tangential zur Rotationsbewegung (ein Körper der um einen anderen rotiert ist sozusagen einer dauernden Beschleunigung ausgesetzt, da sich der Richtungsvektor ständig ändert).
Wird hier recht gut erklärt:
http://www.physik.rwth-aachen.de/group/IIIphys/INFOS/Exscript/5Kapitel/V2Kapitel.html

Kurz zur Erläuterung:
Omega (das runde w) ist die Winkelgeschwindigkeit in Radian des Körpers, der um einen anderen rotiert, a-> ist dann die Radialbeschleunigung, r der Abstand zum Gravitationsmittelpunkt (in deinem Fall die Sonne).
Zur Berechnung der Fliehkraft multiplizierst du dann die Radialbeschleunigung mit der Masse des Raumschiffs, kehrst das Vorzeichen um, da du an der Zentrifugalkraft interessiert bist - und fertig

da sowohl Gravitationskraft und Fliehkraft gerichtet (Vektoren) sind, kannst du sie direkt dazu verwenden, den Geschwindigkeitsvektor deiner Raumschiffe demenstprechend zu verändern.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 16:16 
Offline
DGL Member

Registriert: Di Dez 30, 2003 18:16
Beiträge: 6
Danke erstmal aber das ist komplizierter als ich dachte ;)

Code:
  1.  
  2. procedure tdotgame.proccessgame(time: integer);
  3. var
  4.   richt: Tvector;
  5.   r: integer;
  6.   sricht: Tvector;
  7.   rricht: Tvector;
  8.   w: single;
  9.   awinkel,winkel: single;
  10. begin
  11.       richt:=fplayer.richtungsvektor;  //rricht ist die richtung in die das Raumschiffgerade fliegt.
  12.   r:=trunc(sqrt(Power((fplayer.pos.x-400),2)+PoweR(fplayer.pos.y-300,2))*100);// r ist der Radius (vergrössert damit die anziehungskraft auch wirklich grösser ist wenn das raumschiff näher am Planeten ist.
  13.     sricht[0]:=400-fplayer.pos.x;
  14.     sricht[1]:=300-fplayer.pos.y;
  15.     sricht[2]:=0;
  16.     sricht[3]:=0;
  17.     rricht:=sricht;//sricht ist die richtung der schwerkraft und rricht die richtung der fliehkraft
  18.     winkel:=degtorad(arctan((fplayer.pos.y-300)/(fplayer.pos.x-400)));
  19.     awinkel:=degtorad(arctan((fplayer.alt.y-300)/(fplayer.alt.x-400)));
  20.     if winkel>awinkel then
  21.     begin
  22.       winkel:=winkel+360;
  23.     end;
  24.     w:=2*Pi*((winkel-awinkel)/time); //w ist die kreisgeschwindigkeit
  25.     VectorMult(rricht, -w*w*10000);
  26.     VectorMult(sricht, 10000000/Power(r*0.5, 2));
  27.     VectorMult(richt, (fplayer.speed)/10);
  28.     AddVector(richt, sricht);
  29.     Addvector(richt,rricht); //fliehkraft schwerkraft und normalrichtung werden berechnet und addiert.
  30.     fplayer.alt.x:=fplayer.pos.x;
  31.     fplayer.alt.y:=fplayer.pos.y;
  32.     fplayer.pos.x:=trunc(fplayer.pos.x+richt[0]);
  33.     fplayer.pos.y:=trunc(fplayer.pos.y+richt[1]);
  34. end;
  35.  


Das Raumschiff startet rechts neben der Sonne und fliegt dann bis etwas 70° richtig... danach dreht es entweder steil nach oben oder steil nach unten ab. ich glaube es hat was mit der tangens funktion zutun aber bin mir nicht sicher.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 17:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Den Code zu überprüfen tue ich mich etwas schwer, zumal das Verhalten ja auch korrekt sein könnte (du hast ja, da du die Entfernung auch berücksichtigst, nicht linear beschleunigte Körper, was je nach gewählten Massen durchaus zu "unrealistischen" Verhaltensweisen führt: wahrscheinlich sind deine Entfernungen viel zu klein und deine Massen viel zu groß).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 13, 2004 22:35 
Offline
DGL Member

Registriert: Di Dez 30, 2003 18:16
Beiträge: 6
Hm

Ich hab gerade nochmal mit den Faktoren rumgespielt...
daran liegts nicht.

sondern das ganze funktioniert nur solange das Raumschiff in der oberen rechten Ecke ist. Sobald es die verlässt ist das Schiff von einem Bild zum anderen ausserhalb des Bildschirms....


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]