Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Simulation eines schrägen Wurfes (https://www.delphipraxis.net/127877-simulation-eines-schraegen-wurfes.html)

rajuneon 20. Jan 2009 15:56


Simulation eines schrägen Wurfes
 
Hallo!

Ich hoffe, ich bin hier halbwegs richtig:
Ich will eine Visualisierung eines schrägen Wurfes schreiben, die währenddessen in einer nebenstehenden Tabelle wichtige Werte wie z.B. die aktuelle Geschwindigkeit des geworfenen Gegenstandes ausgibt. Einige der Parameter sollen änderbar sein, z.B. die Masse, der Abwurfwinkel etc.
Dazu folgende Fragen:

- Wie stelle ich es an, dass die Werte in der Tabelle dauern aktualisiert werden, ohne dass ich ein OnClick-Ereignis habe?
- Wie regele ich die Zeit so, dass es halbwegs realistisch aussieht? sleep(); ist ja nicht wirklich genau und je nach Computer unterschiedlich.
- Gibt es die Möglichkeit, den simulierten Wurf durch eine ScrollBar o.ä. vor- und zurück- zuspulen?

Es gibt ein ähnliches Programm als Javaapplett , das allerdings ein wenig umfangreicher als das ist, was ich vorhatte.

Über ein wenig Hilfe würde ich mich sehr freuen!

3_of_8 20. Jan 2009 16:00

Re: Simulation eines schrägen Wurfes
 
Naja, nimm dir halt einen Timer und überprüfe bei jedem Ausführen der Behandlungsroutine, wie viel Zeit tatsächlich vergangen ist, setz diese Zeitdifferenz in die Formel ein und schon hast du deine Werte. Die kannst du dann nach Belieben zeichnen, zu Tabellen hinzufügen, was du willst.

Zeitdifferenzen messen geht mit GetTickCount, oder, wenn Millisekunden nicht genau genug sind (was wohl eher nicht der Fall ist) mit QueryPerformanceCounter und QueryPerformanceFrequency und wenns extrem genau gehen muss, gibts dafür noch spezielle Timerklassen, die mit der Genauigkeit glaube ich noch unterhalb des Mikrosekundenbereichs liegen.

Florian Hämmerle 20. Jan 2009 16:20

Re: Simulation eines schrägen Wurfes
 
Crosslink:

Flö

lbccaleb 20. Jan 2009 16:24

Re: Simulation eines schrägen Wurfes
 
Hall ound Willkommen in der DP... :dp: :dp:


Der Benutzer Luckie hat auf seiner Seite ein passendes Demo Programm, das ist bestimmt was für dich...
Schraeger Wurf


mfg Caleb

rajuneon 20. Jan 2009 22:55

Re: Simulation eines schrägen Wurfes
 
Danke! Ihr habt mir sehr geholfen!

Und sorry für den Zweitpost im Delphi-Treff!

Luckie 20. Jan 2009 23:07

Re: Simulation eines schrägen Wurfes
 
Zitat:

Zitat von rajuneon
Einige der Parameter sollen änderbar sein, z.B. die Masse

Die Masse spielt doch keine Rolle. Jedenfalls meine ich mich zu erinnern, dass die Massse in der Formel für die Flugbahn nicht vorkommt.

@lbccaleb: Danke, jetzt muss ich es nicht mehr raussuchen. ;)

turboPASCAL 21. Jan 2009 03:26

Re: Simulation eines schrägen Wurfes
 
Zitat:

Die Masse spielt doch keine Rolle.
Doch schon, wenn man den Energieaufwand mit berechnen will. Aber dann kann man ja gleich den Luftwiederstand mit einbeziehen. ;)

rajuneon 21. Jan 2009 05:57

Re: Simulation eines schrägen Wurfes
 
Also ich bin mir noch nicht ganz sicher, ob ich das als theoretischen Wurf betrachten will, also im Vakuum, oder ob ich daraus gleich eine ballistische Kurve machen soll. Wenn, dann sollte der geworfene Gegenstand eine Kugel sein, die ja (laut Wikipedia) einen cw-Wert von ca. 0.45 hat. Wenn das nicht allzu kompliziert mit einzubeziehen ist.
Wieso sollte die Masse keine Bedeutung haben? Sie wirkt sich doch, wenn ich das richtig sehe, auf die Energien (E pot und E kin)und auf die gegen den Erdmittelpunkt gerichtete Kraft aus, wenn nicht noch mehr.

Draos 21. Jan 2009 06:42

Re: Simulation eines schrägen Wurfes
 
Wenn du es mit Bewegungsvektoren und Beschleunigungsvektoren machst ist selbst der Luftwiderstand einfach als Beschleunigung entgegen der Flugrichtung zu sehen.

Und nein Masse egal. Klar Energie. Aber die Energie musste vorher auch reingesteckt werden für die Startgeschwindigkeit.

3_of_8 21. Jan 2009 07:35

Re: Simulation eines schrägen Wurfes
 
Die Masse kürzt sich raus. Bei einem schrägen Wurf ohne Luftwiderstand hat man als Geschwindigkeit in der x-Komponente vx=const und in der y-Komponente ay*t+vy0, wenn man das dann komponentenweise integriert hat man bei der Strecke in der x-Komponente vx*t und in der y-Komponente ay/2*t²+vy0*t.
(Mit ay=9,81m/s²)

Wenn du das ganze mit Luftwiderstand rechnen willst, brauchst du Informationen über die Form des Objektes. Wenn ich mich nicht recht irre, ist das im allgemeinen Fall recht kompliziert, da musst du mit Tensoren rechnen, wenn du aber z.B. eine Kugel hast, geht das einfach mit dem Gesetz von Stokes. (Fr=-6*pi*r*äta*v)

Da kannst du dann einfach als Beschleunigung in x-Richtung Fr einsetzen (mit Startgeschwindigkeit vx0, und wenn die x-Geschwindigkeit<0 wird, setz sie gleich 0) und in y-Richtung a-sgn(vy)*Fr (mit Startgeschwindigkeit)

Das kann man dann schrittweise berechnen, die Schrittweite musst du selber ausprobieren. Wenn dir das mit dem schrittweise ausrechnen nicht gefällt, kannst du bei Fr auch noch die jeweiligen Geschwindigkeitsfunktionen einsetzen, sodass Fr nur noch von der Zeit abhängig ist:
ax=Fr=-6*pi*r*äta*vx=-6*pi*r*äta*(vx0+ax/2*t²)=-6*pi*r*äta*vx0-3*pi*r*äta*t²
ax(3*pi*r*äta*t²+1)=-6*pi*r*äta*vx0
ax=-(6*pi*r*äta*vx0)/(3*pi*r*äta*t²+1)

ay=a +- Fr=a -+ 6*pi*r*äta*vy=a -+ 6*pi*r*äta*(vy0+ay/2*t²)
ay=a -+ 6*pi*r*äta*vy0 -+ 3*pi*r*äta*ay*t²
ay(+- 3*pi*r*äta*t²+1)=-+ 6*pi*r*äta*vy0
ay=-(6*pi*r*äta*vy0)/(3*pi*r*äta*t² +- 1)
(Fall + ist hier falls vy>0, Fall - falls vy<0)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
Seite 1 von 2  1 2      

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