def main(): screen = Screen() screen.setup(width=1.0, height=1.0) # for fullscreen screen.bgcolor('black') screen.title("Apollo 8 Free Return Simulation") gravsys = GravSys() image_earth = 'earth_100x100.gif' screen.register_shape(image_earth) earth = Body(1000000, (0, -25), Vec(0,-2.5), gravsys, image_earth) earth.pencolor('white') earth.getscreen().tracer(n=0, delay=0) image_moon = 'moon_27x27.gif' screen.register_shape(image_moon) moon = Body(32000, (344, 42), Vec(-27, 147), gravsys, image_moon) moon.pencolor('gray') csm = Shape('compound') cm = ((0, 30), (0, -30), (30, 0)) csm.addcomponent(cm, 'white', 'white') sm = ((-60, 30), (0, 30), (0, -30), (-60, -30)) csm.addcomponent(sm, 'white', 'black') nozzle = ((-55, 0), (-90, 20), (-90, -20)) csm.addcomponent(nozzle, 'white', 'white') screen.register_shape('csm', csm) ship = Body(1, (Ro_X, Ro_Y), Vec(Vo_X, Vo_Y), gravsys, 'csm') ship.shapesize(0.2) ship.color('white') ship.getscreen().tracer(1,0) ship.setheading(90) gravsys.sim_loop() input()
def main(): # Setup screen screen = Screen() screen.setup(width=1.0, height=1.0) # for fullscreen screen.bgcolor('black') screen.title("Gravity Assist Example") # Instantiate gravitational system gravsys = GravSys() # Instantiate Planet image_moon = 'moon_27x27.gif' screen.register_shape(image_moon) moon = Body(MOON_MASS, (500, 0), Vec(-500, 0), gravsys, image_moon) moon.pencolor('gray') # Build command-service-module (csm) shape csm = Shape('compound') cm = ((0, 30), (0, -30), (30, 0)) csm.addcomponent(cm, 'red', 'red') sm = ((-60, 30), (0, 30), (0, -30), (-60, -30)) csm.addcomponent(sm, 'red', 'black') nozzle = ((-55, 0), (-90, 20), (-90, -20)) csm.addcomponent(nozzle, 'red', 'red') screen.register_shape('csm', csm) # Instantiate Apollo 8 CSM turtle ship = Body(1, (Ro_X, Ro_Y), Vec(Vo_X, Vo_Y), gravsys, "csm") ship.shapesize(0.2) ship.color('red') # path color ship.getscreen().tracer(1, 0) ship.setheading(90) gravsys.sim_loop()
def acc(self): a = Vec(0,0) for planet in self.gravSys.planets: if planet != self: v = planet.pos()-self.pos() a += (G*planet.m/abs(v)**3)*v return a
def acc(self, obj): a = Vec(0, 0) for o in self.orbs: if o != obj: r = o.position - obj.position a += (G * o.mass / abs(r)**3) * r return a
def acc(self): """Calculate combined force on body and return vector components.""" a = Vec(0, 0) for body in self.gravsys.bodies: if body != self: r = body.pos() - self.pos() a += (G * body.mass / abs(r)**3) * r # units dist/time^2 return a
def main(): # Setup screen screen = Screen() screen.setup(width=1.0, height=1.0) # For fullscreen. screen.bgcolor('black') screen.title("Apollo 8 Free Return Simulation") # Instantiate gravitational system gravsys = GravSys() # Instantiate Earth turtle #image_earth = 'earth_100x100.gif' #screen.register_shape(image_earth) t = Turtle() screen.register_shape('earth', drawCircle(6.371, 72, t)) earth = Body(1000000, (-200, 0), Vec(0, -2.5), gravsys, 'earth') earth.pencolor('white') earth.fillcolor('white') earth.getscreen().tracer(0, 0) # So csm polys won't show while drawing. # Instantiate moon turtle #image_moon = 'moon_27x27.gif' #screen.register_shape(image_moon) #moon_circle = circle(1.737) screen.register_shape('moon', drawCircle(1.737, 72, t)) moon = Body(32000, (156.7, 0), Vec(-27, 147), gravsys, 'moon') moon.pencolor('gray') moon.fillcolor('gray') # Build command-service-module(csm)shape csm = Shape('compound') cm = ((0, 0.1), (0, -0.1), (0.1, 0)) csm.addcomponent(cm, 'Silver', 'red') # Silver and red are also good. screen.register_shape('csm', csm) # Instantiate Apollo 8 CSM turtle ship = Body(1, (Ro_X, Ro_Y), Vec(Vo_X, Vo_Y), gravsys, 'csm') ship.shapesize(0.1) ship.color('white') # Path color. Silver and red are also good. ship.getscreen().tracer(1, 0) ship.setheading(90) gravsys.sim_loop() screen.bye() #close window automatically
def main(): # Setup screen screen = Screen() screen.setup(width=1.0, height=1.0) # For fullscreen. screen.bgcolor('black') screen.title("Apollo 8 Free Return Simulation") # Instantiate gravitational system gravsys = GravSys() # Instantiate Earth turtle image_earth = 'earth_100x100.gif' screen.register_shape(image_earth) earth = Body(1000000, (0, -25), Vec(0, -2.5), gravsys, image_earth) earth.pencolor('white') earth.getscreen().tracer(0, 0) # So csm polys won't show while drawing. # Instantiate moon turtle image_moon = 'moon_27x27.gif' screen.register_shape(image_moon) moon = Body(32000, (344, 42), Vec(-27, 147), gravsys, image_moon) moon.pencolor('gray') # Build command-service-module(csm)shape csm = Shape('compound') cm = ((0, 30), (0, -30), (30, 0)) csm.addcomponent(cm, 'white', 'white') # Silver and red are also good. sm = ((-60, 30), (0, 30), (0, -30), (-60, -30)) csm.addcomponent(sm, 'white', 'black') nozzle = ((-55, 0), (-90, 20), (-90, -20)) csm.addcomponent(nozzle, 'white', 'white') screen.register_shape('csm', csm) # Instantiate Apollo 8 CSM turtle ship = Body(1, (Ro_X, Ro_Y), Vec(Vo_X, Vo_Y), gravsys, 'csm') ship.shapesize(0.2) ship.color('white') # Path color. Silver and red are also good. ship.getscreen().tracer(1, 0) ship.setheading(90) gravsys.sim_loop()
def main(): s = Turtle() s.reset() s.getscreen().tracer(0, 0) s.ht() s.pu() s.fd(6) s.lt(90) s.begin_poly() s.circle(6, 180) s.end_poly() m1 = s.get_poly() s.begin_poly() s.circle(6, 180) s.end_poly() m2 = s.get_poly() planetshape = Shape('compound') planetshape.addcomponent(m1, 'orange') planetshape.addcomponent(m2, 'blue') s.getscreen().register_shape('planet', planetshape) s.getscreen().tracer(1, 0) gs = GravSys() sun = Star(1000000, Vec(0, 0), Vec(0, -2.5), gs, 'circle') sun.color('yellow') sun.shapesize(1.8) sun.pu() earth = Star(12500, Vec(210, 0), Vec(0, 195), gs, 'planet') earth.pencolor('green') earth.shapesize(0.8) moon = Star(1, Vec(220, 0), Vec(0, 295), gs, 'planet') moon.pencolor('blue') moon.shapesize(0.5) gs.init() gs.start() return 'Done!'
def main(): ## create compound yellow/blue turtleshape for planets global s s = Screen() s.setup(1120, 840) s.reset() s.tracer(0, 0) t = Turtle() t.ht() t.pu() t.fd(6) t.lt(90) t.begin_poly() t.circle(6, 180) t.end_poly() m1 = t.get_poly() t.begin_poly() t.circle(6, 180) t.end_poly() m2 = t.get_poly() planetshape = Shape("compound") planetshape.addcomponent(m1, "orange") planetshape.addcomponent(m2, "blue") s.register_shape("planet", planetshape) s.update() ## setup gravitational system gs = GravSys() sun = Star(1000000, Vec(-250, 0), Vec(0, -0.35), gs, "circle") sun.color("yellow") sun.pensize(1.8) sun.pu() earth = Star(5000, Vec(450, 0), Vec(0, 70), gs, "planet") earth.pencolor("green") earth.shapesize(0.8) rm = 12.0583 vm = (8.0 * 5000 / rm)**.5 moon = Star(1, Vec(450 + rm, 0), Vec(0, 70 + vm), gs, "planet") moon.pencolor("blue") moon.shapesize(0.5) gs.init() gs.start() s.tracer(True) return "Done!"
def main(): s = Turtle() s.reset() s.getscreen().tracer(0,0) s.ht() s.pu() s.fd(6) s.lt(90) s.begin_poly() s.circle(6, 180) s.end_poly() m1 = s.get_poly() s.begin_poly() s.circle(6,180) s.end_poly() m2 = s.get_poly() planetshape = Shape("compound") planetshape.addcomponent(m1,"orange") planetshape.addcomponent(m2,"blue") s.getscreen().register_shape("planet", planetshape) s.getscreen().tracer(1,0) ## setup gravitational system gs = GravSys() sun = Star(1000000, Vec(0,0), Vec(0,-2.5), gs, "circle") sun.color("yellow") sun.shapesize(1.8) sun.pu() earth = Star(12500, Vec(210,0), Vec(0,195), gs, "planet") earth.pencolor("green") earth.shapesize(0.8) moon = Star(1, Vec(220,0), Vec(0,295), gs, "planet") moon.pencolor("blue") moon.shapesize(0.5) gs.init() gs.start() return "Done!"
def move(self): self.setpos(self.orb.position) # Main -------------------------------------------------------------------------- s = Turtle() s.reset() s.getscreen().tracer(0, 0) s.ht() s.pu() s.fd(6) s.lt(90) s.getscreen().tracer(1, 0) ## Setup gravitational system sun = Orb("Sun", 1000000, Vec(0, 0), Vec(0.01, -2.5)) earth = Orb("Earth", 12500, Vec(210, 0), Vec(-0.91, 195)) moon = Orb("Moon", 1, Vec(220, 0), Vec(-5.83, 295)) gs = GravSys([sun, earth, moon]) ## Turtles associated with each object sunTurtle = OrbTurtle(sun, "yellow", 1.8) earthTurtle = OrbTurtle(earth, "blue", 0.5) moonTurtle = OrbTurtle(moon, "black", 0.3) while True: gs.tick() for t in ([sunTurtle, earthTurtle, moonTurtle]): t.move()