Difficult-Rocket/superman.py
2021-02-20 00:34:54 +08:00

50 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from decimal import Decimal as De
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')
TPS = 20
MSPT = 1 / TPS
while True: # 主tick循环
# 基础加速度运算
add_speed = (F / m) - ((gravity * (R ** 2)) / ((R * tick_time * height) ** 2))
# 出大气层判定
if height < 70000: # 没出大气 加速度需要减去大气阻力
add_speed -= (n * (velocity ** 2) * (10 * (-6 * height) / H)) / m
height += MSPT * velocity # 高度 加 速度除以TPStick per second每tick加速
velocity += MSPT * add_speed # 速度 加 加速度除以TPS
if tick_time < 192: # 一些我也不知道是什么意思的tick判定
m -= (MSPT * F) / 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: ' + tick_time)