AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Simulation Freierfall
Thema durchsuchen
Ansicht
Themen-Optionen

Simulation Freierfall

Ein Thema von Bömmelmütze · begonnen am 25. Dez 2007 · letzter Beitrag vom 14. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Bömmelmütze

Registriert seit: 25. Dez 2007
Ort: Konstanz
3 Beiträge
 
#1

Simulation Freierfall

  Alt 25. Dez 2007, 17:11
Ich denke mal mein Problem passt hier noch am besten rein:
Ich hab mir von meiner Physiklehrerin aufs Auge drücken lassen, in Delphi ein Programm zu schreiben, das den freinen Fall simuliert. Nun habe ich mir gedacht, das könnte man doch mit einer Großen Bitmap machen (2D reicht ja dafür völlig aus), allerdings bin ich dann gleich zu Anfang daran gescheitert, wie ich 30 mal pro Sekunde die position des "Pixelklotzes" geändert bekomme, bzw. wie überhaupt der Faktor Zeit Einzug in mein Programm finden soll.
Ich würd mich freuen, wenn mir jemand helfen könnte (so schwer hört sich des ja nicht an), wenn der Aufand dadurch geringer wäre, könnte ich auch auf die Bitmap verzichten.
Frohe Weihnachtsfeiertage,
Bömmelmütze
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Simulation Freierfall

  Alt 25. Dez 2007, 17:13
Nimm einfach einen Timer.

Gruß
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Simulation Freierfall

  Alt 25. Dez 2007, 17:14
Kuck dir mal die Delphi-Referenz durchsuchenTTimer-Komponente an, die ist für simple periodische Vorgänge recht gut geeignet. Was dein Bitmap angeht: das geht natürlich, aber wenn du nur demonstrieren willst, dass etwas, wenn es fällt, immer schneller wird, kannst du auch einfach ein Delphi-Referenz durchsuchenTShape übers Form flitzen lassen.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Simulation Freierfall

  Alt 25. Dez 2007, 17:47
Timer ja, aber nicht um meine Zeitvariable t zu bestimmen. Dafür würde ich GettickCount nutzen, dessen Wert ich dann in einem Timer periodisch auslese und in meine Ortsgleichung als t einsetze. Für den Timer selbst würde ich das Interval gerade noch so klein wählen, dass der Prozessor es noch packt. Aber als Laufvariable t immer auf GettickCount setzen (oder now von mir aus).
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Simulation Freierfall

  Alt 25. Dez 2007, 19:16
Das Problem ist wie genau soll der Freie Fall sein ? so wie in der "Realen Welt ?"

ich würde es so lösen:
Du hast ein großes Bitmap jetzt hast du ein rect das ist dein Anzeige Bildschirm.

Das Objekt Plaziert du einfach oben und lässt es in einem Timer + Zähler Variable einfach fallen.

Wobei es ja immer schneller Fallen muss, weil so ein Objekt wiegt meines Wissens auch.

Du könntest jetzt die Alte Position übermalen und das Objekt an der Neuen Position Zeichnen. Die Aufgabe ist gar nicht so wild.

Du könntest auch nur ein Off-Screen haben das könnte schon reichen, dann wird es nur etwas aufwendiger für dich.
Wenn das Object jetzt Unten ist muss es wieder am anfang gezeichnet werden, aber die Fall geschwindigkeit darf sich nicht ändern.

Ich hoffe du kannst mir Folgen. Das Prinzip ist aufjedenfall ganz einfach. Wenn es sich nur um ein Object Handelt das Fallen soll und nicht um mehrer die auch noch zusammenstoßen sollen.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Simulation Freierfall

  Alt 25. Dez 2007, 21:44
Zitat von mimi:
Das Objekt Plaziert du einfach oben und lässt es in einem Timer + Zähler Variable einfach fallen.
Das ist, find ich, eine etwas schwammige Formulierung. "Einfach fallen lassen"

Zitat von mimi:
Wobei es ja immer schneller Fallen muss, weil so ein Objekt wiegt meines Wissens auch.
Es fällt nicht schneller, weil es schwerer ist, sondern weil es durch die Erdanziegung gleichmässig beschleunigt wird. D.h., sofern man Luftwiderstand vernachlässigt, nimmt die Geschwindigkeit linear zu, und zwar gemäss v=gt+v0

