Ë
    :vžjq  ã                   óh   — d Z ddlmZ ddlZddlmZ ddlmZ  ej                  g d¢«      Z
d„ Zd	„ Zy)
z[
comparison.py
----------------

Provide methods for quickly hashing and comparing meshes.
é    )Úsha256Né   )Úutil)Útol)é   é
   r   é   r	   é   r   c                 óþ  — | j                   j                  «        | j                   5  t        j                  dt        j                  ¬«      }| j
                  }||d<   |t        j                  k  rd}| j                  |d<   | j                  r|dz  dz  | j                  dz  z  |d	<   n�	 | j                  }|j
                  }|j                  }||z  |d
<   |dkD  r|dz  dz  |dz  z  |d<   | j                  | j                  z
  }t        j                  |d	z  g d¢«      j!                  «       }||z  |d<   ddd«       t#        | j$                  «      dkD  �r| j&                  }|j)                  «       |j+                  «       z  }	|	dkD  rÒ|| j,                     j/                  d«      }
t        j0                  t        j2                  |
|
dd…df   f«      d¬«      }t        j4                  |«      j7                  d¬«      }|j/                  d«      |t        j8                  t#        |«      «      d
z  z      }t        j:                  |j=                  «       «      d<   S # t        $ r d}d}Y �ŒŸw xY w# 1 sw Y   �Œ=xY w)ah  
    Return a basic identifier for a mesh consisting of
    properties that have been hand tuned to be somewhat
    robust to rigid transformations and different
    tessellations.

    Parameters
    ------------
    mesh : trimesh.Trimesh
      Source geometry

    Returns
    ----------
    identifier : (7,) float
      Identifying values of the mesh
    é   )Údtyper   g      ð?r   g      @g      à?gUUUUUUÕ?r	   r
   gê-�™—q=é   )r   r   r   r   Né2   g      Ð?)éÿÿÿÿr
   )Úaxisr   é   )Ú_cacheÚverifyÚnpÚzerosÚfloat64Úarear   ÚmergeÚeuler_numberÚ	is_volumeÚvolumeÚconvex_hullÚBaseExceptionÚverticesÚcentroidÚdotÚmaxÚlenÚfacesÚedges_unique_lengthÚstdÚmeanÚedges_unique_inverseÚreshapeÚdiffÚcolumn_stackÚabsÚargminÚarangeÚsignÚsum)ÚmeshÚ
identifierÚ	mesh_areaÚhullÚ	hull_areaÚhull_volumer   ÚR2Úedges_lengthÚvarianceÚnormsÚstackÚpick_idxÚpicks                 úc/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/trimesh/comparison.pyÚidentifier_simpler?      s@  € ð$ 	‡K�K×ÑÔð
 
�‹ô —X‘X˜a¤r§z¡zÔ2ˆ
à—I‘Iˆ	ð "ˆ
�1‰à”s—y‘yÒ ØˆIð ×)Ñ)ˆ
�1‰ð �>Š>ð (¨#™o°9Ñ=Ø—‘ 	Ñ*ñˆJ�qŠMð"à×'Ñ'�Ø ŸI™I�	Ø"Ÿk™k�ð &¨	Ñ1ˆJ�q‰Mà˜UÒ"Ø"+¨c¡/°yÑ!AØ IÑ.ñ!�
˜1‘ð —}‘} t§}¡}Ñ4ˆHä—‘˜ 1™¢yÓ1×5Ñ5Ó7ˆBØ ™NˆJ�q‰M÷_ 
ôj ˆ4�:‰:ƒ˜Óð ×/Ñ/ˆØ×#Ñ#Ó%¨×(9Ñ(9Ó(;Ñ;ˆØ�dŠ?à  ×!:Ñ!:Ñ;×CÑCÀGÓLˆEä—G‘GœBŸO™O¨U°Eº!¸Q¸$±KÐ,@ÓAÈÔJˆEÜ—v‘v˜e“}×+Ñ+°Ð+Ó3ˆHà—=‘= Ó$ X´·±¼3¸x»=Ó1IÈAÑ1MÑ%NÑOˆDäŸG™G D§H¡H£JÓ/ˆJ�q‰MØÐøôK !ò "à�	Ø!“ð"ú÷A 
‰ús1   §BI2Â+$IÃA(I2ÉI/É+I2É.I/É/I2É2I<c                 óF  — t        j                  | t        «      \  }}|dk  j                  «       r&|t	        j
                  |j                  «       «      z  }|d|z  z  j                  t        j                  «      }t        |j                  «       «      j                  «       S )a5  
    Hash an identifier array in a way that is hand-tuned to be
    somewhat robust to likely changes.

    Parameters
    ------------
    identifier : (n,) float
      Vector of properties

    Returns
    ----------
    hash : (64,) str
      A SHA256 of the identifier vector at hand-tuned precision.
    r   r   )r   Ú
sigfig_intÚ	id_sigfigÚanyr   r,   ÚminÚastypeÚint64r   ÚtobytesÚ	hexdigest)r2   Úas_intÚ
multiplierÚdatas       r>   Úidentifier_hashrL   }   s|   € ô" Ÿ™¨´YÓ?Ñ€FˆJð 	�Q‰×ÑÔØ”b—f‘f˜ZŸ^™^Ó-Ó.Ñ.ˆ
Ø�b˜*‘nÑ%×-Ñ-¬b¯h©hÓ7€DÜ�$—,‘,“.Ó!×+Ñ+Ó-Ð-ó    )Ú__doc__Úhashlibr   Únumpyr   Ú r   Ú	constantsr   ÚarrayrB   r?   rL   © rM   r>   Ú<module>rU      s;   ðñõ ã å Ý ð ˆB�H‰Hòó
€	ò\ó~.rM   