Ë
    #´˜j	  ã                   ó~   — 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{®Gáz„?)ÚplanetsÚtÚdt)Úselfs    ú,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Ø�F‰F�Hñ 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Ø�FŠF�d—g‘gÑ�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ˆØ—l‘l×*Ô*ˆFØ˜‹~Ø—J‘J“L §¡£Ñ+�Ø”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”   € Ø�\‰\�_‰_ˆØ�‰�D—H‘H“J  D§F¡F¡Ñ*Ô+Ø�<‰<×Ñ×%Ñ% dÓ+¨qÒ0Ø�O‰O˜DŸL™L¨¯©×)=Ñ)=¸aÑ)@ÓAÔBØ—‘“ˆŒØ—‘˜"˜TŸV™V™)Ñ#ˆ�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ÍÌÌÌÌÌü?iÔ0  éÒ   éÃ   Ú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Ø‡G�G„IØ‡K�KƒM×Ñ˜˜1ÔØ‡D�D„FØ‡D�D„FØ‡D�Dˆ„GØ‡D�Dˆ„HØ‡L�L„NØ‡H�HˆQ�ÔØ‡J�J„LØ	
�‰‹€BØ‡L�L„NØ‡H�HˆQˆs„OØ‡J�J„LØ	
�‰‹€Bä˜
Ó#€KØ×Ñ˜R Ô)Ø×Ñ˜R Ô'Ø‡K�KƒM× Ñ  ¨;Ô7Ø‡K�KƒM×Ñ˜˜1Ôô 
‹€BÜ
ˆwœ˜A˜a›¤# a¨£+¨r°8Ó
<€CØ‡I�IˆhÔØ‡M�M�#ÔØ‡F�F„HÜ�œ˜C ›
¤C¨¨#£J°°HÓ=€EØ	‡N�N�7ÔØ	‡O�O�CÔÜ�”3�s˜1“:œs 1 S›z¨2¨xÓ8€DØ‡M�M�&ÔØ‡N�N�3ÔØ‡G�G„IØ‡H�H„JØ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   