Skip to main content

Wie man eine Flugbahn von einem Projektil berechnen kann

Hier habe ich einige Infomationen zum Thema Ballistik zusammengetragen, die alle hauptsächlich aus dem Internet kommen. Es geht hier nur um Aussenballistik, das heißt, der Flug des Pfeiles oder der Gewehrkugel in der Luft, und wie er sich verhält.

Es kommen hier vor allem 2 Einflüsse zum Tragen:

Luftwiderstand

Schwerkraft

Die Kraft, mit der das Geschoss durch die Luft abgebremst wird (Opens external link in new windowhttp://de.wikipedia.org/wiki/Luftwiderstand):

Die Verzögerung, die sich daraus durch die Masse des Geschosses ergibt:

Der Luftwiderstandsbeiwert ändert sich mit der Veränderung der Geschwindigkeit. Das läßt sich aber vor allem wegen der Schallmauer nicht mehr mathematisch beschreiben. Duch Versuchen hat man für ein standardisiertes Geschoss die Luftwiderstandsbeiwerte für die unterschiedlichen Geschwindigkeiten ermittelt. Die Tabellen für den Luftwiderstandsbeiwert habe ich Opens external link in new windowhier gefunden. Für einen Armbrustpfeil gibt es keine Tabelle, das ist aber nicht so schlimm, weil ein Armbrustpfeil sehr langsam fliegt und auf den Durchmesser bezogen sehr schwer ist, im Gegensatz zu einer Gewehrkugel. Der Luftwiderstand wirkt sich daher nicht so stark aus. Ich habe für das Programm Arrowmatcher einfach die G1 - Tabelle verwendet. Man könnte für Pfeile sogar mit einem konstanten Luftwiderstandsbeiwert rechnen, was auch sehr genaue Ergebnisse liefern würde.

Ein ähnliches Geschoss wird auch einen ähnlichen Luftwiderstand wie das Standardgeschoss haben. Man kann das mit einen Formfaktor berücksichtigen:

Wenn es jetzt gelingt, den Luftwiderstandsbeiwert unseres Geschosses zu ermitteln z. B. durch Geschwindigkeitsmessungen an 2 verschiedenen Entfernungen, dann können wir damit die Verzögerung berechnen, und in der Folge durch umstellen der Formel (1) den Luftwiderstandsbeiwert errechnen. Nun können wir in der Tabelle den Luftwiderstandsbeiwert für das Standardgeschoss ablesen. Die Geschwindigkeit ist der Mittelwert unserer 2 Geschwindigkeiten, die wir auf die 2 Entfernungen gemessen haben. Jetzt läßt sich der Formfaktor berechnen.

Um jetzt eine Flugbahn berechnen zu können nimmt man einen kurzenZeitabschnitt her z.B.: 0.1 Sekunde. Für diesen Zeitabschnitt geht man jetzt davon aus, daß der Luftwiderstandsbeiwert konstant ist, was ja nicht genau stimmt, weil sich die Geschwindigkeit geringfügig ändert.Es wird außrdem die vertikale und die horizontale Komponente gesondert berechnet. Mit den folgenden 2 Formeln berechnet man die horizontale und die vertikale Verzöerung. Die Erdbeschleunigung wird ganz einfach von der vertikalen Komponente der Luftwiderstandsverzögerung abgezogen:

Nachdem jetzt beide Verzögerungs-Komponenten berechnet wurden, werden beide gesondert weitergerechnet:

Die Fläche unter der roten Kurve ist die Geschwindigkeitsdifferenz. Diese Fläche wird in Rechtecke zerlegt. Die Zeitdifferenz sollte möglichst klein sein, um den Fehler klein zuhalten. Man kann an der Grafik erkennen, daß es so nicht ganz stimmen kann. Je kleiner man den Zeitabschnitt wählt, um so kleiner wird der Fehler sein.

Beim Geschwindigkeits - Zeit Diagramm ist die Fläche unter der roten Kurve der zurückgelegte Weg. Die Fläche, die der Weg sein soll wurde als Trapez berechnet. Das stimmt nicht ganz, weil die rote Kurve ja nicht gerade ist. Auch in diesem Fall gilt: je kleiner die Schrittweite umso genauer das Ergebnis. Um den Fehler klein zu halten würde sich das Opens external link in new windowRunge-Kutta Verfahren anbieten. Wenn man die Geschwindigkeits differenz von der Anfangsgeschwindigkeit abzieht hat man die Endgeschwindigkeit vom ersten Berechnungsschritt.

Das war jetzt der erste Schritt.

Für die folgenden Schritte geht man genau gleich vor. Die Endgeschwindigeit vom ersten Schritt ist jetzt die neue Eingangsgeschwindigkeit für den zweiten Schritt und so weiter.

Einfach die Geschwindigkeitsdifferenz von der Geschwindigkeit abziehen und somit hat man die Geschwindigkeit für den nächsten Schritt.

Auf diese Weise kann man eine Flugbahn berechnen. Dieses Verfahren ist zum händischen Rechnen etwas aufwendig, ist aber als Computerprogramm ideal. Es gibt noch andere Verfahren, die nicht so allgemein gltig sind, aber dafür schneller und einfacher zu rechnen. Ein Verfahren wird auf dieser Website erklärt: Opens external link in new windowhttp://lutzmoeller.net/Schiessen/Weite-Schuesse/Weite-Schuesse-4.php

calculation of a trajectory for example

#
# Berechnung einer Flugbahn von einer Gewehrkugel
# Dieses Script kann mit GNU Octave ausgeführt werden ( https://www.gnu.org/software/octave/ )
# Einfach den Code in einer Datei "Flugbahnberechnung.m" copypasten
# und ausführen: 
#
# octave Flugbahnberechnung.m
#
#


# Durchmesser und Gewicht der Gewehrkugel
d = 0.008                       # Durchmesser der Gewehrkugel in m
m = 0.007                       # Masse der Gewehrkugel in kg

BC = 0.4                        # Ballistischer Koeffizient


d_inch = d * 39.3701            # Durchmesser in inch
m_pound = m * 2.20462           # Masse in pound

# Wenn die Gewehrkugel dem Standardgeschoss entspricht, dann wäre der Formfaktor 1.0
# Das Standardgeschoss wiegt 1 Pfund und hat 1 inch Durchmesser
# http://en.wikipedia.org/wiki/Ballistic_coefficient
formfactor = m_pound / (d_inch ^ 2.0 * BC)

# die Berechnung erfolgt Schrittweise über die Zeit.
# Je kleiner die Schrittweite, desto genauer das Ergebnis
timestep = 0.01                 # Schrittdauer in sec

# Abschußrichtung einstellen
vx = 200.0                      # die waagrechte Komponente der Anfangsgeschwindigkeit der Gewehrkugel m/s
vy = 10.0                       # die senkrechte Komponente der Anfangsgeschwindigkeit der Gewehrkugel m/s, 
                                # bei einem waagrechten Schuß ist das 0, nach unten ist (-) und nach oben ist (+)

# Startwerte der Flugbahn
sx = 0.0                        # waagrechte Komponente vom Weg in m
sy = 0.0                        # senkrechte Komponente vom Weg in m

rho = 1.2041                    # Dichte der Luft in kg/m³
g = 9.81                        # Erdbeschleunigung in m/s²
t = 0.0                         # Flugzeit, beginnt bei 0
A = d^2.0 * pi / 4.0            # Querschnittsfläche der Gewehrkugel in m²

mach_1 = 340.3;                 # Gewschwindigkeit bei Mach 1 in m/s

# Felder mit den Machzahlen und den dazugehörigen cw Werten der G1 Tabelle
# von www.jbmballistics.com/ballistics/downloads/downloads.shtml
mach_values = [
0.00, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.50, 3.00, 4.00, 5.00
]
cw_values = [
0.26, 0.23, 0.22, 0.21, 0.20, 0.20, 0.21, 0.25, 0.34, 0.48, 0.58, 0.63, 0.65, 0.66, 0.65, 0.64, 0.63, 0.62, 0.60, 0.59, 0.53, 0.51, 0.50, 0.49
]


# Schleife durchlaufen, solange die Entfernung kleiner als 350m ist.
# In jedem durchlauf wird ein Zeitschritt berechnet.
while sx < 350.0
  printf("------------------------------------------------------------\n")

  # gesamte Geschwindigkeit, Senkrechte und waagrechte Komponente vektoriell addieren
  v = sqrt(vx^2.0 + vy^2.0)
  
  # cw Wert der Geschwindigkeit aus der Tabelle (G1) holen:
  mach = v / mach_1
  cw = spline(mach_values,cw_values,mach)
  
  # Verzögerungskraft durch Luftwiderstand in N
  # http://de.wikipedia.org/wiki/Luftwiderstand
  F = 0.5 * rho * A * v^2.0 * cw * formfactor  

  # Die Verzögerungskraft aufteilen in eine waagrechte und senkrechte Komponente.
  Fx = F * vx / v
  Fy = F * vy / v

  # waagrechte und senkrechte Komponente der Verzögerung (negative Beschleunigung) in m/s²
  # Bei der senkrechten Komponente wird einfach die Erdbeschleunigung g dazugezählt.
  ax = -Fx / m 
  ay = -Fy / m - g

  # Geschwindigkeitsdifferenzen
  delta_vx = ax * timestep
  delta_vy = ay * timestep

  # Zurückgelegter Weg in dem Zeitschritt
  delta_sx = vx * timestep + delta_vx * timestep / 2.0
  delta_sy = vy * timestep + delta_vy * timestep / 2.0

  # Die zurückgelegten Weg in dem Zeitschritt dazuzählen:
  sx = sx + delta_sx
  sy = sy + delta_sy

  # Die Gewschwindigkeiten nach dem Zeitschritt errechnen
  vx = vx + delta_vx
  vy = vy + delta_vy

  # den Zeitschritt zur Flugzeit dazuzählen
  t = t + timestep


endwhile