
    ^jQK                         d dl Z g dZd$dZd Zd%dZd%dZd Zd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d de          Zd  Zd! Z d" Z!d# Z"dS )&    N)earcut	deviationflattenc                    |pd}|ot          |          }|r|d         |z  nt          |           }t          | d||d          }g }|s|S d }d }d }	d }
d }d }d }|rt          | |||          }t          |           d|z  k    rq| d         x}}	| d         x}}
t          |||          D ]5}| |         }| |dz            }||k     r|}||k     r|}||	k    r|}	||
k    r|}
6t	          |	|z
  |
|z
            }t          ||||||           |S )N   r   TP      )len
linkedListeliminateHolesrangemaxearcutLinked)dataholeIndicesdimhasHolesouterLen	outerNode	trianglesminXminYmaxXmaxYxysizeis                  P/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/extlibs/earcut.pyr   r      sv   
(C/s;//H(0?A$$c$iiH4Hc488II DDDDAAD F"4iEE	 	D		BH1gt1gtsHc** 
	 
	AQAQUA4xx4xx4xx4xx 4$;t,,IsD$===    c                    d }d }|t          | |||          dk    k    r6t          |||          D ]#}t          || |         | |dz            |          }$nBt          t          |||                    D ]#}t          || |         | |dz            |          }$|r+t	          ||j                  rt          |           |j        }|S Nr   r	   )
signedArear   
insertNodereversedequalsnext
removeNode)r   startendr   	clockwiser   lasts          r   r   r   K   s    ADjuc377!;<<uc3'' 	= 	=Aaa$q1u+t<<DD	= %sC0011 	= 	=Aaa$q1u+t<<DD di(( 4yKr    c                    | s| S |s| }| }d}|s||k    rtd}|j         s\t          ||j                  st          |j        ||j                  dk    r(t          |           |j        x}}||j        k    rd S d}n|j        }|n||k    t|S NTFr   )steinerr&   r'   areaprevr(   )r)   r*   pagains       r   filterPointsr4   _   s      AE
 188	 		va00 		DAF4K4Kq4P4PqMMMfAQVtEE A  188 Jr    c           	         | sd S |s|rt          | |||           | }d }d }	| j        | j        k    r0| j        }| j        }	|rt          | |||          rnt	          |           ru|                    |j        |z             |                    | j        |z             |                    |	j        |z             t          |            |	j        } |	j        }|	} | |k    rn|s#t          t          |           |||||d           nG|dk    r't          | ||          } t          | |||||d           n|dk    rt          | |||||           d S | j        | j        k    .d S d S )Nr	   r   )
indexCurver1   r'   isEarHashedisEarappendr   r(   r   r4   cureLocalIntersectionssplitEarcut)
earr   r   r   r   r   _passstopr1   r'   s
             r   r   r   y   s      *T *3dD)))DDD (ch

xx15 	;sD$-- 	 	5:: 	TVs]+++SUc\***TVs]+++sOOO )C9D $;; 
C\#..	3dDRSTTTT !,S)SAAS)S$dAFFFF !CCtTBBBEG (ch





r    c           
      d   | j         }| }| j        }t          |||          dk    rdS | j        j        }|| j         k    rqt          |j        |j        |j        |j        |j        |j        |j        |j                  r!t          |j         ||j                  dk    rdS |j        }|| j         k    qdS Nr   FT)r1   r'   r0   pointInTriangler   r   )r<   abcr2   s        r   r8   r8      s    AAAAq!}}u 	A
sx--13QS!#qsACacBB 	tAFTUWXW]G^G^bcGcGcuF sx--
 4r    c           
      t   | j         }| }| j        }t          |||          dk    rdS |j        |j        k     r|j        |j        k     r|j        n$|j        n|j        |j        k     r|j        n|j        }|j        |j        k     r|j        |j        k     r|j        n$|j        n|j        |j        k     r|j        n|j        }|j        |j        k    r|j        |j        k    r|j        n$|j        n|j        |j        k    r|j        n|j        }	|j        |j        k    r|j        |j        k    r|j        n$|j        n|j        |j        k    r|j        n|j        }
