
   w82F                   ~    d Z ddlmZmZmZmZ dZ G d de      Z	 G d de      Z
d Zed	k(  r e         e        y
y
)a         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.

    )ShapeTurtlemainloopVec2D   c                       e Zd Zd Zd Zd Zy)GravSysc                 .    g | _         d| _        d| _        y )Nr   g{Gz?)planetstdt)selfs    8/tmp/python/lib/python3.12/turtledemo/planet_and_moon.py__init__zGravSys.__init__   s        c                 F    | j                   D ]  }|j                           y )N)r   init)r   ps     r   r   zGravSys.init   s    AFFH r   c                     t        d      D ]B  }| xj                  | j                  z  c_        | j                  D ]  }|j	                           D y )Ni'  )ranger   r   r   step)r   ir   s      r   startzGravSys.start    s9    uAFFdggF\\ " r   N)__name__
__module____qualname__r   r   r    r   r   r	   r	      s    r   r	   c                   $    e Zd Zd Zd Zd Zd Zy)Starc                    t        j                  | |       | j                          || _        | j	                  |       || _        |j                  j                  |        || _        | j                  d       | j                          y )N)shapeuser)r   r   penupmsetposvr   appendgravSys
resizemodependown)r   r$   xr&   r(   r!   s         r   r   zStar.__init__'   s`    E*

At$r   c                     | j                   j                  }| j                         | _        | j                  d|z  | j                  z  z   | _        y )N      ?)r(   r   accar&   r   r   s     r   r   z	Star.init1   s8    \\__#b&-'r   c                     t        dd      }| j                  j                  D ]Q  }|| k7  s	|j                         | j                         z
  }|t        |j
                  z  t        |      dz  z  |z  z  }S |S )Nr      )Vecr(   r   posGr$   abs)r   r/   planetr&   s       r   r.   zStar.acc5   si    !Hll**F~JJL+ajQ*A-- + r   c                    | j                   j                  }| j                  | j                         || j                  z  z          | j                   j
                  j                  |       dk7  r7| j                  | j                  | j                   j
                  d                | j                         | _
        | j                  || j                  z  z   | _        y )Nr   )r(   r   r%   r4   r&   r   index
setheadingtowardsr.   r/   r0   s     r   r   z	Star.step<   s    \\__DHHJDFF*+<<%%d+q0OODLL)=)=a)@AB"TVV)#r   N)r   r   r   r   r   r.   r   r   r   r   r   r   &   s    	($r   r   c                     t               } | j                          | j                         j                  dd       | j	                          | j                          | j                  d       | j                  d       | j                          | j                  dd       | j                          | j                         }| j                          | j                  dd       | j                          | j                         }t        d      }|j                  |d       |j                  |d       | j                         j                  d|       | j                         j                  d	d       t               }t!        d
t#        dd      t#        dd      |d      }|j%                  d       |j'                  d       |j                          t!        dt#        dd      t#        dd      |d      }|j)                  d       |j'                  d       t!        d	t#        dd      t#        dd      |d      }|j)                  d       |j'                  d       |j+                          |j-                          y)Nr      Z      compoundorangebluer7      i@B g      circleyellowg?i0        greeng?   i'  r-   zDone!)r   reset	getscreentracerhtpufdlt
begin_polyrD   end_polyget_polyr   addcomponentregister_shaper	   r   r3   color	shapesizepencolorr   r   )sm1m2planetshapegssunearthmoons           r   mainra   F   s   AGGIKKM1DDFDDFDDGDDHLLNHHQJJL	
BLLNHHQsOJJL	
B
#KR)R'KKM  ;7KKM1 
B
wAa#a+r8
<CIIhMM#FFHC
C#JH=E	NN7	OOC3s1:s1Sz2x8DMM&NN3GGIHHJr   __main__N)__doc__turtler   r   r   r   r3   r5   objectr	   r   ra   r   r   r   r   <module>rf      sO   $ 9 8f $6 $@%N zFJ r   