![]() |
Flugbahn mit äusseren Einwirkungen berechnen
Hoi,
ich brauche mal eure Hilfe da ich nicht wirklich das Matheformel Genie bin ;) und zwar geht es um eine Flugbahn mit äusseren Einwirkungen. Hier mal soweit wie ich es habe, nur nun weiß ich nicht weiter :(
Delphi-Quellcode:
type
TTrajectory = record Steps : Integer; Course : Array of TPoint; end; TProjectile = class(TPersistent) private FGround : Integer; FPosition : TPoint; FAngle : Extended; FPower : Extended; FGravity : Extended; FWeight : Extended; FWind : Extended; FRange : Integer; public constructor Create; destructor Destroy; override; function Trajectory:TTrajectory; published property Angle:Extended read FAngle write FAngle; // Abschusswinkel property Power:Extended read FPower write FPower; // Abschussgeschwindigkeit property Weight:Extended read FWeight write FWeight; // Masse bzw Gewicht property Gravity:Extended read FGravity write FGravity; // Anziehungskraft property Wind:Extended read FWind write FWind; // Windgeschwindigkeit (positiv = Links, negativ = rechts) property Range:Integer read FRange write FRange; // Reichweitenbeschränkung property Position:TPoint read FPosition write FPosition; // Ausgangsposition des Projektils property Ground:Integer read FGround write FGround; // Boden end;
Delphi-Quellcode:
Ich hoffe ihr könnt mir dabei helfen :)
constructor TProjectile.Create;
begin inherited; FGravity:=9.80665; // 9,80665 m/s² auf dem 45.Breitengrad in Meereshöhe. 9,780 m/s² am Äquator. end; destructor TProjectile.Destroy; begin inherited; end; function TProjectile.Trajectory: TTrajectory; begin Result.Steps:=0; repeat Inc(Result.Steps); SetLength(Result.Course,Result.Steps); Result.Course[Result.Steps-1].X:=(FPosition.X) + Trunc(FPower * Cos(FAngle / 180 * Pi ) * Result.Steps); Result.Course[Result.Steps-1].Y:=Trunc(-(FPower * Sin(FAngle / 180 * Pi ) * Result.Steps - 0.5 * FGravity * Result.Steps * Result.Steps) + (FPosition.Y)); if FRange > 0 then if Result.Course[Result.Steps-1].X >= Result.Course[Result.Steps-1].X + FRange then begin Inc(Result.Steps); SetLength(Result.Course,Result.Steps); Result.Course[Result.Steps-1].X:=Result.Course[Result.Steps-2].X; Result.Course[Result.Steps-1].Y:=FGround; Break; end; until Result.Course[Result.Steps-1].Y >= FGround; end; Viele Grüße, Daniel |
Re: Flugbahn mit äusseren Einwirkungen berechnen
hast du ein physikbuch?
|
Re: Flugbahn mit äusseren Einwirkungen berechnen
Nein leider nicht, wobei es ja auch andere Quellen gibt wo dies erklärt wird, nur scheitert es dann noch immer am verständnis oder es umzusetzen ;)
Ich denke um sowas zu verstehen muss man es schon etwas mehr _drauf_ haben (in diesem Gebiet) oder sich damit befasst haben, das geht wohl nicht mal so eben mit einem Wiki-Artikel... wie gesagt ich bin kein Mathegenie, war schon froh das es so einigermaßen funktioniert. |
Re: Flugbahn mit äusseren Einwirkungen berechnen
da reicht physik grundkurs aufm gymnasium.
alles was du wissen musst, ist dass kraefte auf den flugkoerper einwirken und sich addieren (die raumkomponenten der kraftvektoren). du addierst alle kraefte, bildest daraus einen geschwindigkeitsvektor und addierst den dann zur geschwindigkeit des koerpers. du weisst, ein koerper im vakuum hat eine konstante geschwindigkeit. im gravitationsfeld der erde wirkt eben noch die anziehungskraft, daraus eine geschwindigkeit, ... so solltest du schon mal einen schraegen wurf hinbekommen (abschussgeschwindigkeit vermischt/addiert sich mit geschwindigkeit ausgeuebt durch erdgraviation). guck dir einfach mal die positionsformel vom schraegen wurf an (x->y). andere einfluesse wie z.b. wind/luftreibung solltest du auch einbauen koennen, wenn du das erstmal geschafft hast. wind hat mit luftreibung zu tun, deshalb sind beide quasi das gleiche. (60km/h rueckenwind im 60km/h schnellen verdecklosen auto merkt man nicht) |
Re: Flugbahn mit äusseren Einwirkungen berechnen
Das Problem dürfte in deiner Deklaration schon anfangen.
Wenn Du einen realistischen Flugverlauf darstellen willst musst Du einige Sachen noch ändern. 1) Der Wind sollte als Vektor eingehen, da er ja nicht immer nur von vorne oder hinten kommt sondern theoretisch aus allen Richtungen. 2) Die Reichweite wird nur durch den Anfangsimpuls bestimmt, dass heisst das Sie für die Berechnung der Schritte unrelevant ist! 3) Der Kraftansatz!!!! Du musst Dir vorstellen, dass jede Beeinflussung als Kraft auf die Kugel wirkt. Diese Kräfte stellst Du als Kraftgleichgewicht mit einer zusätzlichen Kraft F_res auf. z.B.: Fg + Fan + FWind=F_res Diese resultierende Kraft sollte vektoriell vorliegen und über die Beziehung F=m*a kannst Du nun die Beschleunigung a ausrechnen. Sobald Du die hast reicht es ein bestimmten Zeitintervall vorzugeben und Du kommst direkt auf die Position des Geschosses zu diesem Zeitpunkt! In den Ansätzen hast Du es ja schon so gemacht! Aber die oben genannten Punkte sollteste IMO beachten! |
Re: Flugbahn mit äusseren Einwirkungen berechnen
Zitat:
Zitat:
Zitat:
Für den idealisierten schiefen WEurf im Vakuum reicht allerdings schon die Mathematik und das Physikverständnis der Mittelstufe aus. Und wenn ich mich recht erinner haben wir ihn auch in der acht oder neun durchgenommen. |
Re: Flugbahn mit äusseren Einwirkungen berechnen
die formeln lassen sich sicher im internet/wikipedia finden und zwecks modellcharakter kann man ja von kugelform ausgehen. ich hab in meinem formelbuch mal luftwiderstandskonstanten fuer bestimmte formen gesehen... sollte also nicht so schwer sein.
|
Re: Flugbahn mit äusseren Einwirkungen berechnen
Ich wollte _keine_ Simulation programmieren, ich denke da eher an Worms als Vorbild, daher auch _nur_ die simple Windberechnung, und die Reichweite ist auch mehr als TTL zu sehen.
|
Re: Flugbahn mit äusseren Einwirkungen berechnen
ja dann such nach "ballistischer flugbahn" und du hast was brauchbares
|
Re: Flugbahn mit äusseren Einwirkungen berechnen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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