t          |||||          }t          |	|
|||          }| j        }|r|j        |k    r|| j         k    rj|| j        k    r_t          |j        |j        |j        |j        |j        |j        |j        |j                  r!t          |j         ||j                  dk    rdS |j        }|r|j        |k    | j	        }|r|j        |k    r|| j         k    rj|| j        k    r_t          |j        |j        |j        |j        |j        |j        |j        |j                  r!t          |j         ||j                  dk    rdS |j	        }|r|j        |k    dS r@   )
r1   r'   r0   r   r   zOrdernextZzrA   prevZ)r<   r   r   r   rB   rC   rD   minTXminTYmaxTXmaxTYminZmaxZr2   s                 r   r7   r7      s   AAAAq!}}u ,-399AC!#IIQSS133!#))133QRQTE+,399AC!#IIQSS133!#))133QRQTE+,399AC!#IIQSS133!#))133QRQTE+,399AC!#IIQSS133!#))133QRQTE %dD11D%dD11D 		A
 t==Q#(]]qsACacSTSVXYX[]^]`bcbe/f/f]kopqpvxy{|  |B  lC  lC  GH  lH  lH5G  t 		A
 t==Q#(]]qsACacSTSVXYX[]^]`bcbe/f/f]kopqpvxy{|  |B  lC  lC  GH  lH  lH5G  t
 4r    c                    d}| }|s|| k    rd}|j         }|j        j        }t          ||          st          |||j        |          rt	          ||          rt	          ||          r~|                    |j        |z             |                    |j        |z             |                    |j        |z             t          |           t          |j                   |x}} |j        }||| k    |S NTF)r1   r'   r&   
intersectslocallyInsider9   r   r(   )r)   r   r   dor2   rB   rC   s          r   r:   r:      s   	BA
 U

FFKa|| 		
1a ; ; 		aQR@S@S 		XefgijXkXk 		QSCZ(((QSCZ(((QSCZ((( qMMMqvMAF#  U

& Hr    c                    d}| }|s|| k    rd}|j         j         }||j        k    r|j        |j        k    rtt          ||          rdt	          ||          }	t          ||j                   }t          |	|	j                   }	t          ||||||           t          |	|||||           d S |j         }||j        k    |j         }||| k    d S d S rQ   )r'   r1   r   isValidDiagonalsplitPolygonr4   r   )
r)   r   r   r   r   r   rT   rB   rC   rD   s
             r   r;   r;      s    	BA
 U

FK16kksaczzoa33z A&& !AF++ AF++ Q	3dDAAAQ	3dDAAAA 16kk  F)  U





r    c                    g }d }t          |          }d }d }d }	t          t          |                    D ]z}||         |z  }||dz
  k     r||dz            |z  nt          |           }t          | |||d          }	|	|	j        k    rd|	_        |                    t          |	                     {t          |d           }t          t          |                    D ]-}t          ||         |           t          ||j                  }.|S )Nr	   FTc                     | j         S Nr   )r   s    r   <lambda>z eliminateHoles.<locals>.<lambda>+  s     r    )key)
r
   r   r   r'   r/   r9   getLeftmostsortedeliminateHoler4   )
r   r   r   r   queuer   _lenr)   r*   _lists
             r   r   r     s%   EA{DE
CE3{##$$ ) )A$+,tax<<{1q5!C''SYY4S%88UZ EM[''((((5mm,,,E 3u:: < <eAh	*** IN;;		r    c                      | j         |j         z
  S rZ   r[   rB   rC   s     r   compareXrf   4  s    39r    c                 x    t          | |          }|r't          ||           }t          ||j                   d S d S rZ   )findHoleBridgerW   r4   r'   )holer   rC   s      r   r`   r`   8  sJ    tY//I  D))Q   r    c           
         d}|}| j         }| j        }t          j         }d }|s||k    rd}||j        k    r||j        j        k    r|j        j        |j        z
  dk    r|j         ||j        z
  |j        j         |j         z
  z  |j        j        |j        z
  z  z   }||k    rP||k    rJ|}||k    r$||j        k    r|S ||j        j        k    r|j        S |j         |j        j         k     r|n|j        }|j        }|||k    |sd S ||k    r|j        S |}	|j         }
|j        }t          j        }d }|j        }||	k    r||k     r|n|}||k     r|n|}||j         k    r}|j         |
k    rrt          |||
||||j         |j                  rRt          ||j        z
            ||j         z
  z  }||k     s||k    r$|j         |j         k    rt          ||           r|}|}|j        }||	k    |S r.   )	r   r   mathinfr'   r1   rA   absrS   )ri   r   rT   r2   hxhyqxmr   r>   mxmytanMintanhx_or_qxqx_or_hxs                   r   rh   rh   ?  s%   	BA	B	B
