Bergauf und bergrunter - halte drunter: Bahnkurve eines Jagdgeschosses

Modellierung und Simulation der Geschossbahn unter Berücksichtigung des Luftwiderstandes

Außenballistik, Luftreibung, Geschossbahn, Trajektorie, Python
Dieter Graessle ; email: dieter@dieter-graessle.de ; web: https://www.dieter-graessle.de

Einleitung

Bergauf und bergrunter - halte drunter!

Jeder Jäger hat diesen Merksatz im Rahmen seiner Schießausbildung gelernt und in vielen Internetforen wird darüber diskutiert: Woran liegt das, wieviel macht das aus, ist das nur Jägerlatein?

Diese kleine Studie soll dieser Frage nachgehen, und zwar unter Anwendung der physikalischen Grundlagen: Kräfte und deren Wirkung auf die Bewegung eines Geschosses.

Die Berechnung von ballistischen Bahnkurven erfolgt im einfachsten Fall ohne Berücksichtigung des Luftwiderstandes. Dadurch ergeben sich sehr einfache und analytisch lösbare Bahngleichungen. Für Geschossbahnen kann der Luftwiderstand, der mit dem Quadrat der Geschwindigkeit steigt, in der Regel kaum vernachlässigt werden. Die entstehenden Gleichungen sind Differenzialgleichungen bzw. Differenzialgleichungssysteme, die mit entsprechenden numerischen Iterationsverfahren gelöst ( = simuliert ) werden können. Das verwendete physikalische Prinzip zum Aufbau der Gleichungsstruktur ist das der Superposition der zueinander orthogonalen Bewegungskomponenten in waag- und senkrechter Richtung. Im Gegensatz zum reibungsfreien Modell ist hier, bedingt durch die quadratisch von der Gesamtgeschwindigkeit abhängige Luftreibung, eine vollständige Entkoppelung der Bewegungskomponenten nicht mehr möglich.

Die Programmcodes sind für die Betrachtung der Resultate nicht wichtig. Sie sind für Interessierte jedoch mit dargestellt.

Disclaimer:

Die gezeigten Simulationen stellen eine starke Vereinfachung der Realität dar und sind nicht mit der Präzision eines Ballistikrechners vergleichbar.

Der Python-Code ist amateurhaft und simpel programmiert, aber dafür leicht nachvollziehbar.

Prinzipielle Struktur der Bewegungsgleichungen

Die ballistische Bewegung eines Körpers (= bei einem Wurf) kann mit Hilfe der Zerlegung in Waagrecht- und Senkrechtkomponenten mathematisch beschrieben werden.

Vernachlässigt man den Luftwiderstand, lässt sich die zeitliche Entwicklung der Waagrechtkomponente (x-Koordinate) darstellen als:

x(t)=vxt

Die Senkrechtkomponente (y-Koordinate) ergibt sich als beschleunigte Bewegung zu:

y(t)=y0+v0t12gt2

wobei g die Fallbeschleunigung mit einem Wert von 9,81ms2 ist.

Durch auflösen der Gleichung der x-Komponente nach t und einsetzen in die Gleichung der y-Komponente ergibt sich eine Parabelbahn.

Für ein Büchsengeschoss kann der Luftwiderstand nicht vernachlässigt werden. Dies hat Auswirkungen für die Berechnung der Bahnkurve aus den Gleichungen der x- und y-Komponenten. Im Folgenden soll dies dargestellt werden.

Die Luftreibung

Die Luftreibungskraft wirkt entgegen der Bewegungsrichtung (Geschwindigkeit) und hängt quadratisch von der Geschwindigkeit in Bahnrichtung ab.

Luftreibungskraft: FR=12ρcwAvB2

mit

vB=(vxvy)= Bahngeschwindigkeitsvektor

vB=|vB|= Betrag der Geschwindigkeit des Geschosses in Bahnrichtung

ρ= Dichte der Luft

cw= Widerstandsbeiwert des Geschosses

A = Stirnfläche (Querschittsfläche bezüglich Bahngeschwindigkeitsvektor) des Geschosses

