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()
Beispiel #2
0
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()
Beispiel #3
0
 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
Beispiel #5
0
 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()
Beispiel #8
0
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!"
Beispiel #10
0
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()