
    j                     <    d Z ddlZddlmZ ddlmZ ddlmZ d	dZy)
zD
repair.py
--------------

Try to fix problems with closed regions.
    N)cKDTree   )util   )segmentsc           	      $   t        j                  t        | j                  j	                               j                         D cg c]  \  }}|dk7  s| c}}      }t        |      dk(  ryt        | j                  |         }|j                  |d      }g }t        |      dkD  r| j                  D ch c]   }t        t        |j                              " }	}t        j                  ||   d      D 
ch c]  }
t        |
       }}
t        j                  t        |j!                  |	                  }t        |      dkD  r| j                  |   }t#        |      }t%        | j                        D 
cg c].  \  }
}t        |j'                  |j                              dkD  r|
0 }}
}g }t        j(                  t        | j                        t*              }d}|D ]  }| j                  |   j,                  j.                  d	k7  r*|| j                  |   j,                  }| j                  |   j1                  | j                        }t3        j4                  t        j6                  t        |                  }|j9                  ||          d
||<    t3        j:                  t3        j:                  |      |f      }t        |      dk(  ryt=        j>                  || j                  |         }t=        j@                  |      }g }tC        t        |            D ]I  }
|j9                   |t        j6                  d      |
dz  z   t        | j                        z                K t        j8                  | j                  |   |      | _
        t        jD                  | j                  t        jD                  |      f      | _        | jF                  jI                          | jK                          yc c}}w c c}w c c}
w c c}}
w )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                            @/DATA/.local/lib/python3.12/site-packages/trimesh/path/repair.py	fill_gapsrI      sH    XXT$*;*;*B*B*D%E%K%K%MX%MTQQRVWQWq%MXYF 6{a 4==()DxY?EK
5zA~;?==I=aeF1<<01=
I&(ggfUm!&DE&DE!H&DE xxX00<=>t9q=---K VJ
 dmm,,DAq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   O<
O<
6%P9P:3P)g?)	__doc__numpyr   scipy.spatialr    r   r   rI        rH   <module>rP      s     !  XrO   