tle_data = [tle_data[i:i+3] for i in range(0, len(tle_data), 3)] return tle_data if __name__ == "__main__": cb = init_central_body() sphere_coords = cb.plot_attributes() tle_data = get_tle_data("data/starlink.txt") count = 1 for tle in tle_data: print("....Calculating State Vectors for Starlink No. " + str(count) + "....") # create satellite object and propagate it using orbital elements sat1 = Satellite(sat_id=1, name="ISS", center_body=cb, sat_type="Communication") sat1r0, sat1v0 = sat1.propagate_with_tle(tle) dt = sat1.period/190.0 sat1r0 = sat1r0.tolist() sat1v0 = sat1v0.tolist() propagtor1 = op(sat1r0, sat1v0, sat1.period, dt=dt, central_body=cb) propagtor1.propagate() propagtor1.rs = propagtor1.rs * 1/6378 if count == 1: coords = propagtor1.rs else: coords = np.concatenate((coords, propagtor1.rs), axis=1) count= count + 1 print(" ") print("....Creating final_coords list for writing location data to Blender's Particle Cache....")
a = cb.radius + (iss['perigee height'] + iss['apogee height']) / 2 eles = [ a, iss['e'], iss['i'], iss['raan'], iss['arg_perigee'], iss['ma@epoch'], iss['Epoch'] ] period = (24.0 * 3600.0) / iss['revs/day'] return eles, period if __name__ == "__main__": cb = init_central_body() sphere_coords = cb.plot_attributes() # create satellite object and propagate it using orbital elements sat1 = Satellite(sat_id=1, name="ISS", center_body=cb, sat_type="Station") sat1r0, sat1v0 = sat1.propagate_with_tle("data/iss.tle") sat1r0 = sat1r0.tolist() sat1v0 = sat1v0.tolist() propagtor1 = op(sat1r0, sat1v0, sat1.period, dt=100.0, central_body=cb) propagtor1.propagate() sat2 = Satellite(sat_id=2, name="Starlink-31", center_body=cb, sat_type="Communication") sat2r0, sat2v0 = sat2.propagate_with_tle("data/starlink-31.tle") sat2r0 = sat2r0.tolist() sat2v0 = sat2v0.tolist() propagtor2 = op(sat2r0, sat2v0, sat2.period, dt=100.0, central_body=cb) propagtor2.propagate()