Ë
    :vžjF  ã                   óT  — d dl Z d dlZd dlmZmZ d dlZd dlZddlm	Z
  G d„ de«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z	  G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d e«      Z G d!„ d"e«      Z G d#„ d$e«      Z G d%„ d&e«      Z G d'„ d(e«      Z G d)„ d*e«      Z G d+„ d,e«      Z G d-„ d.e«      Z  G d/„ d0e«      Z! G d1„ d2e«      Z"d3„ Z#d4„ Z$d5„ Z%d6„ Z& G d7„ d8e«      Z' G d9„ d:e'«      Z( G d;„ d<e'«      Z) G d=„ d>e'«      Z* G d?„ d@e«      Z+ G dA„ dBe«      Z, G dC„ dDe«      Z- G dE„ dFe«      Z.dG„ Z/ G dH„ dIe«      Z0 G dJ„ dKe«      Z1 G dL„ dMe«      Z2dOdN„Z3y)Pé    N)ÚStringIOÚBytesIOé   )Útransformationsc                   ó   — e Zd Zd„ Zy)ÚSceneElementc                 óH   — t        t        j                  «       «      | _        y ©N)ÚstrÚuuidÚuuid1©Úselfs    úa/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/meshcat/geometry.pyÚ__init__zSceneElement.__init__   s   € ÜœŸ
™
›Ó%ˆ�	ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r   
   s   „ ó&r   r   c                   ó   — e Zd Zd„ Zy)ÚReferenceSceneElementc                 óŽ   — |j                  | j                  g «      j                  | j                  |«      «       | j                  S r
   )Ú
setdefaultÚfieldÚappendÚlowerr   ©r   Úobject_datas     r   Úlower_in_objectz%ReferenceSceneElement.lower_in_object   s4   € Ø×Ñ˜tŸz™z¨2Ó.×5Ñ5°d·j±jÀÓ6MÔNØ�y‰yÐr   N)r   r   r   r    r   r   r   r   r      s   „ ór   r   c                   ó   — e Zd ZdZd„ Zy)ÚGeometryÚ
geometriesc                 ó*   — t        j                  «       S r
   )ÚtfÚidentity_matrixr   s    r   Úintrinsic_transformzGeometry.intrinsic_transform   s   € Ü×!Ñ!Ó#Ð#r   N)r   r   r   r   r'   r   r   r   r"   r"      s   „ Ø€Eó$r   r"   c                   ó   — e Zd ZdZy)ÚMaterialÚ	materialsN©r   r   r   r   r   r   r   r)   r)      ó   „ Ø�Er   r)   c                   ó   — e Zd ZdZy)ÚTextureÚtexturesNr+   r   r   r   r.   r.       s   „ Ø�Er   r.   c                   ó   — e Zd ZdZy)ÚImageÚimagesNr+   r   r   r   r1   r1   $   s   „ Ø�Er   r1   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚBoxc                 ó8   •— t         t        | �  «        || _        y r
   )Úsuperr4   r   Úlengths)r   r7   Ú	__class__s     €r   r   zBox.__init__)   s   ø€ ÜŒc�4Ñ!Ô#Øˆ�r   c                 ót   — | j                   d| j                  d   | j                  d   | j                  d   dœS )NÚBoxGeometryr   r   é   )r   ÚtypeÚwidthÚheightÚdepth)r   r7   r   s     r   r   z	Box.lower-   s7   € à—Y‘YØ#Ø—l‘l 1‘oØ—|‘| A‘Ø—l‘l 1‘oñ
ð 	
r   ©r   r   r   r   r   Ú__classcell__©r8   s   @r   r4   r4   (   s   ø„ ôö
r   r4   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚSpherec                 ó8   •— t         t        | �  «        || _        y r
   )r6   rD   r   Úradius)r   rF   r8   s     €r   r   zSphere.__init__8   s   ø€ ÜŒf�dÑ$Ô&Øˆ�r   c                 ó:   — | j                   d| j                  dddœS )NÚSphereGeometryé   )r   r<   rF   ÚwidthSegmentsÚheightSegments)r   rF   r   s     r   r   zSphere.lower<   s#   € à—Y‘YØ&Ø—{‘{Ø!Ø "ñ
