
    Ti                     >    d Z ddlZddlmZ ddlmZ ddlmZ d
d	ZdS )zD
repair.py
--------------

Try to fix problems with closed regions.
    N)cKDTree   )util   )segments皙?c           	      Z   t          j        d t          | j                                                                                  D                       }t          |          dk    rdS t          | j        |                   }|	                    |d          }g }t          |          dk    rd | j
        D             }d t          j        ||         d	          D             }t          j        t          |                    |                              }t          |          dk    r| j        |         }t          |          fd
t          | j
                  D             }	g }
t          j        t          | j
                  t"                    }d}|	D ]}| j
        |         j        j        dk    r|| j
        |         j        }| j
        |                             | j                  }t+          j        t          j        t          |                              }|
                    ||                    d||<   t+          j        t+          j        |
          |f          }t          |          dk    rdS t5          j        || j        |                   }t5          j        |          }g }t;          t          |                    D ]N}|                     |t          j        d          |dz  z   t          | j                  z                        Ot          j        | j
        |         |          | _
        t          j        | j        t          j        |          f          | _        | j                                          | !                                 dS )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
    c                 $    g | ]\  }}|d k    |S )r    ).0kds      M/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trimesh/path/repair.py
<listcomp>zfill_gaps.<locals>.<listcomp>   s(    XXXTQQRVWQWQWqQWQWQW    r   Nndarray)routput_typec                 P    h | ]#}t          t          |j                            $S r   )tuplesorted
end_points)r   es     r   	<setcomp>zfill_gaps.<locals>.<setcomp>'   s*    IIIaeF1<0011IIIr   c                 ,    h | ]}t          |          S r   )r   )r   is     r   r   zfill_gaps.<locals>.<setcomp>(   s    EEEE!HHEEEr   r   )axisc                 p    g | ]2\  }}t                              |j                            d k    0|3S )r   )lenintersectionr   )r   r   r   
broken_sets      r   r   zfill_gaps.<locals>.<listcomp>5   sJ       Aqz&&q|445599 	
999r   )dtypeLineFr   )points)"nparraydictvertex_graphdegreeitemsr   r   verticesquery_pairsentitiessortlist
differenceset	enumerateonesbool	__class____name__discreter   stack_linesarangeappendvstack_emptyr   splituniquerangevstack_cacheclearprocess)pathdistancebrokentreepairsconnect_segr   pair_setmaskdanglesegskeep
line_classentity_indexr$   seg_idxall_segsr<   	final_segr-   r   r!   s                        @r   	fill_gapsrS      sT    XXXT$*;*B*B*D*D%E%E%K%K%M%MXXXYYF 6{{a 4=())DxY??EK
5zzA~~II4=III
EEbgfUm!&D&D&DEEE xX00<<==>>t99q==--K VJ   dm,,  F D73t}%%T222DJ # #=&09VCC|4>J |,55dmDD"29S[[#9#9::F7O$$$"\  $"3D"9"9;!GHHH 8}} N8T]6%:;;E&&I H3y>>"" X X

")A,,!a%*@3t}CUCU*UVVVWWWW IdmD18<<DMIt}bi	.B.BCDDDMKLLNNNNNr   )r   )	__doc__numpyr%   scipy.spatialr    r   r   rS   r   r   r   <module>rX      sw         ! ! ! ! ! !            X X X X X Xr   