
    e                     *   d Z ddlmZ ddlZddlZ ej                  d      Zej                  j                         Zej                  d       ej                  j                         Zej                  e       ej!                  dddd       ej                  j#                  d      Zej'                  edd        ej(                  dddd	gdd
      Zej-                  dd       ej'                  edd        ej.                         Zej'                  edddd       ej3                          ej5                         Zej9                           ej:                  ddgddgddgddgddggdd      Zej?                  e        ej@                  dd
      Z!ej?                  e!       ejE                          g da#d Z$ejJ                  jM                  e$       ejN                  jM                  e$        e$        e(dk(  r ejR                          yy)z&
Displays an interactive Koch fractal
    )reduceNzFractal Examplezpyqtgraph example: fractal demozfractal depth:      
   T)valuestepboundsdelayintd         g      ?   )r      r   r   F)penmovable)r   r   r      )r   	antialias)r   r   Nc            	         t         j                         } t        j                         d   }t	        |      dz
  }|| z  }g }|d   |d   z
  }|j                         }t        t	        |      dz
        D ]j  }||   }||dz      }	|	|z
  }
||d   z
  }|
j                  |      }|
j                         |z  }|j                  t        j                  |||f|d             l t        j                         d   D cg c]$  }t        j                  t        |      dgz         & }}t        j                  |D cg c]  }|j                         j                    c}      j#                  ddd      }t$        d d | |gk7  r|| z  }t        j&                  | |ft(              }t        |       D ]N  }t        j*                  t        j,                  t        j.                  |      || dz
  |z
  z        ||z        ||<   P | ||gat$        d   }||   }d }t1        ||      }t        j&                  ||z  dz   df      }t        t	        |            D ]5  }||   }t        j2                  ||      d d d df   ||dt	        |      <   7 |d   d d |d<   t4        j7                  |d d df   |d d df          y c c}w c c}w )	Npointsr   r   )posscaleangler   )dtypec                 t    t        j                  t        j                  | d      d   |dd d d f   z  d      S )N)r   r   r   ).N.)axis)npsum	transpose)abs     </usr/lib/python3/dist-packages/pyqtgraph/examples/fractal.pymatmulzupdate.<locals>.matmulT   s3    vvbll1W-i81S$\?JQSTT    )	depthSpinr   baseLinegetStatelenlengthranger   appendpgSRTTransformr   arraylistdstackmatrixTr!   transformMapemptyr   tilerepeataranger   dotfcsetData)depthptsnbsegnsegtrsv1l1ip1p2v2trsptbasePtstrbaseMatsmatIndsmatsr%   lbps                          r$   updaterS   )   s    OOE



h
'CHqLE%<D C	R3q6	B	B3s8A: MV1X"WQKHHRLIIK"

2??11v#JKLM 3;2C2C2Eh2OPBrxxRA3'PGPyy#6B"))+--67AA!QJH BQE5>)e|((E4=4u 	\A299U+;UU1WQY=O!PRWYZRZ[GAJ	\ug.
 1oG GDU&$D ((D5L1$a(
)C3s8_ 5QZVVD"-a!e4AbSM5
 bk"1oCG JJs1Q3xQqS"I Q6s   9)J77!J<__main__)*__doc__	functoolsr   numpyr   	pyqtgraphr.   mkQAppapp	QtWidgetsQWidgetwinsetWindowTitleQGridLayoutlayout	setLayoutsetContentsMarginsQLabel
depthLabel	addWidgetSpinBoxr'   resizeGraphicsLayoutWidgetwshow
addViewBoxvsetAspectLockedPolyLineROIr(   addItemPlotCurveItemr;   	autoRanger5   rS   sigRegionChangedconnectvalueChanged__name__exec r&   r$   <module>rx      s     bii!" 	ll   4 5		!	!	# f    !Q1 %\\  !12
   Q "BJJQQ2waTJ	 	  b    Aq !B   Aq!Q  
 LLN    2>>Aq6Aq6C8aVaVDJZdij 		( R.$? 		"  9#z 	   ! !& ) 	    v & zBGGI r&   