Submit
Path:
~
/
/
proc
/
self
/
root
/
usr
/
lib64
/
python2.7
/
Demo
/
turtle
/
File Content:
tdemo_planet_and_moon.py
#! /usr/bin/python2.7 """ 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 the 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__': main() mainloop()
Submit
FILE
FOLDER
Name
Size
Permission
Action
about_turtle.txt
3525 bytes
0644
about_turtledemo.txt
302 bytes
0644
demohelp.txt
3034 bytes
0644
tdemo_I_dontlike_tiltdemo.py
1073 bytes
0755
tdemo_I_dontlike_tiltdemo.pyc
1660 bytes
0644
tdemo_I_dontlike_tiltdemo.pyo
1660 bytes
0644
tdemo_bytedesign.py
4218 bytes
0755
tdemo_bytedesign.pyc
5313 bytes
0644
tdemo_bytedesign.pyo
5313 bytes
0644
tdemo_chaos.py
951 bytes
0644
tdemo_chaos.pyc
2296 bytes
0644
tdemo_chaos.pyo
2296 bytes
0644
tdemo_clock.py
3219 bytes
0755
tdemo_clock.pyc
4535 bytes
0644
tdemo_clock.pyo
4535 bytes
0644
tdemo_colormixer.py
1338 bytes
0644
tdemo_colormixer.pyc
2365 bytes
0644
tdemo_colormixer.pyo
2365 bytes
0644
tdemo_fractalcurves.py
3409 bytes
0755
tdemo_fractalcurves.pyc
3524 bytes
0644
tdemo_fractalcurves.pyo
3524 bytes
0644
tdemo_lindenmayer_indian.py
2432 bytes
0755
tdemo_lindenmayer_indian.pyc
3602 bytes
0644
tdemo_lindenmayer_indian.pyo
3602 bytes
0644
tdemo_minimal_hanoi.py
2049 bytes
0755
tdemo_minimal_hanoi.pyc
3623 bytes
0644
tdemo_minimal_hanoi.pyo
3623 bytes
0644
tdemo_nim.py
6514 bytes
0644
tdemo_nim.pyc
9384 bytes
0644
tdemo_nim.pyo
9384 bytes
0644
tdemo_paint.py
1289 bytes
0755
tdemo_paint.pyc
1901 bytes
0644
tdemo_paint.pyo
1901 bytes
0644
tdemo_peace.py
1065 bytes
0755
tdemo_peace.pyc
1388 bytes
0644
tdemo_peace.pyo
1388 bytes
0644
tdemo_penrose.py
3535 bytes
0755
tdemo_penrose.pyc
6005 bytes
0644
tdemo_penrose.pyo
6005 bytes
0644
tdemo_planet_and_moon.py
2823 bytes
0755
tdemo_planet_and_moon.pyc
4535 bytes
0644
tdemo_planet_and_moon.pyo
4535 bytes
0644
tdemo_tree.py
1410 bytes
0755
tdemo_tree.pyc
2123 bytes
0644
tdemo_tree.pyo
2123 bytes
0644
tdemo_two_canvases.py
1120 bytes
0644
tdemo_two_canvases.pyc
1635 bytes
0644
tdemo_two_canvases.pyo
1635 bytes
0644
tdemo_wikipedia.py
1347 bytes
0644
tdemo_wikipedia.pyc
1955 bytes
0644
tdemo_wikipedia.pyo
1955 bytes
0644
tdemo_yinyang.py
807 bytes
0755
tdemo_yinyang.pyc
1320 bytes
0644
tdemo_yinyang.pyo
1320 bytes
0644
turtle.cfg
160 bytes
0644
turtleDemo.py
10091 bytes
0755
turtleDemo.pyc
10948 bytes
0644
turtleDemo.pyo
10948 bytes
0644
N4ST4R_ID | Naxtarrr