AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Physikgesetze zur Simulation unseres Sonnensystemes

Physikgesetze zur Simulation unseres Sonnensystemes

Ein Thema von Taggs · begonnen am 20. Nov 2009 · letzter Beitrag vom 29. Mai 2010
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.542 Beiträge
 
#11

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 27. Feb 2010, 21:52
Ich versuche mal, auf ein paar Aspekte einzugehen:
Zitat von Taggs:
Dann müsste ich über jeden Körper (Ruhe-)Masse m0, Startposition x0 (als Vektor) und Momentangeschwindigkeit v0 an dem Punkt, auf den der Vektor x0 zeigt, wissen.
Richtig.
Zitat:
Da die Sonne bei mir in der Mitte des Bildschirmes stehen bleiben soll, habe ich mir gedacht, dass ich von der Sonne nur m0 und x0 brauche und diese Werte konstant bleiben.
Auch noch okay. Damit ist dein Koordinatensystem zwar nicht mehr inertial, aber der Fehler sollte noch ertragbar sein.
Zitat:
F(Koerper1, Koerper2) = (9,61 * m0(Koerper1) * m0(Koerper2)) / |x0(Koerper1) - x0(Koerper2)| // Das ist die normale Formel um die Kraft zwischen 2 Körpern zu berechnen.
Möööööp
http://de.wikipedia.org/wiki/Gravita...itationsgesetz
Zumindest di Konstante kommt mir spanisch vor - das sollten 6,67*10^-11 sein ...

Zitat:
Jetzt würde ich wie folgt die Position von Erde und Jupiter ausrechnen:

a(Erde) = [F(Sonne, Erde) * (x0(Sonne) - x0(Erde))] + [F(Jupiter, Erde) * (x0(Jupiter) - x0(Erde))] // Wenn ich x0 von Erde von x0 von Sonne subtrahiere, habe ich ja letzlich einen Vektor von dem Punkt der Erde zum Punkt der Sonne, der dann nur noch mit der Anziehungskraft "gewichtet" werden muss. Am Ende werden alle gewichteten Vektoren zwischen den Planeten aufaddiert, sodass ich die Richtung und Beschleunigung in einem Vektor habe. Nach meinem Vorgehen, habe ich in a jetzt einen Richtungsvektor, wohin der Planet fliegt, und auch wie "schnell".
Fehler: Du rechnest die Summe aller Kräfte aus (vektoriell natürlich) - das sit noch richtig - aber das ist nicht gleich der Beschleunigung. F = m*a bzw. umgestellt: a = F/m
Du musst die Kraft noch durch die Erdmasse teilen. Und die Kräfte wirken immer auf der direkten verbindungslinie - Wenn die Kraft nur ein Skalar ist, musst du sie mit dem normierten Differenzvektor multiplizieren.

Zitat:
v(Erde) = v0(Erde) + dt * |a(Erde)| // a darf hier natürlich nicht der Vektor sein, sondern muss die Länge des Vektors sein, deshalb Betragsstriche. Oder muss ich doch den Vektor a nehmen? Brauche ich nur die Geschwindigkeit als Zahl in v oder ist v ein Vektor (Geschwindigkeitsvektor)? Das ist nämlich schon mal mein 1. Problem.
Sowohl Position, als auch Geschwindigkeit als auch Beschleunigung als auch die Kraft sollten Vektoren sein
Zitat:

x(Erde) = x0(Erde) + dt * v(Erde) // Hier müsste v(Erde) nämlich ein Vektor sein ...