(BA  Y99qvxAFHqsNa,?,?rACxAFHqsN3qvx!#~FFABww1r66GGQSyy QVX~~ vqvxAAQVF!  Y$  t	Rxxv D	
B	
BXF
C	A
t))b22bb22b99xRXWY[\[^`a`c'd'db13h--28,Cf1399=QRTXCYCY9F t)) Hr    c                    d}| }|s|| k    rRd}|j         "t          |j        |j        |||          |_         |j        |_        |j        |_        |j        }|L|| k    Rd |j        _        d |_        t          |           d S rQ   )	rH   rF   r   r   r1   rI   r'   rG   
sortLinked)r)   r   r   r   rT   r2   s         r   r6   r6   ~  s    	BA
 U

3;ac4t44AC&&F  U

 AGMAGqMMMMMr    c                    d}d }d }d }d }d }d }d }d }	d}
|s|dk    rd}| }d } d }d}|r|dz  }|}d}t          |
          D ]}|dz  }|j        }|s n|
}	|dk    s|	dk    r~|r||dk    r|}|j        }|	dz  }	nD|	dk    s|s|}|j        }|dz  }n-|j        |j        k    r|}|j        }|dz  }n|}|j        }|	dz  }	|r||_        n|} ||_        |}|dk    t|	dk    r|||}|d |_        |
dz  }
||dk    | S )NTr	   Fr   r   )r   rG   rH   rI   )rc   rT   r   r2   qetail	numMergespSizeqSizeinSizes              r   ry   ry     s   	BAAAADIEEF
 5	A	 +	NIAE6]]  
G E E!))		a	A::AAQJEEqjjjAAQJEEcQSjjAAQJEE AAQJE !"DJJ E; !))		a	> AW  +	Z 
!k  5	An Lr    c                 "   t          d| |z
  z  |z            } t          d||z
  z  |z            }| | dz  z  dz  } | | dz  z  dz  } | | dz  z  dz  } | | dz  z  d	z  } ||dz  z  dz  }||dz  z  dz  }||dz  z  dz  }||dz  z  d	z  }| |dz  z  S )
Ni     i     ir   i3333r	   iUUUU)int)r   r   r   r   r   s        r   rF   rF     s    EQX%&&AEQX%&&A	
a1f#A	
a1f#A	
a1f#A	
a1f#A	
a1f#A	
a1f#A	
a1f#A	
a1f#AQ<r    c                 h    d}| }| }|s|| k    r#d}|j         |j         k     r|}|j        }||| k    #|S rQ   )r   r'   )r)   rT   r2   leftmosts       r   r^   r^     sZ    	BAH
 U

3HF	  U

 Or    c                     ||z
  ||z
  z  | |z
  ||z
  z  z
  dk    o5| |z
  ||z
  z  ||z
  ||z
  z  z
  dk    o||z
  ||z
  z  ||z
  ||z
  z  z
  dk    S Nr    )axaybxbycxcypxpys           r   rA   rA     s    GR BGR#88A= ;	bR"WbR"W 55:;	bR"WbR"W 55:;r    c                     | j         j        |j        k    oU| j        j        |j        k    o@t          | |           o/t	          | |          ot	          ||           ot          | |          S rZ   )r'   r   r1   intersectsPolygonrS   middleInsidere   s     r   rV   rV      sv    68qs? Kqvx13 K7HA7N7N3N KaK -a 3 3K8DQ8J8JKr    c                     |j         | j         z
  |j        |j        z
  z  |j        | j        z
  |j         |j         z
  z  z
  S rZ   )r   r   )r2   r{   rs      r   r0   r0     s7    C!#I!#)$ac	acACi'@@@r    c                 B    | j         |j         k    o| j        |j        k    S rZ   )r   r   )p1p2s     r   r&   r&   	  s    424<(BDBDL(r    c                 Z   t          | |          rt          ||          s t          | |          rt          ||          rdS t          | ||          dcxk    ot          | ||          cxk    odk    nc o4t          |||           dcxk    ot          |||          cxk    odk    nc S )NTr   )r&   r0   )r   q1r   q2s       r   rR   rR     s    r2 6"b>> vb"~~ &R.. tBa77774B#3#37777a7777 5RR14444RR 0 04444144445r    c                    d}| }|s|| k    rtd}|j         | j         k    rS|j        j         | j         k    r>|j         |j         k    r.|j        j         |j         k    rt          ||j        | |          rdS |j        }|n|| k    tdS rQ   )r   r'   rR   )rB   rC   rT   r2   s       r   r   r     s    	B	A
 QC13JJ168qs??qsaczzafh!#ooR\]^`a`fhiklRmRmo4F  Q 5r    c                    t          | j        | | j                  dk     r4t          | || j                  dk    ot          | | j        |          dk    S t          | || j                  dk     pt          | | j        |          dk     S r   )r0   r1   r'   re   s     r   rS   rS   $  s    AFAqv""Q16""a'CDAFA,>,>!,CCAq!&!!A%?a););a)??r    c                 L   d}| }d}| j         |j         z   dz  }| j        |j        z   dz  }|s|| k    rqd}|j        |k    |j        j        |k    k    rC||j        j         |j         z
  ||j        z
  z  |j        j        |j        z
  z  |j         z   k     r| }|j        }|k|| k    q|S )NTFr   )r   r   r'   )rB   rC   rT   r2   insider   r   s          r   r   r   +  s    	B	AF
