Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Ballistinen elliptinen lentorata
- # planeetan pinnalla olevasta lähtöpaikasta pinnalla olevaan maaliin
- # laskee projektiilille tarvittavan lähtönopeuden ja lähtökulman
- # ei ilmanvastusta
- # Juhani Kaukoranta 19.3.2023
- import math
- def ballistic(R,S,GM):
- # R = planeetan säde m
- # S = lähtöpaikan ja maalin kaartivälimatka m
- # GM planeetan painovoimavakio*massa SI-yksiköissä
- θ = S/(2*R) # keskuskulman puolisko rad
- L = 2*R*math.sin(θ) # lähdön ja maali suora välimatka (m)
- a = (R/2 + L/4) # rataellipsin iso puoliakseli m
- eks = R*math.cos(θ)/(2*a) # radan eksentrisyys
- b = a*math.sqrt(1 - eks**2)
- v0 = math.sqrt(GM*(2/R - 1/a)) # lähtönopeus m/s
- alfarad = math.pi/4 -θ/2
- h = a*(1+eks)-R # lakikorkeus planeetan pinnasta
- vl = R*v0*math.cos(alfarad)/(a*(1+eks)) # nopeus lakipisteessä
- α = 45 - θ/2*180/math.pi # lähtökulma asteina
- # lentoajan laskeminen, lakipiste on apopapsis, ei periapsis
- E = math.acos((eks-math.cos(θ))/(1-eks*math.cos(θ)))
- t = 2*math.sqrt(a**3/GM)*(math.pi-E+eks*math.sin(E)) # lentoaika
- print("Projektiilin lähtökulma asteina = ",round(α,2),"°")
- print("Projektiilin lähtönopeus m/s = ",round(v0,2)," m/s")
- print("Projektiilin kantaman kaari S = ",round(S,2)," m")
- print("Rataellipsin iso puoliakseli a = ",round(a,2)," m")
- print("Rataellipsin pieni puoliakseli b = ",round(b,2)," m")
- print("Rataellipsin eksentrisyys = ",round(eks,6))
- print("lakikorkeus planeetan pinnasta h = ",round(h,2)," m")
- print("lakipisteessa nopeus = ",round(vl,2)," m")
- print("Lentoaika = ",round(t,2)," s")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement