AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Pendel simulations Projekt
Thema durchsuchen
Ansicht
Themen-Optionen

Pendel simulations Projekt

Ein Thema von EWeiss · begonnen am 29. Mär 2015 · letzter Beitrag vom 3. Apr 2015
Antwort Antwort
Seite 2 von 2     12   
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 05:50 Uhr)
 
EWeiss
 
#11
  Alt 30. Mär 2015, 19:56
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.

In der unteren Hälte immer wieder drücken (nur bei der Rechtsbewegung) und irgendwann ist man oben
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

Geändert von EWeiss (30. Mär 2015 um 19:59 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#12
  Alt 30. Mär 2015, 21:50
Zitat:
Die "Funktion" des Knopfes "Set" hab ich irgendwie nicht kappiert?
Dann wird alles wieder auf 0 gesetzt und der Timer angehalten.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#13
  Alt 30. Mär 2015, 22:18
Das mit 0 hatte ich desehn.

Angehalten wird ja auch noch mit "Stop",
aber irgendwie konnte ich praktisch keinen wirklich auffallenenden Unterschied feststellen, egal ob ich Set+Run oder Stop+Run benutze. (vorher laufen lassen)
  Mit Zitat antworten Zitat
EWeiss
 
#14
  Alt 30. Mär 2015, 22:39
Das mit 0 hatte ich desehn.

Angehalten wird ja auch noch mit "Stop",
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

Geändert von EWeiss (30. Mär 2015 um 22:42 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#15
  Alt 1. Apr 2015, 21:06
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

Geändert von EWeiss ( 1. Apr 2015 um 21:09 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#16
  Alt 2. Apr 2015, 21:42
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

Geändert von EWeiss ( 2. Apr 2015 um 21:57 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#17
  Alt 3. Apr 2015, 00:18
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

Geändert von EWeiss ( 3. Apr 2015 um 00:37 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:22 Uhr.
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