Für ein Geschoss mit kreisförmiger Querschnittsfläche ergibt sich mit A=r2 und r= Geschossradius:

FR=12ρcwr2πv2

Der cw-Wert bewegt sich für ein Jagdgeschoss im Überschallbereich in der Nähe von ca 0,5. Genaue Angaben hierzu sind nicht leicht zu finden. Eine Umrechnung des ballistischen Koeffizienten in den cw-Wert ist möglich.

Für die Dichte der Luft wird vereinfachend der Wert ρ=1,2250 kgm3 verwendet (Luftdichte Meereshöhe bei 1013 hPa, Temperatur = 15°C).

Der physikalische Hintergrund für die Luftdichte wird in der einschlägigen Fachliteratur beschrieben und wird hier nicht weiter behandelt.

Literatur:

https://de.wikipedia.org/wiki/Strömungswiderstand

Aufstellung der Bewegungsgleichungen zur Berechnung der Flugbahn:

Die Darstellung der Geschossbahn erfolgt in x- und y-Koordinaten für die Horizontal- und Vertikalkomponenten der Bewegung.

Zustandsgrößen:

Die Flugbahn des Geschosses wird im kartesischen Koordinatensystem beschrieben durch die folgenden Zustandsgrößen:

x(t) = horizontale Ortskoordinate

vx(t) = Geschwindigkeitskomponente in x-Richtung = Horizontalgeschwindigkeit

y(t) = vertikale Ortskoordinate

vy(t) = Geschwindigkeitskomponente in y-Richtung = Vertikalgeschwindigkeit

Rotation (Drall), Seitenwinde und sich daraus ergebende Effekte (Präzession, Magnus-Effekt) werden in diesem einfachen Modell nicht berücksichtigt. Im einfachsten Fall ohne Berücksichtigung der Luftreibung wäre vx(t) konstant und eine relative einfach analytische Berechnung der Bahnkurve wäre möglich. Durch die Berücksichtigung des Luftwiderstands wird vx(t) eine sich zeitlich ändernde Größe.

Hilfsgrößen

Zur Berechnung der Bahnkurve werden verschiedene Hilfsgrößen benötigt:

Bahngeschwindigkeit in Geschossrichtung: vB=vx2+vy2

θ = Tangentensteigungswinkel der Geschossbahn bezüglich der Horizontalen am Bahnpunkt P(x|y):

tan(θ)=vyvxθ=arctan(vyvx)

Komponentenzerlegung der Luftreibungskraft:

Zur Integration der Bewegungsgleichungen muss die Reibungskraft in die x- und y-Komponenten zerlegt werden:

FR,x=cos(θ)FR

FR,y=sin(θ)FR

Da die Reibungskraft entgegengesetzt der Bewegungsrichtung θ zeigen, erhalten die Kraftkomponenten ein Minus als Vorzeichen.

Dynamik der Geschossbewegung:

Die Krümmung der Geschossbahn resultiert aus der Veränderung der x- und y-Komponenten der Geschossgeschwindigkeit. Geschwindigkeitsänderungen bezogen auf die Zeit sind Beschleunigungen, die sich über die Grundgleichung der Newtonschen Mechanik F=ma berechnen lassen:

ax=d2xdt2=dvxdt=Fxm=FR,xm

ay=d2ydt2=dvydt=Fym=FG+FR,ym

mit der Gewichtskraft FG=mg und g=9,81ms2 (Fallbeschleunigung / Ortsfaktor)

Differenzialgleichungen für die Geschossbahn

Die Ermittlung der Geschossbahn erfolgt durch numerische Integration der Diffentialgleichungen der Bewegungskomponenten. Die obigen Gleichungen, in denen die zweiten Ableitungen der Ortskoordinate verwendet werden, werden jeweils durch zwei Differenzialgleichungen ersetzt. Damit ergibt sich ein System linearer Differenzialgleichungen erster Ordnung.

dxdt=vx

dvxdt=FR,xm

dydt=vy

