Ë
    :vžjI  ã                   ó¶   — d dl mZ d dlZddlmZmZmZ e G d„ d«      «       Ze G d„ d«      «       Z	e G d	„ d
«      «       Z
 e«       Z e	«       Z e
«       Zd„ Zy)é    )Ú	dataclassNé   )Údecimal_to_digitsÚlogÚnowc                   ó¦   — e Zd ZU dZ ej
                  ej                  «      j                  dz  Ze	e
d<   dZe	e
d<   dZe	e
d<   dZee
d	<   d
Zee
d<   y)ÚToleranceMesha¾  
    ToleranceMesh objects hold tolerance information about meshes.

    Parameters
    ----------------
    tol.zero : float
      Floating point numbers smaller than this are considered zero
    tol.merge : float
      When merging vertices, consider vertices closer than this
      to be the same vertex. Here we use the same value (1e-8)
      as SolidWorks uses, according to their documentation.
    tol.planar : float
      The maximum distance from a plane a point can be and
      still be considered to be on the plane
    tol.facet_threshold : float
      Threshold for two facets to be considered coplanar
    tol.strict : bool
      If True, run additional in- process checks (slower)
    éd   Úzerog:Œ0âŽyE>Úmergeçñhãˆµøä>Úplanariˆ  Úfacet_thresholdFÚstrictN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnpÚfinfoÚfloat64Ú
resolutionr   ÚfloatÚ__annotations__r   r   r   Úintr   Úbool© ó    úb/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/trimesh/constants.pyr	   r	      s]   … ñð, �"—(‘(˜2Ÿ:™:Ó&×1Ñ1°CÑ7€Dˆ%Ó7ð €Eˆ5Óð €FˆEÓð  €O�SÓð €FˆDÔr   r	   c                   ób  — e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed<    e e
j                  d	«      «      Zeed
<    e e
j                  d«      «      Zeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<    e e
j                  d«      «      Zeed<   dZeed<   edefd„«       Zy)ÚTolerancePatha_  
    TolerancePath objects contain tolerance information used in
    Path objects.

    Parameters
    ---------------
    tol.zero : float
      Floating point numbers smaller than this are considered zero
    tol.merge : float
      When merging vertices, consider vertices closer than this
      to be the same vertex. Here we use the same value (1e-8)
      as SolidWorks uses, according to their documentation.
    tol.planar : float
      The maximum distance from a plane a point can be and
      still be considered to be on the plane
    tol.seg_frac : float
      When simplifying line segments what percentage of the drawing
       scale can a segment be and have a curve fitted
    tol.seg_angle : float
      When simplifying line segments to arcs, what angle
      can a segment span to be acceptable.
    tol.aspect_frac : float
      When simplifying line segments to closed arcs (circles)
      what percentage can the aspect ratio differfrom 1:1
      before escaping the fit early
    tol.radius_frac : float
      When simplifying line segments to arcs, what percentage
      of the fit radius can vertices deviate to be acceptable
    tol.radius_min :
       When simplifying line segments to arcs, what is the minimum
       radius multiplied by document scale for an acceptable fit
    tol.radius_max :
       When simplifying line segments to arcs, what is the maximum
       radius multiplied by document scale for an acceptable fit
    tol.tangent :
       When simplifying line segments to curves, what is the maximum
       angle the end sections can deviate from tangent that is
       acceptable.
    gê-�™—q=r   r   r   r   g      À?Úseg_fracé2   Ú	seg_angler   Úseg_angle_ming      à?Úseg_angle_fracgš™™™™™¹?Úaspect_fracg{®Gáz”?Úradius_fracg-Cëâ6?Ú
radius_ming      I@Ú
radius_maxé   ÚtangentFr   Úreturnc                 ó,   — t        | j                  «      S )N)r   r   )Úselfs    r   Úmerge_digitszTolerancePath.merge_digitsh   s   € ä  §¡Ó,Ð,r   N)r   r   r   r   r   r   r   r   r   r"   r   Úradiansr$   r%   r&   r'   r(   r)   r*   r,   r   r   Úpropertyr   r0   r   r   r   r!   r!   /   sÒ   … ñ&ðP €Dˆ%ÓØ€Eˆ5Óà€FˆEÓØ€HˆeÓÙ˜Z˜RŸZ™Z¨›^Ó,€IˆuÓ,Ù   §¡¨A£Ó/€M�5Ó/Ø€N�EÓØ€K�ÓØ€K�ÓØ€J�ÓØ€J�ÓÙ˜:˜2Ÿ:™: b›>Ó*€GˆUÓ*Ø€FˆDÓàð-˜cò -ó ñ-r   r!   c                   óX   — e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed	<   d
Z
eed<   y)ÚResolutionPatha8  
    res.seg_frac : float
      When discretizing curves, what percentage of the drawing
      scale should we aim to make a single segment
    res.seg_angle : float
      When discretizing curves, what angle should a section span
    res.max_sections : int
      When discretizing splines, what is the maximum number
      of segments per control point
    res.min_sections : int
      When discretizing splines, what is the minimum number
      of segments per control point
    res.export : str
      Format string to use when exporting floating point vertices
    gš™™™™™©?r"   g{®Gáz´?r$   g     @@Úmax_sectionsg      4@Úmin_sectionsz0.10fÚexportN)r   r   r   r   r"   r   r   r$   r5   r6   r7   Ústrr   r   r   r4   r4   m   s;   … ñð  €HˆeÓØ€IˆuÓØ€L�%ÓØ€L�%ÓØ€FˆCÔr   r4   c                 óV   ‡ — ˆ fd„}‰ j                   |_         ‰ j                  |_        |S )zœ
    A decorator for methods which will time the method
    and then emit a log.debug message with the method name
    and how long it took to execute.
    c                  ó„   •— t        «       } ‰| i |¤Ž}t        j                  d‰j                  t        «       |z
  «       |S )Nz%s executed in %.4f seconds.)r   r   Údebugr   )ÚargsÚkwargsÚticÚresultÚmethods       €r   Útimedzlog_time.<locals>.timed•   s9   ø€ Ü‹eˆÙ˜Ð( Ñ(ˆÜ�	‰	Ð0°&·/±/Ä3Ã5È3Á;ÔOàˆr   )r   r   )r@   rA   s   ` r   Úlog_timerB   Ž   s%   ø€ ôð —_‘_€E„NØ—N‘N€E„MØ€Lr   )Údataclassesr   Únumpyr   Úutilr   r   r   r	   r!   r4   ÚtolÚtol_pathÚres_pathrB   r   r   r   Ú<module>rI      s}   ðÝ !ã ç -Ñ -ð ÷#ð #ó ð#ðL ÷:-ð :-ó ð:-ðz ÷ð ó ðñ2 ƒo€ñ ‹?€ÙÓ€ór   