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 (http://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 hier 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 Runge-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: http://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