Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Flugbahn mit äusseren Einwirkungen berechnen (https://www.delphipraxis.net/55107-flugbahn-mit-aeusseren-einwirkungen-berechnen.html)

static_cast 16. Okt 2005 21:21


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:
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;
Ich hoffe ihr könnt mir dabei helfen :)

Viele Grüße,
Daniel

ripper8472 16. Okt 2005 21:43

Re: Flugbahn mit äusseren Einwirkungen berechnen
 
hast du ein physikbuch?

static_cast 16. Okt 2005 22:09

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.

ripper8472 16. Okt 2005 22:51

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)

atreju2oo0 16. Okt 2005 22:59

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!

Luckie 16. Okt 2005 23:02

Re: Flugbahn mit äusseren Einwirkungen berechnen
 
Zitat:

Zitat von static_cast
und zwar geht es um eine Flugbahn mit äusseren Einwirkungen.

WAS für äußere Einwirkungen? Für den Windwiderstand zum Beispiel musst du Differentialgleichungen lösen.

Zitat:

Zitat von ripper
da reicht physik grundkurs aufm gymnasium.

Und ich bezweifele, dass das im Mathematikgrundkurs des Gymnasiums gemacht wird. Das haben wir Bauingenieuer im dritten Semester Mathematik und im dritten Semster Mechanik gemacht.

Zitat:

Zitat von ripper
wind hat mit luftreibung zu tun, deshalb sind beide quasi das gleiche.

Und genau das ist das Problem. Es ist nämlich Luftreibung, da kommen dann nämlich noch die aerodynamischen Gesetze mit ins Spiel. Und abhängig von der Geschwindigkeit verhalten sich die Luftmoleküle anders gegenüber der Fläche, auf die sie treffen.

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.

ripper8472 16. Okt 2005 23:12

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.

static_cast 16. Okt 2005 23:14

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.

ripper8472 16. Okt 2005 23:19

Re: Flugbahn mit äusseren Einwirkungen berechnen
 
ja dann such nach "ballistischer flugbahn" und du hast was brauchbares

static_cast 16. Okt 2005 23:22

Re: Flugbahn mit äusseren Einwirkungen berechnen
 
Zitat:

Zitat von ripper8472
ja dann such nach "ballistischer flugbahn" und du hast was brauchbares

Danke das ist natürlich sehr hilfreich... :|


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 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