Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Physix

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 18.08.2009, 10:41    Titel: Physix Antworten mit Zitat

Mal eine Physikfrage:

Ich habe mehrere Partikel (alles in 2D), die eine Masse m (kg), eine Geschwindigkeit s (pixel/s) und einen "flugwinkel" a (max. 2*pi) haben.
Für mich ists kein Problem die nächste Position des Partikels nur aufgrund der Geschwindigkeit und des flugwinkels zu bestimmen.. Sowas kann ich seit dem ich des erste mal winkelfunktionen gelernt hatte..

Meine frage dreht sich eher um die Masse. Ich möchte das sich die Massen der einzelnen Partikel reibungslos anziehen. D.h. der "flugwinkel" ändert sich in abhängigkeit der Distanz der Objekte, der eigenen geschwindigkeit, der eigenen Masse und der Geschwindkeit und Masse des nächst gelegenen Objekts.

Ich weiss auch das es sowas wie eine Gravitationskonstante geben soll (in der Physik sowieso, im Programm evtl), aber ich weiss nicht wie ich das im Programm umsetzen kann.

Wahrscheinlich muss ich die Positionen der einzelnen Partikel kennen um den nächsten schritt berechnen zu können, was aber kein problem ist, wenn ich pro rechen-gang einmal alle Partikeldaten durchlaufe..

Vielleicht hat da jemand was erfahrung, würd mich freuen von euch zu lesen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 18.08.2009, 12:38    Titel: Antworten mit Zitat

Was genau ist jetzt Deine Frage?

Du brauchst die Position und die Geschwindigkeit der Paritkel, um die Ablenkung zu berechnen. Die Gravitation nimmt mit dem Quadrat der Entfernung ab.
Außerdem brauchst Du eine Zeitkonstante, mit der Du die neue Position berechnest. Die neue Position anhand der Geschwindigkeit zu ermitteln, dürte kein Problem sein. Die Ablenkung ist im Grunde auch Geschwindigkeitsänderung (m/sek^2), nur mit einem anderen Richtungsvektor. Das sollte sich per einfacher Trigonometrie (sin, cos, tan) berechnen lassen.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 18.08.2009, 13:37    Titel: Antworten mit Zitat

du willst also alle partikel sich gegenseitig anziehen lassen?

differentialgleichung inc! -> wikipedia

ich würde behaupten du musst die ganzen einzelnen abstände jedes partikels außer dem aktuell berechnenden mit der masse umgerechnet entsprechend zu dessen zweiter ableitung der position zusammenrechnen und durch irgendeinen DGL solver durchjagen. Nimm einen der exakt für DGLs bis Ordnung 2, ich hoff wikipedia klärt hinreichend auf.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 18.08.2009, 14:20    Titel: Antworten mit Zitat

Ich denke mal, es ist klar, das ich um den nächsten schritt eines partikels zu berechnen die daten aller anderen partikel mit einberechnen muss.. das soll nicht das problem sein, die befinden sich alle in einer verketteten liste. Ich kann sie also für jeden rechenschritt einmal komplett durchlaufen.. Das kostet zwar unheimlich rechenleistung um so mehr partikel vorhanden sind, aber dafür gibts ja schnelle CPUs XD

Mit trigonometrie hab ich überhaupt keine probleme, mit differantial und integralrechnung allerdings schon eher!
Ich hab gehofft, ich käme drum rum, wenn diese Partikel keine ausdehnung hätten und nur einen unendlich kleinen punkt darstellen aber mit einer bestimmten masse... d.h. eine kollision müsste nichtmal stattfinden.. also um sowas wie abprallwinkel oder sowas möcht ich mich nichtmal kümmern..

einen zeitindex hab ich auch. Jeder partikel merkt sich den zeitpunkt seiner letzten berechnung. D.h. wenn ich nun die letzte zeit von der aktuellen zeit abziehe bekomme ich ein zeit-delta.. damit kann ich dann den zurückgelegten weg in pixel errechnen und damit die neue position. d.h. ich rechne wirklich mit pixel/s als geschwindigkeitseinheit!

Und ich weiss nun leider nicht, wie man die ablenkung berechnet.. selbst wenn ich alle daten der anderen partikel durchgehe...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 18.08.2009, 14:36    Titel: Antworten mit Zitat

das ist nicht sehr gut.

Du solltest keinen zeitpunkt als basis zur berechnung heranziehen. So könnte es nämlich passieren, das du ein partikel duch seine wegberechnung über ein andere oder mehrere andere partikel "quasi hindurch" projezierst.
Oder aber, es sntstehen hindernisse, die durch kürzere zeitabstände bei durchquerung, garnicht vorhanden wären, weil sie herauslaufen würden, was aber bei zu grössen zeitsprüngen nicht in betracht kommen würde.

baue lieber eine Verzögerung in das rechenmodel ein.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 18.08.2009, 14:47    Titel: Antworten mit Zitat

genau für die problemstellung sind DGLs gut TPM zwinkern wenn der DGL-Solver bis zu einem hinrechenden grad exakt approximiert (rk4 zB, ist exakt bis zur vierten ordnung, das sollte soweit ich mich erinnere (drei semester her Zunge rausstrecken ) definitiv reichen wenn deine DGL nur bis zur zweiten ableitung geht).

Und wegen der Kollision: Ohne Kollision ist das ganze schon wesentlich einfacher, in sofern hast du recht. Aber die gegenseitige Anziehung der ganzen Partikel wird dadurch nicht einfacher, nur die kollision fällt weg. Hättest du kollision mit drin müsstest du erstmal über nullstellenapproximation den Kollisionszeitpunkt aus der DGL holen, dann entsprechend kollidieren und weiterrechnen, und das mit mehreren kollisionen in einer bestimmten reihenfolge in jedem berechnungsschritt, das würde dann echt eklig werden. Also von daher - ohne kollision is das ganze durchaus schon viel einfacher, aber du hast einfach ein riesiges zusammenhängendes system, und da kommst du nicht drum rum.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 18.08.2009, 21:20    Titel: Antworten mit Zitat

Aus meiner Sammlung etwas Ähnliches:

http://www.dreael.ch/Deutsch/Download/Billard-Simulation.html

Im dortigen Beispiel konnte ich alles explizit ohne irgendwelche Iterationen berechnen, unter anderem auch die Zeitpunkte von zu erwartenden Kollisionen -> mittels Haldenstruktur wird jeweils die zuerst zu erwartende Kollision bestimmt.

Falls Du in Deinem Fall mittels Gravitationskonstante rechnen musst, wird Iteration, also schrittweise alle Körper im Zeitraum einer möglichst kleinen Zeitdifferenz, unumgänglich sein -> hier ist dann ein derart gering gewordener Abstand das Auslösekriterium für eine Kollisionsauswertung.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz