Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ball-Flugbahn berechnen (https://www.delphipraxis.net/12007-ball-flugbahn-berechnen.html)

Yheeky 18. Nov 2003 17:31


Ball-Flugbahn berechnen
 
Hi Physik-Freaks :zwinker:
es geht um das Entwickeln einer Formel. Ich habe einen Ball (z.B. einen Fussball) der vom Boden geschossen wird. Wie bekomme ich eine Formel, mit der ich die Flugbahn berechnen kann? Hab Physik letztes Jahr abgewählt, aber ein paar Faktoren müssen ja zwingend in der Formel vorkommen:
g (9,81), s (Strecke) und v (Geschwindigkeit) doch auf jeden Fall. Wie sieht´s mit der Beschleunigung "a" aus?

Gruß Yheeky

Thunderchild 18. Nov 2003 17:36

Re: Ball-Flugbahn berechnen
 
a (in diesem Falle g) wirkt sich auf die Geschwindigkeit aus.
Wenn Du das diskret rechnen willst (zum Bleistift für einen Graphen), dann berechne für jeden Schritt zuerst die neue Geschwindigkeit v0+a*t und berechne dann h:=h+v*deltaT;

ansonsten ist s=-g/2*t^2+v0*t (v0 ist senkrechte Anfangsgeschwindigkeit, g ist negativ, weil es nach unten zieht und damit die Höhe s verringert).

d3g 18. Nov 2003 17:37

Re: Ball-Flugbahn berechnen
 
Beim Fußball handelt es sich um einen schiefen Wurf mit Abwurfhöhe hA = 0.

y-Richtung:
sy(t)=v0*sin alpha * t - 0.5*g*t^2
vy(t)=v0*sin alpha - gt
ay(t)=-g

x-Richtung:
sx(t)=v0*cos alpha * t
vx(t)=v0*cos alpha
ax(t)=0

alpha ist der Abwurfwinkel, v0 der Betrag des Geschwindigkeitsvektors (die Abwurfkraft also). Im Prinzip sollte es reichen, vom Ursrungs links unten aus nach der Zeit t sy(t) weiter oben und sx(t) weiter rechts den Ball zu zeichnen.

MrKnogge 18. Nov 2003 17:43

Re: Ball-Flugbahn berechnen
 
hat jemadn auch ne Formeloder n bissl Code für den Winkel bei "Block-breaker" ?

devnull 18. Nov 2003 17:48

Re: Ball-Flugbahn berechnen
 
Hi,
hab auch schon mal Flugbahnen berechnet (allerdings für mein TankWars-ähnliches Spiel):

Delphi-Quellcode:
 koor_x := speed * cos(winkel / 180 * Pi ) * t;
 koor_y := speed * sin(winkel / 180 * Pi ) * t - 0.5 * erdanziehung * t * t;
'speed': für die Geschwindigkeit, mit der der Gegenstand abgefeuert wird
'winkel': der Winkel des Rohres zum waagrechten Untergrund
'erdanziehung': erklärt sich von selber
't': Anzahl des Durchlaufs f(t)

:wall: Hoffe, dass das so geht ! Hab ich mir grad ausgedacht ...

devnull

Yheeky 18. Nov 2003 19:21

Re: Ball-Flugbahn berechnen
 
Danke erstmal für die Antworten. Ich habe allerdings ein paar Fragen:
Wie kann ich überhaupt die Flugbahn des Balles jetzt mal auf eine Form übertragen (mit Canvas)?

Es sind ja, wenn ich das richtig sehe, auch verschiedene Formeln hier rein geschrieben worden. Welche ist das jetzt die beste bzw. die richtig?

Wichtig ist mir aber erst mal, dass ich das visuell mit einem Graphen auf den Bildschirm bekomme...

Gruß Yheeky

d3g 18. Nov 2003 20:21

Re: Ball-Flugbahn berechnen
 
Zitat:

Zitat von Yheeky
Es sind ja, wenn ich das richtig sehe, auch verschiedene Formeln hier rein geschrieben worden. Welche ist das jetzt die beste bzw. die richtig?

Meine natürlich ;-). Im Ernst: Die Formeln von Thunderchild, devnull und mir sind dieselben. Verwende einfach den von devnull geposteten Programmcode.