ð 	
r   r@   rB   s   @r   rD   rD   7   s   ø„ ôö
r   rD   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )Ú	Ellipsoidz�
    An Ellipsoid is treated as a Sphere of unit radius, with an affine
    transformation applied to distort it into the ellipsoidal shape
    c                 ó:   •— t         t        | �  d«       || _        y ©Nç      ð?)r6   rM   r   Úradii)r   rQ   r8   s     €r   r   zEllipsoid.__init__K   s   ø€ ÜŒi˜Ñ'¨Ô,Øˆ�
r   c                 ój   — t        j                  t        j                  | j                  df«      «      S rO   )ÚnpÚdiagÚhstackrQ   r   s    r   r'   zEllipsoid.intrinsic_transformO   s#   € Ü�w‰w”r—y‘y $§*¡*¨cÐ!2Ó3Ó4Ð4r   )r   r   r   Ú__doc__r   r'   rA   rB   s   @r   rM   rM   F   s   ø„ ñôö5r   rM   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚCylinderc                 óˆ   •— t         t        | �  «        |�|�|| _        || _        n|| _        || _        || _        d| _        y )Né2   )r6   rX   r   Ú	radiusTopÚradiusBottomr>   ÚradialSegments)r   r>   rF   r[   r\   r8   s        €r   r   zCylinder.__init__X   sH   ø€ ÜŒh˜Ñ&Ô(ØÐ  \Ð%=Ø&ˆDŒNØ ,ˆDÕà#ˆDŒNØ &ˆDÔØˆŒØ ˆÕr   c                 óx   — | j                   d| j                  | j                  | j                  | j                  dœS )NÚCylinderGeometry)r   r<   r[   r\   r>   r]   )r   r[   r\   r>   r]   r   s     r   r   zCylinder.lowerc   s6   € à—Y‘YØ(ØŸ.™.Ø!×.Ñ.Ø—{‘{Ø#×2Ñ2ñ
ð 	
r   )rP   NNr@   rB   s   @r   rX   rX   W   s   ø„ õ	!ö
r   rX   c                   ó2   ‡ — e Zd Z	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚGenericMaterialc                 óÄ   •— t         t        | �  «        || _        || _        || _        || _        || _        || _        || _	        || _
        |	| _        |
| _        || _        y r
   )r6   ra   r   ÚcolorÚreflectivityÚmapÚsideÚtransparentÚopacityÚ	linewidthÚ	wireframeÚwireframeLinewidthÚvertexColorsÚ
properties)r   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   Úkwargsr8   s               €r   r   zGenericMaterial.__init__o   sc   ø€ ô 	Œo˜tÑ-Ô/ØˆŒ
Ø(ˆÔØˆŒØˆŒ	Ø&ˆÔØˆŒØ"ˆŒØ"ˆŒØ"4ˆÔØ(ˆÔØ ˆ�r   c                 óð  — | j                   €t        | j                  dk7  «      }n| j                   }| j                  | j                  | j
                  | j                  | j                  || j                  | j                  t        | j                  «      | j                  | j                  rdnddœ}|j                  | j                  «       | j                  �| j                  j                  |«      |d<   |S )Nr   r;   r   )r   r<   rc   rd   rf   rg   rh   ri   rj   rk   rl   re   )rg   Úboolrh   r   Ú_typerc   rd   rf   ri   rj   rk   rl   Úupdaterm   re   r    )r   r   rg   Údatas       r   r   zGenericMaterial.lowerƒ   sÆ   € ð ×ÑÐ#Ü˜tŸ|™|¨qÑ0Ó1‰Kà×*Ñ*ˆKà—Y‘YØ—Z‘ZØ—j‘jØ!×.Ñ.Ø—Y‘YØ'ØŸ™ØŸ.™.Ü˜tŸ~™~Ó.Ø#'×#:Ñ#:Ø#'×#4Ò#4™a¸!ñ
ˆð 	�‰�D—O‘OÔ$Ø�8‰8ÐØŸ8™8×3Ñ3°KÓ@ˆD�‰LØˆr   )
éÿÿÿ g      à?Nr;   NrP   rP   FrP   Fr@   rB   s   @r   ra   ra   n   s   ø„ Ø=AØ9<Ø Ø"Ø&)Ø#õ!ö(r   ra   c                   ó   — e Zd Zd Zy)ÚMeshBasicMaterialN©r   r   r   rq   r   r   r   rv   rv   ¡   ó   „ Ø
�Er   rv   c                   ó   — e Zd Zd Zy)ÚMeshPhongMaterialNrw   r   r   r   rz   rz   ¥   rx   r   rz   c                   ó   — e Zd Zd Zy)ÚMeshLambertMaterialNrw   r   r   r   r|   r|   ©   s   „ Ø
 �Er   r|   c                   ó   — e Zd Zd Zy)ÚMeshToonMaterialNrw   r   r   r   r~   r~   ­   s   „ Ø
�Er   r~   c                   ó   — e Zd Zd Zy)ÚLineBasicMaterialNrw   r   r   r   r€   r€   ±   rx   r   r€   c                   ó4   ‡ — e Zd Zˆ fd„Zed„ «       Zd„ Zˆ xZS )ÚPngImagec                 ó8   •— t         t        | �  «        || _        y r
   )r6   r‚   r   rs   )r   rs   r8   s     €r   r   zPngImage.__init__¶   s   ø€ ÜŒh˜Ñ&Ô(Øˆ�	r   c                 óx   — t        | d«      5 }t        |j                  «       «      cd d d «       S # 1 sw Y   y xY w)NÚrb)Úopenr‚   Úread©ÚfnameÚfs     r   Ú	from_filezPngImage.from_fileº   s(   € ä�%˜Ô !Ü˜AŸF™F›HÓ%÷ ×Òús   �0°9c                 ó�   — | j                   t        dt        j                  | j                  «      j                  d«      z   «      dœS )Nzdata:image/png;base64,Úascii)r   Úurl)r   r   Úbase64Ú	b64encoders   Údecoder   s     r   r   zPngImage.lower¿   s<   € à—Y‘YÜÐ0´6×3CÑ3CÀDÇIÁIÓ3N×3UÑ3UÐV]Ó3^Ñ^Ó_ñ
ð 	
r   )r   r   r   r   Ústaticmethodr‹   r   rA   rB   s   @r   r‚   r‚   µ   s!   ø„ ôð ñ&ó ð&ö
r   r‚   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚGenericTexturec                 ó8   •— t         t        | �  «        || _        y r
   )r6   r”   r   rm   )r   rm   r8   s     €r   r   zGenericTexture.__init__Ç   s   ø€ ÜŒn˜dÑ,Ô.Ø$ˆ�r   c                 ó’   — d| j                   i}|j                  | j                  «       d|v r|d   }|j                  |«      |d<   |S )Nr   Úimage)r   rr   rm   r    )r   r   rs   r—   s       r   r   zGenericTexture.lowerË   sJ   € Ø˜Ÿ™Ð#ˆØ�‰�D—O‘OÔ$Ø�tÑØ˜‘NˆEØ"×2Ñ2°;Ó?ˆD�‰NØˆr   r@   rB   s   @r   r”   r”   Æ   s   ø„ ô%ör   r”   c                   ó2   ‡ — e Zd Zddgddgfˆ fd„	Zd„ Zˆ xZS )ÚImageTextureié  r   c                 ób   •— t         t        | �  «        || _        || _        || _        || _        y r
   )r6   r™   r   r—   ÚwrapÚrepeatrm   )r   r—   r›   rœ   rn   r8   s        €r   r   zImageTexture.__init__Õ   s,   ø€ ÜŒl˜DÑ*Ô,ØˆŒ
ØˆŒ	ØˆŒØ ˆ�r   c                 ó¸   — | j                   | j                  | j                  | j                  j	                  |«      dœ}|j                  | j                  «       |S )N)r   r›   rœ   r—   )r   r›   rœ   r—   r    rr   rm   )r   r   rs   s      r   r   zImageTexture.lowerÜ   sG   € à—Y‘YØ—Y‘YØ—{‘{Ø—j‘j×0Ñ0°Ó=ñ	
ˆð 	�‰�D—O‘OÔ$Øˆr   r@   rB   s   @r   r™   r™   Ô   s   ø„ Ø$(¨$ <¸¸A¸õ !ör   r™   c                   ó2   ‡ — e Zd Z e«       fˆ fd„	Zd„ Zˆ xZS )ÚObjectc                 óF   •— t         t        | �  «        || _        || _        y r
   )r6   rŸ   r   ÚgeometryÚmaterial)r   r¡   r¢   r8   s      €r   r   zObject.__init__è   s   ø€ ÜŒf�dÑ$Ô&Ø ˆŒØ ˆ�r   c                 óh  — dddœg g | j                   | j                  | j                  j                   | j                  j                   t	        | j                  j                  «       j                  «       «      dœdœ}| j                  j                  |«       | j                  j                  |«       |S )Ng      @rŸ   )Úversionr<   )r   r<   r¡   r¢   Úmatrix)Úmetadatar#   r*   Úobject)r   rq   r¡   r¢   Úlistr'   Úflattenr    ©r   rs   s     r   r   zObject.lowerí   s”   € ð  Ø"ñð ØàŸ™ØŸ™Ø!Ÿ]™]×/Ñ/Ø!Ÿ]™]×/Ñ/Ü §¡× AÑ AÓ C× KÑ KÓ MÓNññ
ˆð 	�‰×%Ñ% dÔ+Ø�‰×%Ñ% dÔ+Øˆr   )r   r   r   rz   r   r   rA   rB   s   @r   rŸ   rŸ   ç   s   ø„ Ù*;Ó*=õ !ö
r   rŸ   c                   ó   — e Zd Zd Zy)ÚMeshNrw   r   r   r   r¬   r¬     ó   „ Ø�Er   r¬   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚOrthographicCamerac                 óŒ   •— t         t        | �  «        || _        || _        || _        || _        || _        || _        || _	        y r
   )
r6   r¯   r   ÚleftÚrightÚtopÚbottomÚnearÚfarÚzoom)	r   r±   r²   r³   r´   rµ   r¶   r·   r8   s	           €r   r   zOrthographicCamera.__init__  sB   ø€ ÜÔ  $Ñ0Ô2ØˆŒ	ØˆŒ
ØˆŒØˆŒØˆŒ	ØˆŒØˆ�	r   c                 óÂ   — d| j                   d| j                  | j                  | j                  | j                  | j
                  | j                  | j                  dœ	i}|S )Nr§   r¯   )	r   r<   r±   r²   r³   r´   rµ   r¶   r·   )r   r±   r²   r³   r´   rµ   r¶   r·   rª   s     r   r   zOrthographicCamera.lower  sS   € àØŸ™Ø.ØŸ™ØŸ*™*ØŸ™ØŸ;™;ØŸ™ØŸ™ØŸ™ñ
ð
ˆð ˆr   )r   r@   rB   s   @r   r¯   r¯     s   ø„ õör   r¯   c                   ó"   — e Zd ZdZ	 	 dd„Zd„ Zy)ÚPerspectiveCameraz®
    The PerspectiveCamera is the default camera used by the meshcat viewer. See
    https://threejs.org/docs/#api/en/cameras/PerspectiveCamera for more
    information.
    c	                 óž   — t         j                  | «       || _        || _        || _        || _        || _        || _        || _        || _	        y)a‚  
        fov   : Camera frustum vertical field of view, from bottom to top of view, in degrees. Default is 50.
        aspect: Camera frustum aspect ratio, usually the canvas width / canvas height. Default is 1 (square canvas).
        near  : Camera frustum near plane. Default is 0.1. The valid range is greater than 0 and less than the current
                value of the far plane. Note that, unlike for the OrthographicCamera, 0 is not a valid value for a
                PerspectiveCamera's near plane.
        far   : Camera frustum far plane. Default is 2000.
        zoom  : Gets or sets the zoom factor of the camera. Default is 1.
        filmGauge: Film size used for the larger axis. Default is 35 (millimeters). This parameter does not influence
                   the projection matrix unless .filmOffset is set to a nonzero value.
        filmOffset: Horizontal off-center offset in the same unit as .filmGauge. Default is 0.
        focus: Object distance used for stereoscopy and depth-of-field effects. This parameter does not influence
               the projection matrix unless a StereoCamera is being used. Default is 10.
        N)
r   r   ÚfovÚaspectr¶   rµ   r·   Ú	filmGaugeÚ
filmOffsetÚfocus)	r   r¼   r½   rµ   r¶   r·   r¾   r¿   rÀ   s	            r   r   zPerspectiveCamera.__init__'  sJ   € ô" 	×Ñ˜dÔ#ØˆŒØˆŒØˆŒØˆŒ	ØˆŒ	Ø"ˆŒØ$ˆŒØˆ�
r   c                 óØ   — d| j                   d| j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  dœ
i}|S )Nr§   rº   )
r   r<   r½   r¶   r¾   r¿   rÀ   r¼   rµ   r·   )	r   r½   r¶   r¾   r¿   rÀ   r¼   rµ   r·   rª   s     r   r   zPerspectiveCamera.lowerB  sZ   € àØŸ™Ø-ØŸ;™;ØŸ™Ø"Ÿn™nØ#Ÿ™ØŸ*™*ØŸ™ØŸ™ØŸ™ñð
ˆð ˆr   N)rZ   r   gš™™™™™¹?iÐ  r   é#   r   é
   )r   r   r   rV   r   r   r   r   r   rº   rº   !  s   „ ñð
 @DØACóó6r   rº   c                 ó¦   — | j                   dk(  ry| j                   dk(  r| j                  d   S t        dj                  | j                   «      «      ‚)Nr   r;   r   zRI can only pack 1- or 2-dimensional numpy arrays, but this one has {:d} dimensions)ÚndimÚshapeÚ
ValueErrorÚformat)Úarrays    r   Ú	item_sizerÊ   S  sP   € Ø‡z�z�Q‚ØØ	�‰�qŠØ�{‰{˜1‰~ÐäÐm×tÑtÐuz×uÑuó  Aó  Bð  	Br   c                 óÐ   — | t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ryt        dt        | «      z   «      ‚)N)Ú
Uint8Arrayé   )Ú
Int32Arrayé   )ÚUint32Arrayé   )ÚFloat32Arrayé   zUnsupported datatype: )rS   Úuint8Úint32Úuint32Úfloat32rÇ   r   ©Údtypes    r   Úthreejs_typerÚ   \  sS   € Ø”—‘ÒØ"Ø	”"—(‘(Ò	Ø"Ø	”"—)‘)Ò	Ø#Ø	”"—*‘*Ò	Ø$äÐ1´C¸³JÑ>Ó?Ð?r   c                 ó  — | j                   t        j                  k(  r| j                  t        j                  «      } t        | j                   «      \  }}t        | «      |t        j                  || j                  d«      «      ddœS )NÚFF)ÚitemSizer<   rÉ   Ú
normalized)
rÙ   rS   Úfloat64Úastyper×   rÚ   rÊ   ÚumsgpackÚExtÚtobytes)ÚxÚtypenameÚextcodes      r   Úpack_numpy_arrayrç   i  sd   € Ø‡w�w”"—*‘*ÒØ�H‰H”R—Z‘ZÓ ˆÜ$ Q§W¡WÓ-Ñ€Hˆgä˜q“\ØÜ—,‘,˜w¨¯	©	°#«Ó7Øñ	ð r   c                 óð   — t        | t        «      r"| j                  «       j                  d¬«      }|S t        | t        «      r| j                  «       }|S t        dj                  t        | «      «      «      ‚)Núutf-8)Úencodingú6Stream must be instance of StringIO or BytesIO, not {})Ú
isinstancer   r‡   r‘   r   rÇ   rÈ   r<   )Ústreamrs   s     r   Údata_from_streamrî   u  sj   € Ü�&œ'Ô"Ø�{‰{‹}×#Ñ#¨WÐ#Ó5ˆð
 €Kô	 
�FœHÔ	%Ø�{‰{‹}ˆð €Kô ÐQ×XÑXÔY]Ð^dÓYeÓfÓgÐgr   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚMeshGeometryc                 óF   •— t         t        | �  «        || _        || _        y r
   )r6   rð   r   ÚcontentsÚmesh_format)r   rò   ró   r8   s      €r   r   zMeshGeometry.__init__€  s   ø€ ÜŒl˜DÑ*Ô,Ø ˆŒØ&ˆÕr   c                 óL   — d| j                   | j                  | j                  dœS )NÚ	_meshfile)r<   r   rÈ   rs   )r   ró   rò   r   s     r   r   zMeshGeometry.lower…  s&   € à!Ø—Y‘YØ×'Ñ'Ø—]‘]ñ	
ð 	
r   r@   rB   s   @r   rð   rð     s   ø„ ô'ö

r   rð   c                   ó>   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zˆ xZS )ÚObjMeshGeometryc                 óF   •— t        t        | |d«      j                  «        y ©NÚobj)r6   r÷   r   ©r   rò   r8   s     €r   r   zObjMeshGeometry.__init__�  ó   ø€ ÜŒo˜t X¨vÓ6×?Ñ?ÕAr   c                 óz   — t        | d«      5 }t        |j                  «       d«      cd d d «       S # 1 sw Y   y xY w)NÚrrú   ©r†   rð   r‡   rˆ   s     r   r‹   zObjMeshGeometry.from_file’  ó*   € ä�%˜Ô Ü §¡£¨&Ó1÷ ×Òúó   �1±:c                 ó,   — t        t        | «      d«      S rù   ©rð   rî   ©rŠ   s    r   Úfrom_streamzObjMeshGeometry.from_stream—  ó   € äÔ,¨QÓ/°Ó8Ð8r   ©r   r   r   r   r’   r‹   r  rA   rB   s   @r   r÷   r÷   Ž  ó1   ø„ ôBð ñ2ó ð2ð ñ9ó ô9r   r÷   c                   ó>   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zˆ xZS )ÚDaeMeshGeometryc                 óF   •— t        t        | |d«      j                  «        y ©NÚdae)r6   r
  r   rû   s     €r   r   zDaeMeshGeometry.__init__�  rü   r   c                 óz   — t        | d«      5 }t        |j                  «       d«      cd d d «       S # 1 sw Y   y xY w)Nrþ   r  rÿ   rˆ   s     r   r‹   zDaeMeshGeometry.from_file   r   r  c                 ó,   — t        t        | «      d«      S r  r  r  s    r   r  zDaeMeshGeometry.from_stream¥  r  r   r  rB   s   @r   r
  r
  œ  r  r   r
  c                   ó>   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zˆ xZS )ÚStlMeshGeometryc                 óF   •— t        t        | |d«      j                  «        y )NÚstl)r6   r  r   rû   s     €r   r   zStlMeshGeometry.__init__«  rü   r   c                 óD  — t        | d«      5 }t        j                  |j                  «       t        j                  ¬«      }t        t        j                  «      \  }}t        j                  ||j                  «       «      }t        |d«      cd d d «       S # 1 sw Y   y xY w)Nr…   rØ   r  )
r†   rS   Ú
frombufferr‡   rÔ   rÚ   rá   râ   rã   rð   )r‰   rŠ   ÚarrÚ_ræ   Úencodeds         r   r‹   zStlMeshGeometry.from_file®  sf   € ä�%˜Ô !Ü—-‘- §¡£´·±Ô9ˆCÜ%¤b§h¡hÓ/‰JˆAˆwÜ—l‘l 7¨C¯K©K«MÓ:ˆGÜ ¨Ó0÷	 ×Òús   �A?BÂBc                 ó  — t        | t        «      r4t        j                  | j	                  «       t        j
                  ¬«      }nqt        | t        «      r>t        j                  t        | j	                  «       d«      t        j
                  ¬«      }n#t        dj                  t        | «      «      «      ‚t        t        j
                  «      \  }}t        j                  ||j                  «       «      }t        |d«      S )NrØ   ré   rë   r  )rì   r   rS   r  r‡   rÔ   r   ÚbytesrÇ   rÈ   r<   rÚ   rá   râ   rã   rð   )rŠ   r  r  ræ   r  s        r   r  zStlMeshGeometry.from_stream¶  s¤   € ä�aœÔ!Ü—=‘= §¡£´·±Ô:‰CÜ˜œ8Ô$Ü—-‘-¤ a§f¡f£h°Ó 8ÄÇÁÔI‰CäÐU×\Ñ\Ô]aÐbcÓ]dÓeÓfÐfÜ!¤"§(¡(Ó+‰
ˆˆ7Ü—,‘,˜w¨¯©«Ó6ˆÜ˜G VÓ,Ð,r   r  rB   s   @r   r  r  ª  s1   ø„ ôBð ñ1ó ð1ð ñ	-ó ô	-r   r  c                   ó2   ‡ — e Zd ZdZddgZdˆ fd„	Zd„ Zˆ xZS )ÚTriangularMeshGeometryaŽ  
    A mesh consisting of an arbitrary collection of triangular faces. To
    construct one, you need to pass in a collection of vertices as an Nx3 array
    and a collection of faces as an Mx3 array. Each element of `faces` should
    be a collection of 3 indices into the `vertices` array.

    For example, to create a square made out of two adjacent triangles, we
    could do:

    vertices = np.array([
        [0, 0, 0],  # the first vertex is at [0, 0, 0]
        [1, 0, 0],
        [1, 0, 1],
        [0, 0, 1]
    ])
    faces = np.array([
        [0, 1, 2],  # The first face consists of vertices 0, 1, and 2
        [3, 0, 2]
    ])

    mesh = TriangularMeshGeometry(vertices, faces)

    To set the color of the mesh by vertex, pass an Nx3 array containing the
    RGB values (in range [0,1]) of the vertices to the optional `color`
    argument, and set `vertexColors=True` in the Material.
    ÚverticesÚfacesc                 óü  •— t         t        | �  «        t        j                  |t        j
                  ¬«      }t        j                  |t        j                  ¬«      }|j                  d   dk(  sJ d«       ‚|j                  d   dk(  sJ d«       ‚|| _        || _	        |�Vt        j                  |t        j
                  ¬«      }t        j                  |j                  |j                  «      sJ d«       ‚|| _        y )NrØ   r   é   z`vertices` must be an Nx3 arrayz`faces` must be an Mx3 arrayz*`color` must be the same shape as vertices)r6   r  r   rS   Úasarrayr×   rÖ   rÆ   r  r  Úarray_equalrc   )r   r  r  rc   r8   s       €r   r   zTriangularMeshGeometry.__init__à  sÃ   ø€ ÜÔ$ dÑ4Ô6ä—:‘:˜h¬b¯j©jÔ9ˆÜ—
‘
˜5¬¯	©	Ô2ˆØ�~‰~˜aÑ  AÒ%ÐHÐ'HÓHÐ%Ø�{‰{˜1‰~ Ò"ÐBÐ$BÓBÐ"Ø ˆŒØˆŒ
ØÐÜ—J‘J˜u¬B¯J©JÔ7ˆEÜ—>‘> (§.¡.°%·+±+Ô>ÐlÐ@lÓlÐ>Øˆ�
r   c                 ó   — dt        | j                  j                  «      i}| j                  �"t        | j                  j                  «      |d<   | j                  d|t        | j
                  j                  «      dœdœS )NÚpositionrc   ÚBufferGeometry)Ú
attributesÚindex©r   r<   rs   )rç   r  ÚTrc   r   r  ©r   r   Úattrss      r   r   zTriangularMeshGeometry.lowerî  sf   € ØÔ.¨t¯}©}¯©Ó?Ð@ˆØ�:‰:Ð!Ü.¨t¯z©z¯|©|Ó<ˆE�(‰Oà—Y‘YØ&à$Ü*¨4¯:©:¯<©<Ó8ññ
ð 	
r   r
   )r   r   r   rV   Ú	__slots__r   r   rA   rB   s   @r   r  r  Ã  s   ø„ ñð4 ˜WÐ%€Iõö
r   r  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚPointsGeometryc                 óF   •— t         t        | �  «        || _        || _        y r
   )r6   r.  r   r$  rc   )r   r$  rc   r8   s      €r   r   zPointsGeometry.__init__ý  s   ø€ ÜŒn˜dÑ,Ô.Ø ˆŒØˆ�
r   c                 óœ   — dt        | j                  «      i}| j                  �t        | j                  «      |d<   | j                  dd|idœS )Nr$  rc   r%  r&  r(  )rç   r$  rc   r   r*  s      r   r   zPointsGeometry.lower  sP   € ØÔ.¨t¯}©}Ó=Ð>ˆØ�:‰:Ð!Ü.¨t¯z©zÓ:ˆE�(‰Oà—Y‘YØ&à˜uðñ
ð 	
r   r
   r@   rB   s   @r   r.  r.  ü  s   ø„ õö


r   r.  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚPointsMaterialc                 óF   •— t         t        | �  «        || _        || _        y r
   )r6   r2  r   Úsizerc   )r   r4  rc   r8   s      €r   r   zPointsMaterial.__init__  s   ø€ ÜŒn˜dÑ,Ô.ØˆŒ	Øˆ�
r   c                 óN   — | j                   d| j                  | j                  ddœS )Nr2  r;   )r   r<   rc   r4  rl   )r   rc   r4  r   s     r   r   zPointsMaterial.lower  s'   € à—Y‘YØ&Ø—j‘jØ—Y‘YØñ
ð 	
r   )gü©ñÒMbP?rt   r@   rB   s   @r   r2  r2    s   ø„ õö

r   r2  c                   ó   — e Zd Zd Zy)ÚPointsNrw   r   r   r   r7  r7    s   „ Ø�Er   r7  c                 ó@   — t        t        | |«      t        di |¤Ž«      S )Nr   )r7  r.  r2  )r$  rc   rn   s      r   Ú
PointCloudr9  #  s$   € ÜÜ�x Ó'ÜÑ ˜Ñ óð r   c                   ó   — e Zd Zd Zy)ÚLineNrw   r   r   r   r;  r;  *  r­   r   r;  c                   ó   — e Zd Zd Zy)ÚLineSegmentsNrw   r   r   r   r=  r=  .  s   „ Ø�Er   r=  c                   ó   — e Zd Zd Zy)ÚLineLoopNrw   r   r   r   r?  r?  2  r,   r   r?  c                 óz  — t        t        t        j                  g d¢| ddgg d¢d| dgg d¢dd| gg«      j	                  t        j
                  «      j                  t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      j	                  t        j
                  «      j                  ¬	«      t        d
¬«      «      S )a  
    A visual representation of the origin of a coordinate system, drawn as three
    lines in red, green, and blue along the x, y, and z axes. The `scale` parameter
    controls the length of the three lines.

    Returns an `Object` which can be passed to `set_object()`
    )r   r   r   r   )r   r   r   )r   ç333333ã?r   )r   r   r   )rA  r   r   )r   r   r   )r   rA  r   )r$  rc   T)rl   )r=  r.  rS   rÉ   rà   r×   r)  r€   )Úscales    r   ÚtriadrC  6  sœ   € ô Ü¤§¡Ú˜˜q !�}Ú˜˜5 !�}Ú˜˜1˜e�}ð*&ó !'÷ (.¡v¬b¯j©jÓ'9¿!¹!Ü—(‘(Ú’{Ú’{Ú’{ð$ó %÷ &,¡V¬B¯J©JÓ%7¿¹ô	
ô 	 tÔ,ó
.ð 
.r   )rP   )4r�   r   Úior   r   rá   ÚnumpyrS   Ú r   r%   r§   r   r   r"   r)   r.   r1   r4   rD   rM   rX   ra   rv   rz   r|   r~   r€   r‚   r”   r™   rŸ   r¬   r¯   rº   rÊ   rÚ   rç   rî   rð   r÷   r
  r  r  r.  r2  r7  r9  r;  r=  r?  rC  r   r   r   Ú<module>rG     sÛ  ðÛ Û ß  Û Û å #ô&�6ô &ô
˜Lô ô$Ð$ô $ôÐ$ô ôÐ#ô ôÐ!ô ô
ˆ(ô 
ô
ˆXô 
ô
5�ô 
5ðô
ˆxô 
ô.0�hô 0ôf˜ô ô˜ô ô!˜/ô !ô�ô ô˜ô ô
ˆuô 
ô"�Wô ô�7ô ô&ˆ\ô ô6ˆ6ô ô˜ô ô60˜ô 0òdBò
@ò	òô
�8ô 
ô9�lô 9ô9�lô 9ô-�lô -ô26
˜Xô 6
ôr
�Xô 
ô&
�Xô 
ô ˆVô òôˆ6ô ô�6ô ôˆvô ô.r   