Zitat von mimi:
Die Aufgabe ist gar nicht so wild.
Und weiter ??

Ich glaube, ich habe mich in meinem letzten Beitrag nicht genau genug ausgedrückt... Sinn der Sache ist es auf jeden Fall die Berechnung und die grafische Darstellung voneinander zu trennen. Also man berechne für einen Zeitpunkt t (und t lässt sich nun aber wirklich leicht aus Gettickcount ausdrücken... muss nur noch auf einen Zeitpunkt 0 normiert werden, welcher nix anderes ist als die Startzeit der Simulation), seine Position x und y auf dem Bildschirm. Da in x-Richtung keine Beschleunigung vorliegt, ist x ganze einfach x=v_x*t+x0. (v_x=Initialgeschwindigtkeit in x-Richtung, x0=x-Position beim Start der Simulation). In y-Richtung liegt nun allerdings eine Beschleunigung vor, und aus obiger Gleichung folgt dann
Code:
v_y=-gt+v0_y
=> y=-1/2*g*t^2-v0_y+y0
Einzige Variable ist auch hier wieder die Zeit t.

Jetzt baust du beide Gleichungen für x und y, welche dir den Ortsvektor r(x,y) geben, entweder in eine beliebige while-Schleife oder in einen Timer. Zu Beginn der Schleife bzw. beim Auslösen des Timers liest du über gettickcount wieder die Systemzeit aus, ziehst davon t0 ab, und hast einen neuen Zeitpunkt t für deine Simulation. Rechne r(t) aus (also jeweils x und y), und du hast einen Punkt, wo sich dein Objekt befindet.

Und erst hier kommt die grafische Darstellung ins Spiel. Wie du das machst, ist eigentlich egal. Ich würde ein Shape oder TPicture einfach neu plazieren. Natürlich muss x und y noch auf Bildschirmkoordinaten normiert werden, aber all das hat nix mehr mit dem freien Fall zu tun, sondern nur noch mit der grafischen Darstellung.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Simulation Freierfall

  Alt 26. Dez 2007, 13:19
Meine Antwort war auch nur für den Grafischen Teil gedacht. Aber da gibt es mehrer Möglichkeiten.

Wird der Freie Fall nicht durch den Luftwiderstand den du erwähnst noch gebremst ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Simulation Freierfall

  Alt 26. Dez 2007, 13:23
Zitat von mimi:
Wird der Freie Fall nicht durch den Luftwiderstand den du erwähnst noch gebremst ?
Doch, natürlich, und näherungsweise ist die Reibungskraft proportional zu v^2. Dadurch wird die lösung der Differentialgleichung aber erheblich schwerer. Irgendwann ist die Reibungskraft genauso gross wie die Erdanziehung, nur entegengesetztes Vorzeichen. Dann haben wir eine konstante Fallgeschwindigkeit. Aber für die Zeitspanne, wo das Objekt noch nach unten beschleunigt wird, ist die Dgl recht komplex. Ausserdem geht in dem Fall noch die Masse m des Objektes ein, da alle DGl Therme m enthalten, bis auf die Reibungskraft. Dadurch lässt sich m nicht mehr wegkürzen.

EDIT: Hier mal die Lösung bei Wikipedia. Ich denk das wird dann definitiv zu komplex für Schulstoff.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Simulation Freierfall

  Alt 26. Dez 2007, 13:37
Kommt drauf an, wie genau das werden soll...... Wenn man Grenzen Zieht es ist ein Schöner einfacher versuch....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Simulation Freierfall

  Alt 26. Dez 2007, 13:41
Welche Grenzen willst du denn ziehen?

Letztenendes ist es mit Reibung auch nicht komplizierter, denn die Lösung steht ja bei Wikipedia analytisch. Man muss also nur noch die zusätzlichen Parameter einsetzen, sprich die Masse m und den Reibungskoeffizienten beta. Aber eine Simulation zu schreiben, bei der man die Lösung noch nicht mal kapiert (ich glaub nicht dass ein 16-jähriger Schüler schon mal was von Sinushyperbolikus gehört hat) halte ich für unsinnig.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:33 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