Yheeky 18. Nov 2003 20:25

Re: Ball-Flugbahn berechnen
 
Okay, aber wie kann ich´s genau auf die Oberfläche zeichnen?
Und was ist bei devnull mit "t" gemeint?

HAF4ever 18. Nov 2003 21:26

Re: Ball-Flugbahn berechnen
 
:gruebel: und wie siehts mit den luftwiederstand aus...?
das dürfte doch auch keine schwierigkeit sein die formel irgendwoher auszugraben ...

woki 18. Nov 2003 22:57

Re: Ball-Flugbahn berechnen
 
HI,

wenn du den Luftwiederstand berücksichtigen willst, wird es eine ganze Ecke heftiger, weil der in hohem Maße von der Geschwindigkeit abhängt. Je schneller, desto mehr bremst er. Außerdem gibt es Bereiche, in denen F~v, andere in denen f~v^2 oder sogar f~v^3 gilt.

Grüsse
Woki

Seniman 18. Nov 2003 23:27

Re: Ball-Flugbahn berechnen
 
Hi,

mit "t" ist bei devnull die Zeit gemeint. Weise also t irgendeinen positiven Wert zu, dann kannst du in Abhängigkeit davon die Koordinaten des Balls ausrechnen.
Zum Zeichnen der Flugbahn rate ich dir die Form.Canvas (die Grafikoberfläche der Form) zu benutzen. Dazu solltest du zwei Befehle kennen:
Form.Canvas.MoveTo(x,y) setzt den (unsichtbaren) Grafik-Cursor auf die Koordinaten (x,y)
Form.Canvas.LineTo(x,y) zeichnet eine Linie von der aktuellen Position des Grafik-Cursors zu den Koordinaten (x,y) und setzt den Cursor darauf.
Statt "Form" musst du natürlich den Namen der Form angeben, auf der du zeichnen willst.

Probier einmal folgende Prozedur:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Koor_x, Koor_Y,speed,winkel,erdanziehung,t: Real;
begin
t:=0;
Koor_x:=100;
Koor_y:=100;
winkel:=45;
Speed:=30;
Erdanziehung:=9.81;
Canvas.MoveTo(100,100);
While t<100 do
  begin
    koor_x := speed * cos(winkel / 180 * Pi ) * t+100;
    koor_y := -(speed * sin(winkel / 180 * Pi ) * t - 0.5 * erdanziehung * t * t)+100;
    Canvas.LineTo(Round(koor_x),Round(koor_y));
    t:=t+0.1;
  end;
end;
Das sollte eine Flugbahnaufzeichnen.

Grüße
Seniman

[edit=FuckRacism]Delphi-Tax gesetzt, nim doch bitte in Zukunft delphi anstatt code Mfg, FuckRacism[/edit]

Yheeky 19. Nov 2003 14:48

Re: Ball-Flugbahn berechnen
 
Ah, okay, danke jetzt weiss ich, wie ich es zeichnen kann. Bei deinem Beispiel fällt der Ball aber viel zu weit nach unten. Schließlich muss er ja auf der Startebene wieder landen.

d3g 19. Nov 2003 14:51

Re: Ball-Flugbahn berechnen
 
Mensch, Yheeky! Schau dir doch die Schleife mal an: sie zeichnet einfach 1000 Linien, und die Abbruchbedingung ist unabhängig davon, wo sich der Ball befindet. Wenn du willst, dass der Ball nicht unter einen bestimmten y-Wert fällt, dann musst du das einbauen!

Yheeky 19. Nov 2003 14:57

Re: Ball-Flugbahn berechnen
 
Sachte, sachte! Das war nur ne Feststellung! Bin ja schon dabei das einzubauen...nur ruhig´ Blut!

Alexander 19. Nov 2003 15:45

Re: Ball-Flugbahn berechnen
 