#)qB
#)qB
 QS2X168b=))afhnac5RVWV\V^abadVd5ehihk5k0k0kZFF  Q Mr    c                    t          | j        | j        | j                  }t          |j        |j        |j                  }| j        }|j        }|| _        | |_        ||_        ||_        ||_        ||_        ||_        ||_        |S rZ   )Noder   r   r   r'   r1   )rB   rC   a2b2anbps         r   rW   rW   =  s{    	ac13		B	ac13		B	
B	
BAFAFBGBGBGBGBGBGIr    c                     t          | ||          }|s||_        ||_        n&|j        |_        ||_        ||j        _        ||_        |S rZ   )r   r1   r'   )r   r   r   r,   r2   s        r   r$   r$   S  sP    Q1A  		Hr    c                     | j         | j        _         | j        | j         _        | j        r| j        | j        _        | j        r| j        | j        _        d S d S rZ   )r1   r'   rI   rG   )r2   s    r   r(   r(   b  sP    &AFK&AFKw  w     r    c                       e Zd Zd ZdS )r   c                     || _         || _        || _        d | _        d | _        d | _        d | _        d | _        d| _        d S )NF)	r   r   r   r1   r'   rH   rI   rG   r/   )selfr   r   r   s       r   __init__zNode.__init__m  sO      		  

 r    N)__name__
__module____qualname__r   r   r    r   r   r   l  s#            r    r   c           
      &   t          |          }|ot          |          }|r|d         |z  nt          |           }t          t          | d||                    }|ret          |          D ]U}||         |z  }	||dz
  k     r||dz            |z  nt          |           }
|t          t          | |	|
|                    z  }Vd}t          dt          |          d          D ]}||         |z  }||dz            |z  }||dz            |z  }|t          | |         | |         z
  | |dz            | |dz            z
  z  | |         | |         z
  | |dz            | |dz            z
  z  z
            z  }|dk    r|dk    rdS t          ||z
  |z            S )Nr   r	      r   )r
   rm   r#   r   )r   r   r   r   rb   r   r   polygonArear   r)   r*   trianglesArearB   rC   rD   s                  r   r   r     s   {D/s;//H'/>{1~##SYYHjq(C8899K Bt 	B 	BANS(E./$(ll+a!e$s**D		C3z$sC@@AAAKKM1c)nna(( ? ?aL3a!es"a!es"!WtAw4A;a!e#<=!WtAw4A;a!e#<=>? ? 	? aMQ..q+{:;;;r    c                     d}||z
  }t          |||          D ]0}|| |         | |         z
  | |dz            | |dz            z   z  z  }|}1|S r"   )r   )r   r)   r*   r   sumjr   s          r   r#   r#     sh    
Cc	A5#s##  Q$q'!d1q5kDQK&?@@Jr    c                    t          | d         d                   }g g |d}d}t          t          |                     D ]}t          t          | |                             D ]A}t          |          D ]/}|d                             | |         |         |                    0B|dk    r6|t          | |dz
                     z  }|d                             |           |S )Nr   )verticesholes
dimensionsr   r	   r   )r
   r   r9   )r   r   result	holeIndexr   r   ds          r   r   r     s    
d1gaj//C F
 I3t99 . .s47||$$ 	9 	9A3ZZ 9 9z"))$q'!*Q-88889 q55T!a%[)))I7O""9---Mr    c           	          g }t          dt          |           d          D ]/}|                    t          | ||dz                                 0|S )Nr   r   )r   r
   r9   tuple)r   r   r   s      r   	unflattenr     sV    F1c$ii## , ,eD1q5M**++++Mr    )NNrZ   )#rk   __all__r   r   r4   r   r8   r7   r:   r;   r   rf   r`   rh   r6   ry   rF   r^   rA   rV   r0   r&   rR   r   rS   r   rW   r$   r(   objectr   r   r#   r   r   r   r    r   <module>r      s@  , 
,
,
,, , , ,`  (   40 0 0 0f  $" " "J  4  8  6       < < <~  *C C CN  $  ; ; ;K K K
A A A) ) )
5 5 5  @ @ @  $  ,           6   6< < <:    (    r    