
    BPc0                         d dl Z d dlZd dlZd dlmZmZ d Z G d dej                  Ze	dk    r e            
                                 dS dS )    N)MoveLinec                    ||z
  }||z
  }||dz  z   }||dz  z   }t          j        ||z  ||z  z             }	|	dk    r| |	z  }
||	z  }nd}
d}t          j        |	 d| z   z  |	d| z   z            }|
|z  }
||z  }||
z   }||z   }||fS )N   r      )mathsqrtrandomuniform)
smoothnessx1y1x2y2x3y3hxhylengthnxnyrxys                  ,/usr/share/inkscape/extensions/fractalize.pycalculate_subdivisionr      s    	bB	bB	b1fB	b1fBYrBwb())F{{S6\&[w!j.16Q^3LMMA	aB	aB
RA
RAq6M    c                        e Zd Zd Zd Zd ZdS )
Fractalizec                     |                     ddt          dd           |                     ddt          dd	           d S )
Nz-sz	--subdivs   zNumber of subdivisons)typedefaulthelpz-fz--smoothg      @zSmoothness of the subdivision)add_argumentintfloat)selfparss     r   add_argumentszFractalize.add_arguments4   sc    +C9P 	 	
 	
 	
 	0 	 	
 	
 	
 	
 	
r   c                 h   | j         j                            t          j                  D ]}|j                                        }g }|                                D ]}|j        }|j	        }|j
        dk    r"|                    t          |j                    =|                     |j        |j        |j        |j        f| j        j        | j        j                  D ]}|                    t)          |            |                    t)          |j        |j                             ||_        d S )NM)svg	selectionfilterinkexPathElementpathto_absoluteproxy_iteratorprevious_end_point	end_pointletterappendr   args
fractalizer   r   optionssubdivssmoothr   )r(   noder2   result	cmd_proxyprevendsegs           r   effectzFractalize.effect@   s&   H&--e.?@@ 	 	D9((**DF!0022 6 6	 3)#s**MM$	"78888#6,+    2 2
 dCj1111MM$suce"4"45555DII#	 	r   c              #     K   t          |g|R  }|rl|                     |dd         |dd         z   |dz
  |          D ]}|V  |V  |                     |dd         |dd         z   |dz
  |          D ]}|V  dS dS )zDrecursively subdivide the segments left and right of the subdivisionNr   r   )r   r:   )r(   coordsr<   r=   subdiv_pointleft_seg	right_segs          r   r:   zFractalize.fractalizeT   s      ,V=f=== 	  OOrr
\"##..!V     "__RSS!F233K/1f     	  	  	    r   N)__name__
__module____qualname__r*   rD   r:    r   r   r   r   3   sA        

 

 

  (         r   r   __main__)r   r
   r0   inkex.pathsr   r   r   EffectExtensionr   rK   runrN   r   r   <module>rS      s   (    " " " " " " " "  22  2  2  2  2 & 2  2  2 j zJLL r   