HI,
da will ich mich auch mal einmischen, folgende qudratische Gleichung sollte das machen:
s(t)= ½ * a * t² + V0 * t + s0
Wobei a die Beschleunigung ist (9,81 m/s²) und V0 die Startgeschwindigkeit und S0 die Startort ist.
Letzteres müsste natürlich bei dir 0 sein.
Ach so und t ist natürlich die Zeit.
Wenn du die entsprechende GEschwindigkeitsgleichung haben willst, so musst du sie nur ableiten (Stichwort Grenzwert und Delta von y durch Delta von x)

PS: Wie kann man nur das beste Fach (neben Info und Mathe) abwählen :gruebel:

devnull 19. Nov 2003 16:01

Re: Ball-Flugbahn berechnen
 
Hi Yheeky,

Delphi-Quellcode:
[b]While (t < 100) and (koor_y > 100) do[/b]
  begin
    koor_x := speed * cos(winkel / 180 * Pi ) * t+100;
    koor_y := -(speed * sin(winkel / 180 * Pi ) * t - 0.5 * erdanziehung * t * t)+100;
    Canvas.LineTo(Round(koor_x),Round(koor_y));
    t:=t+0.1;
  end;
So sollte deine Schleife aufhören, wenn sich koor_y unter dem Wert 100 befindet.

:wiejetzt: PS: Wieso klappt das mit dem Bold nich ???????

:thuimb: devnull

[EDIT]PS[/EDIT]

czapie 19. Nov 2003 16:17

Re: Ball-Flugbahn berechnen
 
Hi Leute,

ich glaube ich liege nihct falsch, wenn ich sage ihr habt etwas vergessen :wink:

Die Gewichtskraft die zweifelsohne nach untern wirkt ist abhängig von der Masse.
Aber ich finde in keiner Formal eine Masse.

Czapie.

devnull 19. Nov 2003 16:26

Re: Ball-Flugbahn berechnen
 
@Czapie:
:zwinker: Also da muss ich dir zustimmen; aber das is ja auch in der Formel schon drin:

Delphi-Quellcode:
koor_y := -(speed * sin(winkel / 180 * Pi ) * t - 0.5 * erdanziehung * t * t)+100;
Erdanziehung:
0,5 * g * t²
:warn: g steht hier für die Erdanziehungskraft g = 9,81 kgms^-2

devnull

Thunderchild 19. Nov 2003 16:35

Re: Ball-Flugbahn berechnen
 
Die Masse hat keine Einwirkung auf die Fallgeschwindigkeit (vorausgesetzt, man kann die Luftreibung vernachlässigen. Eine Feder fällt im Vakuum genauso schnell zu Boden wie ein Stein. Es wirkt zwar mehr Kraft wegen F=m*a, aber dafür muss auch eine höhere Trägheit überwunden werden, die ebenfalls von der Masse abhängt und auf der anderen Seite der Gleichung steht.

Christian S. 19. Nov 2003 17:39

Re: Ball-Flugbahn berechnen
 
Die "Trägheit" hängt nicht von der Masse ab, weil es keine Größe, sondern ein Verhalten ist. Trägheit heißt ganz einfach, dass das 1. Newton'sche Gesetz gilt.

Yheeky 19. Nov 2003 17:54

Re: Ball-Flugbahn berechnen
 
@Alexander: Ich war ja auch net so schlecht drin, aber ich hab mich dann doch für Chemie entschieden. Weiss nicht, ob das so gut war :roll:
Naja, das eigentliche Problem war ja das Zeichnen und die Frage hab ich in der Schule gepostet, weil mir langweilig war und ich keine Formeln zu Hand hatte :lol:

@devnull:
Hab das "Problem" jetzt über die Strecke gelöst. Brauche die anderen Formeln sowieso noch für die anderen Berechnungen:

Code:
s := (Sqr(v0)*sin(alpha))/erdanziehung;
Und ich muss den anderen auch zustimmen, dass die Fallgeschwindigkeit nicht von der Masse abhängt. Hab da auch ein nettes Beispiel gefunden, falls es den ein oder anderen interessiert:

http://www.walter-fendt.de/ph11d/wurf.htm

Danke!
Gruß Yheeky


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 Uhr.

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