B
    ^ Çc‘  ã               @   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.7/turtledemo/fractalcurves.pyr	      s    


zCurvesTurtle.hilbertc             C   sº   dd l }d| | |j| ¡ }|  ¡  |  |¡ |  ¡  |  dd|d  |  ¡ x,t|ƒD ] }|  |||¡ |  d| ¡ q^W |  	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¡ |  |¡ x0tdƒD ]$}|  d¡ |  |d	|d
   ¡ qœW |  ¡  x$td
ƒD ]}|  |¡ |  d¡ qÖW |  ¡  x2tdƒD ]&}|  |d|d
   ¡ |  d¡ qW |  ¡  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   ÚtbZresr   r   r   ÚmainN   s\    







r.   Ú__main__N)Ú__doc__ZturtleZtimer   r   r,   ZPenr   r.   r!   ÚmsgÚprintZmainloopr   r   r   r   Ú<module>   s   =9