dvydt=FG+FR,ym

Dieses Differenzialgleichungssystem kann nun nach Festlegung der Konstanten m,r,cw,ρ,g und des Abschusswinkels θ0 für ein Zeitintervall T=[0,tmax] numerisch gelöst und damit die Geschossbahn dargestellt werden.

Geschossbahn und Visierlinie, Justierung der Zieleinrichtung

Die Motivation für die Modelierung der Geschossbahn ist die Abweichung von Visierpunkt der Visiereinrichtung und Treffpunkt des Geschosses. Hierfür die Zusammenführung der Geschossbahn mit einer Visierlinie (modelliert durch eine Geradengleichung) nötig. Geht man davon aus, dass als Ziel eine vertikale Fläche dient, so entspricht die Differenz h(x) der y-Werte von Geschosskurve und Ziellinie der Abweichung von Ziel- und Treffpunkt. Die folgende Abbildung soll die geometrische Idee der Ansätze für die Geschossbahn und die Ziellinie verdeutlichen.

h(x) = Differenz der y-Werte von Geschossbahn und Visierlinie

β = Winkel zwischen Laufseele und Ziellinie

dz = Abstand zwischen Laufseele und Ziellinie (optische Achse des Zielfernrohrs)

l = Lauflänge

Zielgeometrie bei nicht-horizontalem Ziel

Der Ausgangspunkt der Ziellinie wird in den Ursprung O(0|0) des Koordinatensystems gelegt. Das Patronenlager als Ausgangspunkt der Geschossbahn wird bei parallel zum Zielfernrohr ausgerichtetem Lauf (als0 β=0) durch den Punkt G(0|dz) angenähert. Natürlich ist der Winkel zwischen Laufseele und Ziellinie β0, wodurch sich der Punkt G verschiebt. Durch einfache Berechnung am rechtwinkligen Dreieck ergibt sich damit für G

G(xg|yg) mit

xg=dzsin(β)

yg=dzcos(β))

Beim Anvisieren eines Zielpunktes, der nicht auf einer Horizontalen mit den Zielfernrohr liegt, wird das winkelstarr montierte System Zielfernrohr / Lauf um den vertikalen Winkel α unter dem das Ziel erscheint, vertikal gedreht. Dieser Winkel α muss nun noch zu β addiert werden. Damit ergibt sich für den Geschossausgangspunkt:

α = Zielwinkel: Winkel, unter der das Ziel bezüglich der Horizontalen erscheint.

xg=dzsin(β+α)

yg=dzcos(β+α)

Berücksichtigung des Laufs:

Setzt man nun einen Lauf der Länge l am Patronenlager an, so ändert sich der Ausgangspunkt der Geschossbahn nochmals. Mit Hilfe weiterer Berechnungen am rechtwinkligen Dreieck ergibt sich eine Verschiebung in

x-Richtung von lcos(β+α)

y-Richtung von lsin(β+α)

und damit ergibt sich für die Koordinaten von G

xg=dzsin(β+α)+lcos(β+α)

yg=dzcos(β+α)+lsin(β+α)

Anfangsgeschwindigkeiten

Tritt das Geschoss mit der Mündungsgeschwindigkeit v0 unter dem intialen Steigungswinkel α+β aus dem Lauf aus, so errechnen sich die beiden Komponenten der Anfangsgeschwindigkeit als:

vx,0=cos(α+β)v0

vy,0=sin(α+β)v0

Implementierung mit Python 3

Die oben gezeigten Gleichungen wurden mit Python3 umgesetzt. Die numerische Lösung des Differenzialgleichungssystems erfogt mit Hilfe des Integrierers scipy.integrate.odeint.

In [6]:
%matplotlib inline

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import math

def deg2rad(deg): # Winkelgrade in Rad
    return deg * 3.14159 / 180

def luftwiderstand1dim(v, d, r,): 
    # v = Geschwindigkeit
    # d = Durchmesser
    # r = Dichte
    # cw = cw-Wert
    # F = Luftreibungskraft
    F = 0.5 * r * cw * d**2 * (3.141 / 4) * v**2
    return F 

