Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Pendel simulations Projekt (https://www.delphipraxis.net/184476-pendel-simulations-projekt.html)

EWeiss 30. Mär 2015 18:56

AW: Pendel simulations Projekt
 
Zitat:

Zitat von himitsu (Beitrag 1295402)
Zitat:

Zitat von EWeiss (Beitrag 1295398)
Zitat:

aber mit Kick X hab ich grade 11 Überschläge hinbekommen (hörte auf zu drücken) und schaffte nochmal 3
Jo da muss ich nochmal schauen wo der Fehler liegt.

Wobei das ja eigentlich richtig ist. :stupid:

In der unteren Hälte immer wieder drücken (nur bei der Rechtsbewegung) und irgendwann ist man oben :cyclops:

Zitat:

In der unteren Hälte immer wieder drücken (nur bei der Rechtsbewegung) und irgendwann ist man oben
Jup und Schwerkraft bedingt schaffst du halt die Überschläge.

Denke das ich schon richtig so.
Wenn der kreis außerhalb liegt stößt man an die Wände an.
Das dies unschöne Effekte ergibt sollte klar sein.

Vielleicht sollte ich das verschieben des schwarzen Mittelpunkt unterbinden.

gruss

EWeiss 30. Mär 2015 20:50

AW: Pendel simulations Projekt
 
Zitat:

Die "Funktion" des Knopfes "Set" hab ich irgendwie nicht kappiert?
Dann wird alles wieder auf 0 gesetzt und der Timer angehalten.

gruss

himitsu 30. Mär 2015 21:18

AW: Pendel simulations Projekt
 
Das mit 0 hatte ich desehn.

Angehalten wird ja auch noch mit "Stop", :zwinker:
aber irgendwie konnte ich praktisch keinen wirklich auffallenenden Unterschied feststellen, egal ob ich Set+Run oder Stop+Run benutze. (vorher laufen lassen)

EWeiss 30. Mär 2015 21:39

AW: Pendel simulations Projekt
 
Zitat:

Zitat von himitsu (Beitrag 1295434)
Das mit 0 hatte ich desehn.

Angehalten wird ja auch noch mit "Stop", :zwinker:
aber irgendwie konnte ich praktisch keinen wirklich auffallenenden Unterschied feststellen, egal ob ich Set+Run oder Stop+Run benutze. (vorher laufen lassen)

Na doch.. :)
Wenn du mit der Maus über das Image fährst bekommst du die aktuelle Cursor Position.
Diese wird mit "set" auf 0 gesetzt.
Ja ist etwas verwirrend das ganze ;)

Theoretisch könnte man sich das sparen.

gruss

EWeiss 1. Apr 2015 20:06

AW: Pendel simulations Projekt
 
Habe das Problem gefunden.

Wenn der Rote Ball sich außerhalb der schwarzen Box befindet liegt der Mittelpunkt der bewegten Masse außerhalb des Feldes.
Da darf er nicht hin.
Die Funktion CheckWalls dreht dann ständig das Vorzeichen um und der Hauptalgorithmus hängt in einer bösen Schleife.
Die Energie nimmt zu, bis der Ball es mal kurz schafft in den "legalen" Bereich zu kommen.
Da ist es aber schon zu spät.
Die Energie ist so hoch dass es zu einer numerischen "Explosion" kommt.

Ich muss also dafür sorgen das der Ball nicht außerhalb der Schwarzen Box gesetzt werden kann.
Werde es ändern wenn ich zeit dazu habe.

gruss

EWeiss 2. Apr 2015 20:42

AW: Pendel simulations Projekt
 
Neue Version.

Verbesserung der Grafikausgabe mit GDI Bordmitteln.
Wände werden nun gegengeprüft damit der Ball nicht außerhalb des Rechtecks verschoben werden kann.
Die Überläufe sollten damit behoben sein.
Zusätzlich noch das gleiche Projekt jedoch mit GDI+ als Grafikausgabe.
Es wird nun auf ein Bitmap gezeichnet anstelle des Canvas.
Das Bitmap wird anschließend in das Canvas Kopiert.

gruss

EWeiss 2. Apr 2015 23:18

AW: Pendel simulations Projekt
 
Noch ein paar Infos.

x, y sollten selbst erklärend sein genauso wie vx, vy.

Die Anzeige von dE (Energiezuwachs) kommt durch die Numerik zustande.
Rein theoretisch darf es ja keinen Energiezuwachs geben (Es gibt den Energieerhaltungssatz).
Wenn die Energie sich stark verändert, hat man einen Fehler im Algorithmus.

Dieser Fehler wurde behoben durch die Einschränkung des Balls (innerhalb des Rechtecks)
so das der Mittelpunkt der bewegten Masse sich nicht außerhalb des Feldes befindet.

In CheckWalls, wird die Geschwindigkeit an der schwarzen Box umgekehrt.
MeasureTau dient nur zur Zeitmessung bei kleinen Winkeln - ist aber noch nicht ganz perfekt.

Es wurde eine Reibung eingebaut.
Die beiden Zeilen unter "Reibung" in CalcStep kann man auskommentieren.
Daran liegt es, dass dE langsam anwächst, bzw. die Gesamtenergie abnimmt.

Zu KickX und KickY:
Der Kick ist nur sehr gering.
vKick = 0.25.
Wenn ihr mehr sehen wollt setzt ihn auf 1 bis 5.

KickY ist funktionell wenn die Reibung deaktiviert wurde.
In diesen Fall sind auch Überschläge möglich weil die Gesamtenergie nicht abnimmt ohne Reibung.

Ihr könnt auch mal mit D (Dämpfung) in 'SetParam' rumspielen.
D := 0 > Ball ohne Feder.
D := 1 weiche Feder
D > 1 wird die Feder steifer.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz