
    Mi                     >    S r SSKrSSKJr  SSKJr  SSKJr  S	S jrg)
zD
repair.py
--------------

Try to fix problems with closed regions.
    N)cKDTree   )util   )segmentsc           	      Z   [         R                  " [        U R                  R	                  5       5      R                  5        VVs/ s H  u  p#US:w  d  M  UPM     snn5      n[        U5      S:X  a  g[        U R                  U   5      nUR                  USS9n/ n[        U5      S:  a  U R                   Vs1 s H!  n[        [        UR                  5      5      iM#     n	n[         R                  " XF   SS9 V
s1 s H  n
[        U
5      iM     nn
[         R                  " [        UR!                  U	5      5      5      n[        U5      S:  a  U R                  U   n[#        U5      n[%        U R                  5       V
Vs/ s H1  u  p[        UR'                  UR                  5      5      S:  d  M/  U
PM3     nn
n/ n[         R(                  " [        U R                  5      [*        S9nSnU H  nU R                  U   R,                  R.                  S	:w  a  M,  Uc  U R                  U   R,                  nU R                  U   R1                  U R                  5      n[2        R4                  " [         R6                  " [        U5      5      5      nUR9                  UU   5        S
UU'   M     [2        R:                  " [2        R:                  " U5      U45      n[        U5      S:X  a  g[<        R>                  " UU R                  U   5      n[<        R@                  " U5      n/ n[C        [        U5      5       HH  n
UR9                  U" [         R6                  " S5      U
S-  -   [        U R                  5      -   S95        MJ     [         R8                  " U R                  U   U5      U l
        [         RD                  " U R                  [         RD                  " U5      45      U l        U RF                  RI                  5         U RK                  5         gs  snnf s  snf s  sn
f s  snn
f )z
Find vertices without degree 2 and try to connect to
other vertices. Operations are done in-place.

Parameters
------------
segments : trimesh.path.Path2D
   Line segments defined by start and end points
r   r   Nndarray)routput_typer   )axis)dtypeLineF)points)&nparraydictvertex_graphdegreeitemslenr   verticesquery_pairsentitiestuplesorted
end_pointssortlist
differenceset	enumerateintersectiononesbool	__class____name__discreter   stack_linesarangeappendvstack_emptyr   splituniquerangevstack_cacheclearprocess)pathdistancekdbrokentreepairsconnect_seger   ipair_setmask
broken_setdanglesegskeep
line_classentity_indexr   seg_idxall_segsr,   	final_segr   s                            m/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/trimesh/path/repair.py	fill_gapsrI      sB    XXT$*;*;*B*B*D%E%K%K%MX%MTQQRVWQWq%MXYF 6{a 4==()DxY?EK
5zA~;?==I=aeF1<<01=
I&(ggfm!&DE&DE!H&DE xxX00<=>t9q=---K VJ
 dmm,,DAz&&q||459 	
,   D773t}}%T2DJ==&0099VC|4>>J |,55dmmD""299S[#9:F7O$"\ $   $"3"3D"9;!GHH 8} NN8T]]6%:;E&I H3y>"
"))A,!a%*@3t}}CU*UVW # IIdmmD18<DMIIt}}bii	.BCDDMKKLLNY Y JEs$   P
P
:(P=P".P'5P')g?)	__doc__numpyr   scipy.spatialr    r   r   rI        rH   <module>rP      s     !  XrO   