Dann würde ich die 3 Zeilen (a, v und x) noch einmal für den Jupiter ausrechnen, allerdings würde ich da nicht die neuen Werte von der Erde nehmen, sondern noch die "alten". Ich denke das gibt weniger Ungenauigkeitsfehler, wenn mein dt hinreichend klein ist.
Des passt scho. Du kannst ja immer erst alle Beschleunigungen errechnen (die von den anderen Körpern abhängen) und dann für jeden Lörper Geschw. & Position updaten.
Zitat:
Neben dem Problem mit der Geschwindigkeit / mit dem Geschwindigkeitsvektor, habe ich noch ein 2. Problem, die "Verhältnisse". Bei der Berechnung der Beschleunigung, gewichte ich ja die Vektoren zw. den einzelnen Planeten mit der Kraft zwischen ihnen, bevor ich alle Vektoren zusammenaddiere. Kann ich das so lassen, oder muss ich noch Faktoren einfügen? Ich weiß nicht wie ich das erklären soll, aber ich befürchte so, werden meine Planeten in null-komma-nix vom Bildschirm fliegen. Schließlich gibt mir F einen Wert in Newton zurück. Ich kann mir beim besten Willen nicht vorstellen, dass ich den einfach mit einem Vektor multiplizieren kann.
Siehe oben. Dein Kraftvektor ist in Newton aber die Planeten haben auch eine zeimlich große Masse
Zitat:

Bezüglich des dt kann ich einfach eine beliebige Zahl einsetzen, ohne dass ich dadurch die anderen Werte (verhältnismäßig) ändern müsste, oder? Ich nehme mal an, dass bei dt = 1 jede Stunde die Planeten neu berechnet werden. Ist das richtig so?
SI-Einheit für Zeit ist die Sekunde.

Puh, das wäre alles - ich hoffe ich konnte helfen ^^

Was die Skalierung angeht: Du braucht einen Skalierungsfaktor der angibt, wieviele km pro Pixel angezeigt werden sollen. Oder du schrumpfst von vornherein die Bahnen der Planeten, musst dann aber ihre Massen ebenso anpassen ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.080 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 27. Feb 2010, 22:00
Hmmmm, also erstmal haben die Planeten auch eine kleine Wirkung auf die Sonne, demnach kann man ihren Richtungsvektor nicht einfach weglassen.

Wenn die Sonne in der Bildschirmitte bleiben soll, dann könnte man nach jedem Durchgang alle Positionen so verschieben, daß die Sonne wieder in der Mitte ist.

Oder man läßt die Positionen und verschiebt es nur für die Anzeige, wobei man zu diesem Zeitpunkt auch gleich so skallieren kann, daß alles Wichtige sichtbar ist.



Im Grunde hast du einen Richtungsvektor in Form einer "Kraft", aus Richtung und Geschwindigkeit (also könnte man die Geschwindigkeit auch gleich nur als "Kraft" speichern).

Und dann hast du nochmals "Kräfte", zwischen den einzelnen Objekten.

In jedem Durchlauf berechnest du alle Vektoren/Kräfte (wie schon richtig erkannt, aus den aktuellen Werten des letzten Durchlaufs), verrechnest dann alle und hast die neuen Werte für den aktuellen Durchlauf.

Mit diesen neuen Vektoren verschiebst du nun alle Objekte ein "Stückchen".
(Weg * Kraft * Schrittweite in die Richtung des Vektors)


Kraft=Energie



Das Problem ist dabei allerdings daß, je größer die Rechenschritte sind, also je größer "Schrittweite" ist, desto ungenauer werden die Berechnungen.


PS: Geschwindigkeit ist ja auch abhänging von der Zeit und die Zeit ist hier erstmal relativ egal.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#13

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 27. Feb 2010, 22:19
Zitat von himitsu:
wobei man zu diesem Zeitpunkt auch gleich so skallieren kann, daß alles Wichtige sichtbar ist.
Zur Anzeige wird die Koordinaten sowieso transformieren müssen (solange die Sonne nicht links oben im Eck hängen soll ), das ist eine andere Baustelle . Deswegen würde ich die Sonne auch nicht fix setzen, durch den Spezialfall wird es lediglich komplizierter.
Zitat von himitsu:
[...]also könnte man die Geschwindigkeit auch gleich nur als "Kraft" speichern[...]
(Weg * Kraft * Schrittweite in die Richtung des Vektors)
Kraft=Energie
?
jfheins hat das alles schon physikalisch korrekt erklärt, da habe ich nichts mehr hinzuzufügen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Taggs

