Submit
Path:
~
/
/
usr
/
lib64
/
python2.7
/
Demo
/
turtle
/
File Content:
tdemo_planet_and_moon.py
#! /usr/bin/env python """ turtle-example-suite: tdemo_planets_and_moon.py Gravitational system simulation using the approximation method from Feynman-lectures, p.9-8, using turtlegraphics. Example: heavy central body, light planet, very light moon! Planet has a circular orbit, moon a stable orbit around the planet. You can hold the movement temporarily by pressing the left mouse button with mouse over the scrollbar of the canvas. """ from turtle import Shape, Turtle, mainloop, Vec2D as Vec from time import sleep G = 8 class GravSys(object): def __init__(self): self.planets = [] self.t = 0 self.dt = 0.01 def init(self): for p in self.planets: p.init() def start(self): for i in range(10000): self.t += self.dt for p in self.planets: p.step() class Star(Turtle): def __init__(self, m, x, v, gravSys, shape): Turtle.__init__(self, shape=shape) self.penup() self.m = m self.setpos(x) self.v = v gravSys.planets.append(self) self.gravSys = gravSys self.resizemode("user") self.pendown() def init(self): dt = self.gravSys.dt self.a = self.acc() self.v = self.v + 0.5*dt*self.a 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 step(self): dt = self.gravSys.dt self.setpos(self.pos() + dt*self.v) if self.gravSys.planets.index(self) != 0: self.setheading(self.towards(self.gravSys.planets[0])) self.a = self.acc() self.v = self.v + dt*self.a ## create compound yellow/blue turtleshape for planets def main(): s = Turtle() s.reset() s.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.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!" if __name__ == '__main__': msg = main() print msg mainloop()
Submit
FILE
FOLDER
Name
Size
Permission
Action
about_turtle.txt
3525 bytes
0644
about_turtledemo.txt
302 bytes
0644
demohelp.txt
2438 bytes
0644
tdemo_I_dontlike_tiltdemo.py
1073 bytes
0644
tdemo_I_dontlike_tiltdemo.pyc
1659 bytes
0644
tdemo_I_dontlike_tiltdemo.pyo
1659 bytes
0644
tdemo_bytedesign.py
4219 bytes
0644
tdemo_bytedesign.pyc
5313 bytes
0644
tdemo_bytedesign.pyo
5313 bytes
0644
tdemo_chaos.py
953 bytes
0644
tdemo_chaos.pyc
2297 bytes
0644
tdemo_chaos.pyo
2297 bytes
0644
tdemo_clock.py
3018 bytes
0644
tdemo_clock.pyc
4490 bytes
0644
tdemo_clock.pyo
4490 bytes
0644
tdemo_colormixer.py
1338 bytes
0644
tdemo_colormixer.pyc
2365 bytes
0644
tdemo_colormixer.pyo
2365 bytes
0644
tdemo_fractalcurves.py
3410 bytes
0644
tdemo_fractalcurves.pyc
3524 bytes
0644
tdemo_fractalcurves.pyo
3524 bytes
0644
tdemo_lindenmayer_indian.py
2433 bytes
0644
tdemo_lindenmayer_indian.pyc
3602 bytes
0644
tdemo_lindenmayer_indian.pyo
3602 bytes
0644
tdemo_minimal_hanoi.py
1961 bytes
0644
tdemo_minimal_hanoi.pyc
3589 bytes
0644
tdemo_minimal_hanoi.pyo
3589 bytes
0644
tdemo_nim.py
6588 bytes
0644
tdemo_nim.pyc
9383 bytes
0644
tdemo_nim.pyo
9383 bytes
0644
tdemo_paint.py
1126 bytes
0644
tdemo_paint.pyc
1737 bytes
0644
tdemo_paint.pyo
1737 bytes
0644
tdemo_peace.py
1117 bytes
0644
tdemo_peace.pyc
1443 bytes
0644
tdemo_peace.pyo
1443 bytes
0644
tdemo_penrose.py
3536 bytes
0644
tdemo_penrose.pyc
6005 bytes
0644
tdemo_penrose.pyo
6005 bytes
0644
tdemo_planet_and_moon.py
2840 bytes
0644
tdemo_planet_and_moon.pyc
4548 bytes
0644
tdemo_planet_and_moon.pyo
4548 bytes
0644
tdemo_tree.py
1411 bytes
0644
tdemo_tree.pyc
2123 bytes
0644
tdemo_tree.pyo
2123 bytes
0644
tdemo_wikipedia.py
1347 bytes
0644
tdemo_wikipedia.pyc
1955 bytes
0644
tdemo_wikipedia.pyo
1955 bytes
0644
tdemo_yinyang.py
808 bytes
0644
tdemo_yinyang.pyc
1320 bytes
0644
tdemo_yinyang.pyo
1320 bytes
0644
turtle.cfg
160 bytes
0644
turtleDemo.py
10183 bytes
0644
turtleDemo.pyc
10212 bytes
0644
turtleDemo.pyo
10212 bytes
0644
turtledemo_two_canvases.py
885 bytes
0644
turtledemo_two_canvases.pyc
1252 bytes
0644
turtledemo_two_canvases.pyo
1252 bytes
0644
N4ST4R_ID | Naxtarrr