a
    åIþf‘  ã                   @   sT   d Z ddlT ddlmZmZ G dd„ deƒZdd„ Ze	dkrPeƒ Z
ee
ƒ eƒ  d	S )
a&        turtle-example-suite:

        tdemo_fractalCurves.py

This program draws two fractal-curve-designs:
(1) A hilbert curve (in a box)
(2) A combination of Koch-curves.

The CurvesTurtle class and the fractal-curve-
methods are taken from the PythonCard example
scripts for turtle-graphics.
é    )Ú*)ÚsleepÚperf_counterc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚCurvesTurtlec                 C   s²   |dkrd S |   |d ¡ |  ||d | ¡ |  |¡ |  |d ¡ |  ||d |¡ |  |¡ |  ||d |¡ |  |d ¡ |  |¡ |  ||d | ¡ |   |d ¡ d S )Nr   éZ   é   )ÚleftÚhilbertZforwardÚright)ÚselfÚsizeÚlevelZparity© r   ú)lib/python3.9/turtledemo/fractalcurves.pyr	      s    


zCurvesTurtle.hilbertc                 C   s¶   dd l }d| | |j| ¡ }|  ¡  |  |¡ |  ¡  |  dd|d  |  ¡ t|ƒD ] }|  |||¡ |  d| ¡ q\|  	dd|d  |  ¡ |  ¡  |  
|¡ |  ¡  d S )Nr   é   é´   r   ih  )ÚmathZsinZpiÚpuÚfdÚpdÚrtÚrangeÚfractalÚltZbk)r   ÚnZradZlevÚdirr   ZedgeÚir   r   r   Ú
fractalgon/   s    

zCurvesTurtle.fractalgonc                 C   sœ   |dk r|   |¡ d S |  |d |d |¡ |  d| ¡ |  |d |d |¡ |  d| ¡ |  |d |d |¡ |  d| ¡ |  |d |d |¡ d S )Nr   é   é<   éx   )r   r   r   r   )r   ZdistZdepthr   r   r   r   r   B   s    
zCurvesTurtle.fractalN)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r   r      s   r   c                  C   sâ  t ƒ } |  ¡  |  d¡ |  ¡  |  ¡  dd¡ |  ¡  d}|  d| d| ¡ |  ¡  t	ƒ }|  
d¡ |  ¡  |  |¡ |  |dd¡ |  |¡ tdƒD ]$}|  d¡ |  |d	|d
   ¡ qš|  ¡  td
ƒD ]}|  |¡ |  d¡ qÐ|  ¡  tdƒD ]$}|  |d|d
   ¡ |  d¡ qú|  ¡  t	ƒ }d||  }tdƒ |  ¡  |  d¡ |  ¡  |  ¡  dd¡ t	ƒ }|  dd¡ |  ¡  |  dddd¡ |  ¡  |  ¡  |  d¡ |  dddd¡ |  ¡  t	ƒ }|d||  7 }|S )Nr   r   é   ißÿÿÿiàÿÿÿZredr   r   é@   r   é   éB   zHilbert: %.2fsec. ZblackZblueéú   éÈ   éÿÿÿÿzKoch: %.2fsec.)r   ÚresetZspeedZhtZ	getscreenZtracerr   Zsetposr   ÚclockZ	fillcolorZ
begin_fillr   r	   r   r   r   Zend_fillr   Zcolorr   )Zftr   Ztar   ÚtbÚresr   r   r   ÚmainN   s\    







r/   Ú__main__N)Ú__doc__ZturtleÚtimer   r   r,   ZPenr   r/   r!   ÚmsgÚprintZmainloopr   r   r   r   Ú<module>   s   =9