def luftwiderstand2dim(v_x, v_y, d, rho, cw): # Luftwiderstandskraft des Geschosses in zwei Dimensionen
    # v_x = Horizontalgeschwindigkeit
    # v_y = Vertikalgeschwindigkeit
    # d = Geschossdurchmesser
    # rho = Dichte der Luft
    # cw = Cw-Wert
    # F = Reibungskraft
    
    v = (v_x**2 + v_y**2)**0.5
    r = d/2
    F = 0.5 * rho * cw * r**2 * 3.14159 * v**2
    phi = math.atan(v_y / v_x)
    Fx = F * math.cos(phi); Fy = F * math.sin(phi)
    return Fx, Fy
    
# Differenzialgleichungsmodell

def derivative(x,t, d, r, cw, m):
    # x = Zustandsvektor
    # t = Zeitpunkt
    # d = Geschossdurchmesser, für Lufwiderstand
    # r = Dichte der Luft, für Luftwiderstand
    # cw = cw-Wert, für Luftwiderstand
    # m = Geschossmasse
    
    dx = [0, 0, 0, 0]
    lw_x, lw_y = luftwiderstand2dim( v_x = x[1], v_y = x[3], d=d, rho=r, cw = cw )
    dx[0] = x[1] # dx = vx
    dx[1] = -lw_x / m # dvx = ax
    dx[2] = x[3] # dy = vy
    dx[3] = -9.81 -lw_y / m #  dvy = ay
    
    return dx

def simulate(t_max, ziel, just, d_z, l, d, r, cw, v0, m ):
    
    b = deg2rad(just) # Winkel zwischen Laufseele und Ziellinie umgerechnet in rad
    a = deg2rad(ziel) # Elevationswinkel der Ziellinie umgerechnet in rad

    # Anfangsgeschwindigkeit
    vy0 = v0 * math.sin(b + a)
    vx0 = v0 * math.cos(b + a)

    # Abschusspunkt G
    x_0 = -d_z * math.sin(b + a)  + l * math.cos(a+b) # d_z ist negativ
    y_0 = d_z * math.cos(b + a) + l * math.sin(a+b)# d_z ist negativ

    # Anfangsbedingungen und Simulationszeitarray
    x0 = [x_0 , vx0, y_0, vy0]
    t = np.linspace(0, t_max , 1000)

    # Loesung des DGL-Systems 

    x = odeint(derivative,x0,t, args=(d,r,cw, m))
    return x
    
def zielachse(x, alpha):
    alpha = deg2rad(alpha)
    y = math.tan(alpha) * x
    return y

Simulation eines Schusses auf ein horizontal liegendes Ziel mit realer Jagdmunition

Es stellt sich nun die Frage, ob das Modell überhaupt in der Lage ist, die Bahn eines realen Geschosses abzubilden. Zur Überprüfung werden die Parameter eines Jagdgeschosses (Tabellenwerte von der Verpackung) verwendet, um Modell und Realität zu vergleichen. Der Cw-Wert wurde durch manuelles Fitten geschätzt und erscheint mit 0,65 für ein Hohlspitzgeschoss realistisch und plausibel.

Geschoss: Hornady Custom ETX 125 grain

m = 0.0081 # Geschossmasse in kg

v0 = 948.0 # Mündungsgeschwindigkeit in m/s

d = 7.62e-3 # Geschossdurchmesser in m

cw = 0.65 # Cw-Wert

In [7]:
# Physikalische Konstanten
r = 1.225 # Dichte der Luft auf Normalniveau
g = 9.81 # Fallbeschleunigung


# Waffe
just = 0.085 # Winkel zwischen Laufseele und Ziellinie in Winkelgraden (Justierung)
d_z = -0.04 # Abstand Laufseele am Patronenlager / Optische Achse
l = 0.60 # 60 cm Lauf

# Geschoss: Hornady Custom ETX 125 grain
m = 0.0081 # Geschossmasse
v0 = 948.0 # Mündungsgeschwindigkeit
d = 7.62e-3 # Geschossdurchmesser in m
cw = 0.65 # Cw-Wert

# Elevationswinkel alpha  für ein horizontales Ziel = 0
alpha = 0 # Elevationswinkel des Ziels in Winkelgraden


x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
In [8]:
# Vergleich der Bahnkurven anhand der Herstellertabellen
# Hornady Custom ETX .308 125 grain
# S&B Training Full Metal Jacket FMJ .308 147 grain

etx_x = [50.0, 100, 150, 175, 200, 300]
etx_y = [1.2, 4, 2.6, 0, -4.2, -40.5]
etx_y_m = [0.012, 0.04, 0.026, 0, -0.042, -0.405]

v_etx_v = [948.0, 763.0, 598.0, 453.0]
v_etx_x = [0.0, 100.0, 200.0, 300.0]

sb_x = [50, 100, 171, 200, 300]
sb_y = [1.5, 3.8, 0, -4.2, -33.1]

# plot results
plt.rcParams['figure.figsize'] = [10, 5]
markersize = 16

plt.plot(x[:, 0], x[:, 2]*100, 'r-' ) # Geschossbahn 
plt.plot(x[:,0], 0*x[:,0], 'g-') # Horizontale
plt.plot( x[:,0], zielachse(x[:,0], 0) , 'k-')

plt.plot(etx_x, etx_y , 'b.', markersize = markersize)
plt.xlabel('x / m')
plt.ylabel('y / cm')
plt.title('Geschossbahn')
plt.grid()
plt.show()


# plot results
plt.plot(x[:,0] , x[:, 1] )
plt.plot(v_etx_x, v_etx_v, 'b.', markersize = markersize)
plt.xlabel('x / m')
plt.ylabel('v / m/s')
plt.title('Geschwindigkeit')
plt.grid()
plt.show()

Der Vergleich von Simulation und realen Daten zeigt bei der Bahnkurve und der Geschwindigkeitsabnahme eine überraschend gute Übereinstimmung für ein derart einfaches Modell. Durch numerisches curve-fitting mit den Parametern Cw und Justierwinkel β ließe sich die Übereinstimmung wahrscheinlich noch verbessern. Dies wird aber vorerst zurückgestellt.

Schuss auf ein höher stehendes Ziel

In [9]:
plt.rcParams['figure.figsize'] = [15, 8]
markersize = 16


fig, ax = plt.subplots()

alpha = 0 # Elevationswinkel des Zielfernrohrs in Winkelgraden
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
h_0 = x[:, 2] #- z
ax.plot( x[:,0], h_0 , 'k-', label='0°')

alpha = 10 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_10 = x[:, 2] - z

xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_10 , 'r-', label='10°')


alpha = 20 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_20 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_20 , 'b-', label='20°')


alpha = 30 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_30 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_30 , 'g-', label='30°')


alpha = 40 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_40 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_40 , 'c-', label='40°')

alpha = 50 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_50 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_50 , 'm-', label='50°')




ax.set_yticks(np.arange(-0.4, 0.21, step=0.02), minor=True)
ax.set_yticks(np.arange(-0.4, 0.21, step=0.1), minor=False)
ax.set_xticks(np.arange(0, 350, step = 25))

#ax.set_yticks([0.3, 0.55, 0.7], minor=True)
ax.yaxis.grid(True, which='major', linewidth=3)
ax.yaxis.grid(True, which='minor')
ax.set_ylim([-0.4, 0.2])
ax.xaxis.grid(True)
plt.ylabel('h(s)')
plt.xlabel('Gerader Abstand vom Ziel s')
plt.legend(title='Elevation')
plt.title('Höhe der Geschossbahn über der Ziellinie in Abhängigkeit \
vo Abstand zum Ziel und Elevationswinkel des Zielfernrohrs')
plt.show()

Aus der Graphik ist deutlich zu erkennen, wie die Höhe des Einschlagpunkts über der Ziellinie mit zunehmendem Elevationswinkel, also steilerem Schuss, zunimmt.

Beispiel:

Bei einem horizontal gelegenen Ziel mit α=0° liegt der Einschusspunkt bei einer Entfernung von 100 m bei ca. 4 cm über dem Zielpunkt. Dies ist die bekannte Regel "Einschießen mit 4 cm Hochschuss auf 100 m Zieldistanz".

Bei einer Elevation von α=40° liegt bei einer Zieldistanz von 100 m ca. 11 cm über dem Zielpunkt. Bei einer Zieldistanz von 150 m sind es 13 cm über dem Zielpunkt

Bei α=0° schneidet das Geschoss die Ziellinie bei ca. 175 m Abstand, bei α=40° sind es bereits ca. 220 m.

Die Regel "Bergauf und Berg runter - halte drunter" zeigt sich hier also deutlich und macht sich besonders bei größeren Zieldistanzen bemerkbar.

Tiefer stehendes Ziel

Die folgenden Simulationen zeigen die Höhe der Geschossbahn über der Ziellinie für einen Schuss bergab.

In [10]:
plt.rcParams['figure.figsize'] = [15, 8]
markersize = 16


fig, ax = plt.subplots()

alpha = 0 # Elevationswinkel des Zielfernrohrs in Winkelgraden
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
h_0 = x[:, 2] #- z
ax.plot( x[:,0], h_0 , 'k-', label='0°')

alpha = -10 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_10 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_10 , 'r-', label='-10°')


alpha = -20 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_20 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_20 , 'b-', label='-20°')


alpha = -30 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_30 = x[:, 2] - z
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_30 , 'g-', label='-30°')


alpha = -40 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_40 = x[:, 2] - z
#plt.plot( x[:,0], h_40 , 'c-', label='40°')
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_40 , 'c-', label='-40°')

alpha = -50 
x = simulate(0.5, alpha, just, d_z, l, d, r, cw, v0, m)
z = zielachse(x[:,0], alpha)
h_50 = x[:, 2] - z
#plt.plot( x[:,0], h_50 , 'c-', label='50°')
xx = ( x[:,0] ** 2 + x[:, 2]**2 ) ** 0.5
ax.plot( xx, h_50 , 'm-', label='-50°')




ax.set_yticks(np.arange(-0.4, 0.21, step=0.02), minor=True)
ax.set_yticks(np.arange(-0.4, 0.21, step=0.1), minor=False)

#ax.set_yticks([0.3, 0.55, 0.7], minor=True)
ax.yaxis.grid(True, which='major', linewidth=3)
ax.yaxis.grid(True, which='minor')
ax.set_ylim([-0.4, 0.2])
ax.xaxis.grid(True)
plt.ylabel('h(s)')
plt.xlabel('Gerader Abstand vom Ziel s')
plt.legend(title='Elevation')
plt.title('Höhe der Geschossbahn über der Ziellinie in Abhängigkeit \
von Abstand zum Ziel und Elevationswinkel des Zielfernrohrs')
plt.show()

Auch hier zeigt sich, dass bei zunehmender Steilheit des Schusses (= negativer werdender Elevation) die Geschossbahn zumehmend über der Achse des Zielfernrohrs verläuft. Die Regel ".... Berg runter - halte drunter" ist klar erkennbar richtig.

Ausblick:

Weitere interessante Verbesserungen wären möglich durch eine genauere Modellierung der folgen den Größen:

Luftdruck:

Im vorliegenden Modell wurde nur der Luftdruck auf Meereshöhe verwendet. Dieser müsste für genauere Berechnungen korrigiert werden.

Cw-Wert:

Der Cw-Wert wurde als konstant angenommen, ist jedoch geschwindigkeitsabhängig. Die Cw(v)-Kurve ist für die meisten Geschosse nicht publiziert.

Weitere Größen, die bei genaueren ballistischen Modellen berücksichtigt werden:

Luftfeuchtigkeit, der Magnuseffekt aus Drall und Seitenwind, der Magnuseffekt aus Drall und Fallgeschwindigkeit und noch vieles mehr.