from decimal import Decimal as De a = False if a: tick_time, velocity, height = De('0'), De('0'), De('0') m = De('4610025') gravity = De('9.798') R = De('637100') n = De('0.5943466') H = De('70000') F = De('208201000') else: tick_time, velocity, height = 0, 0, 0 m = 4610025 gravity = 9.798 R = 637100 n = 0.5943466 H = 70000 F = 208201000 TPS = 20 MSPT = 1 / TPS while True: # 主tick循环 # 基础加速度运算 add_speed = (F / m) - ((gravity * (R ** 2)) / ((R + height) ** 2)) # 出大气层判定 if height < 70000: # 没出大气 加速度需要减去大气阻力 add_speed -= (n * (velocity ** 2) * (10 * (-6 * height) / H)) / m height += (MSPT * velocity) # 高度 加 速度除以TPS(tick per second)(每tick加速) velocity += (add_speed * MSPT) # 速度 加 加速度除以TPS if tick_time < 192: # 一些我也不知道是什么意思的tick判定 m -= (F * MSPT) / 3399.2 # 3399.2是个啥? elif tick_time < 240: m -= 129 * MSPT # ??? 129? else: m -= 4 * MSPT # 4? # tick 加时间 tick_time += MSPT if tick_time < 48: # 如果时间没到48秒 continue elif tick_time == 48: # 如果时间到了48秒 m = 1243700 F = 44189600 elif tick_time == 96: m = 193125 F = 8498000 elif tick_time == 144: m = 40875 F = 1699600 elif tick_time == 192: m = 10225 F = 446145 elif tick_time == 240: m = 2308 F = 21245 elif tick_time >= 567: tick_time += ((12308300 - height) / velocity) break print('t: %s' % tick_time)