Registriert seit: 20. Nov 2009
8 Beiträge
 
#14

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 10:58
@jfheins:

Vielleicht wäre es doch einfacher, wenn ich die Sonne mitberechne und die Planeten so verschiebe, dass die Sonne wieder in der Mitte ist.

Das mit der Konstante: Gut, dass das nicht mein Lehrer gesehen hat. Anscheinend habe ich das geschrieben, ohne darüber nachzudenken.

Für die Beschleunigung muss ich natürlich noch durch m0 teilen, tut mir leid ... wieder geträumt.

Zitat:
Und die Kräfte wirken immer auf der direkten verbindungslinie - Wenn die Kraft nur ein Skalar ist, musst du sie mit dem normierten Differenzvektor multiplizieren.
Was meinst du mit dem normierten Differenzvektor? Das hört sich so, wie ich es gemacht habe: Ich habe jeweils die Differenz der 2 Vektoren genommen und sie mit der Kraft normiert, oder?

Zitat:
Siehe oben. Dein Kraftvektor ist in Newton aber die Planeten haben auch eine zeimlich große Masse Wink
Was möchtest du mir damit sagen? ^^

Zitat:
Zitat:
Bezüglich des dt kann ich einfach eine beliebige Zahl einsetzen, ohne dass ich dadurch die anderen Werte (verhältnismäßig) ändern müsste, oder? Ich nehme mal an, dass bei dt = 1 jede Stunde die Planeten neu berechnet werden. Ist das richtig so?
SI-Einheit für Zeit ist die Sekunde.
Achja, V wird ja in m/s angegeben, ich habe an km/h gedacht.

@himitsu & Khabarakh:

Wie schon gesagt, ich lasse die Sonne mitbewegen und verschiebe das Ganze Sonnensystem nach jedem Durchlauf.

Ich danke euch Dreien für eure Hilfe. Ich werde mich gleich mal an die Programmierung machen und sehen, was dabei rauskommt. Und noch mal einen ganz großen Dank an Christian S. für die Daten.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.542 Beiträge
 
#15

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 11:21
Zitat von Taggs:
Zitat:
Und die Kräfte wirken immer auf der direkten verbindungslinie - Wenn die Kraft nur ein Skalar ist, musst du sie mit dem normierten Differenzvektor multiplizieren.
Was meinst du mit dem normierten Differenzvektor? Das hört sich so, wie ich es gemacht habe: Ich habe jeweils die Differenz der 2 Vektoren genommen und sie mit der Kraft normiert, oder?
Naja - guck die die Formel an. Da ist zum einen die konstante G und die beiden Massen drin. Und dann noch 1/r² r ist hier der skalare Abstand. Das ist also die skalare Kraft die zwischen den beiden Planeten wirkt. Um daraus die vektorielle Kraft zu bekommen, musst du noch mit einem Vektor multiplizieren. Da die Kraft immer auf der direkten Verbindungslinie der beiden Körper wirkt, muss der Vektor genau diese Richtung angeben. Und seine Länge muss eins sein (um die Größe der Kraft nicht zu verändern)
Siehe Anhang


Zitat:
Zitat:
Siehe oben. Dein Kraftvektor ist in Newton aber die Planeten haben auch eine ziemlich große Masse Wink
Was möchtest du mir damit sagen? ^^
Bezog sich auf deine Aussage:
Zitat:
Ich weiß nicht wie ich das erklären soll, aber ich befürchte so, werden meine Planeten in null-komma-nix vom Bildschirm fliegen. Schließlich gibt mir F einen Wert in Newton zurück. Ich kann mir beim besten Willen nicht vorstellen, dass ich den einfach mit einem Vektor multiplizieren kann.
F=G \frac{mM}{r^2} \\\\
\vec{F}=G\frac{mM}{||r||^2}\cdot \underbrace {\frac{\vec{r}}{||\vec{r}||}}_{Laenge 1} = G\frac{mM}{||r||^3}\cdot \vec{r} \\\\
r\ ist\ der\ Vektor\ zwischen\ den\ Planeten
Miniaturansicht angehängter Grafiken
codecogseqn_844.gif  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.080 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 11:37
Ich hätte eine Idee, wie man sehr viele Körper verrechnen könne.


- lege ein Gitter über den Raum
- je Feld eine Liste
- dann wird jeder Körper in der Liste eingetragen in wessen Feld er gerade ist
(natürlich muß dieser dann noch verschoben werden, wenn er in ein anderes Feld reinrutscht)
- nun muß man nur noch die benachbarten Felder nach Körpern absuchen, anstatt immer alle Körper durchzugehn.

- jetzt werden erstmal ale Körper im selben Feld verrechnet,
- dann sucht man in allen Feldern ringsrum anderen Körpern
(der Radius der Suche wäre die doppelte der Entfernung, bis wohin sich zwei Körper mit der Masse des aktuellen Körpers noch spürbar beeinflussen würden)
bei gleich großen oder größeren Körpern immer nur die miteinander verrechnen, welche rechts daneben und/oder darunter liegen
(nach dem man so alle Felder durchgegangen ist, dürfte alles miteinander verrechnet sein)

Also mit Göße meinte ich sozusagen die Masse/Anziehungskraft des Körpers.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.542 Beiträge
 
#17

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 11:48
Hmmm ... naja ...
Also erstmal ist das Sonnensystem ziemlich dünn mit Planeten besetzt - da ist so ein Raster imho noch nicht notwendig. Außerdem ließe sich das vereinfachen: Die Sonne bekommt eine Sonderstellung und jeder andere Himmelskörper bekommt einen weiteren angegeben um den er kreist. Das läuft aus gleiche hinaus Die Planeten kreisen um die Sonne und die Monde um ihre jeweiligen Planeten. Das weis man vorher bereits und das ändert sich auch nicht

Ansonsten hört sich das nach dem Sphere_of_Influence-Konzept an
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.080 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 11:58
Eh, die Idee ist gut, da gibt es dann ja auch weniger Listen, wenn man jeden Körper an einen anderen Körper "bindet", von welchem man gerade am Meißten angezogen wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#19

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 12:04
Für die paar Körper kann man einfach die Kraft jedes Körpers auf jeden anderen ausrechnen. Das schafft selbst ein 10 Jahre alter Rechner noch locker

@jfheins: Deinen Formel-Anhang solltest Du nochmal prüfen, Du kommst da auf sowas wie F = irgendwas * F, was nur für F = 0 oder irgendwas = 1 gilt

Es reicht doch auch einfach, alle Vektorkomponenten sauber auszurechnen. Wozu noch mit irgendwelchen Einheitsvektoren und Beträgen hantieren, das macht's doch nur unnötig kompliziert.
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.080 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Physikgesetze zur Simulation unseres Sonnensystemes

  Alt 28. Feb 2010, 12:13
Zitat von Christian S.:
Es reicht doch auch einfach, alle Vektorkomponenten sauber auszurechnen. Wozu noch mit irgendwelchen Einheitsvektoren und Beträgen hantieren, das macht's doch nur unnötig kompliziert.
Jupp, drum meinte ich ja, daß man es "einfach" auch nur auf 2 Werte reduzieren könnte, zusammen dann noch mit der Zeit dann müßte man sich nicht über genau physikalische regizieren, sondern könnte die Berechnungen einfach nur mit 3 einfachen "Pseudowerten" für Zeit, Kraft und Entfernung durchrechnen.

> die Entfernung und Kräfte/Energien

Wenn man Anziehungskräfte und die Bewegungsenergie in der selben Einheit speichert, dann kann man diese dann direkt verrechnen, welche sehr gut in so'nen Double/Extendet reinpaßt.

Wenn das Model dann mal richtig läuft, dann kann man immernoch Umrechnungsfaktoren in reale physikalische Werte erstellen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf