ó
    /ÐÆji  ã                   ól   • S SK r S SKrS SKrS SKJr  / r/ r " S S5      rS	S jrS
S jr	SS jr
SS jrg)é    N)ÚVectorc                   ó*   • \ rS rSrS rSS jrS rSrg)ÚMeshé   c                 ór   • Xl         / U l        / U l        / U l        / U l        / U l        / U l        SU l        g )N)é   r   r   r   )ÚnameÚvÚfÚmiÚuvÚsmoothÚcolorsÚcolor)Úselfr	   s     Ú//root/fal-author/modern-atom-kit-v1/geometry.pyÚ__init__ÚMesh.__init__   s=   €  4œ¨r¨¬¸°$´&ÀB¸D¼GÈrÀtÄwÐ^`ÐRVÔR]ÐmoÐaeÔalð  |EÐptÕpzó    Nc           
      ó  ^• U Vs/ s H  n[        U5      PM     nn[        U R                  5      mU R                  R                  U5        U GH  nU R                  R                  [        U4S jU 5       5      5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                  5        U(       a0  U R                  R                  U V	s/ s H  o•U	   PM	     sn	5        MÄ  XxS      XxS      -
  R                  XxS      XxS      -
  5      R                  5       n
[        U
R                  5      S:  aH  [        S5      o»R                  U
5      R                  5       oÊR                  U5      R                  5       nOK[        S5      XªR                   -  -
  R                  5       oÊR                  U5      nUR"                  S:  a  U* nU R                  R                  U V	s/ s H  o—U	   PM	     sn	 Vs/ s H8  oÝR%                  U5      [&        U   -  UR%                  U5      [&        U   -  4PM:     sn5        GM     g s  snf s  sn	f s  sn	f s  snf )Nc              3   ó.   >#   • U  H
  nTU-   v •  M     g 7f©N© )Ú.0ÚjÚoffs     €r   Ú	<genexpr>ÚMesh.add.<locals>.<genexpr>   s   øé € Ð+¢d �s˜1–u¢dùs   ƒr   r   é   gffffffî?)r   r   r   )r   r   r   )r   Úlenr
   Úextendr   ÚappendÚtupler   r   r   r   r   ÚcrossÚ
normalizedÚabsÚyÚxÚzÚdotÚTILES)r   ÚvertsÚfacesÚmatr   r   r
   ÚvsÚfacer   ÚnormalÚupÚuÚpr   s                 @r   ÚaddÚMesh.add   sÞ  ø€ ÙÓš�A„fˆQ†i™€"Ð¤C¨¯©£K °·±·±¸bÔ0AÜ€dØ‡6�6‡=�=”Ô+¡dÓ+Ó+Ô,¨T¯W©W¯^©^¸CÔ-@ÀÇÁ×ASÑASÐTZÔA[Ð\`×\gÑ\g×\nÑ\nÐos×oyÑoyÔ\zÞˆ�‰�‰©Ó-ª 1˜Aœ©Ñ-Ô	.©xØ�1‰g‰;�r˜q™'‘{Ñ"×
)Ñ
)¨"°!©W©+°b¸a¹±kÑ*AÓ
B×
MÑ
MÓ
O€6ä	ˆ&�(‰(ƒm�CÓÜˆgƒ€BŸ™ &Ó)×4Ñ4Ó6�q¿¹Àa»×9SÑ9SÓ9U±qäˆgƒ�vŸh™h‘Ñ&×2Ñ2Ó4€A·|±|ÀA³°QØ‡s�sˆ1ƒu�ˆrˆQØ‡7�7‡>�>ÑVZÓF[ÒVZÐQRÈ!ÄuÑVZÒF[Ó\ÒF[À—E‘E˜!“HœU 3™ZÑ'¨¯©¨a«´°s±Ñ(;Ó<ÑF[Ñ\×]ò ùò  ùò .ùò G\ùÒ\s   †I0Ã<I5
ÈI:
È$?I?
c                 óR  • [         R                  R                  R                  U R                  5      oR                  U R                  / U R                  5        UR                  5         [         R                  R                  R                  U R                  U5      n[         R                  R                  R                  R                  U5        [         H  o1R                  R                  U5        M     UR                   R                  SS9n[#        UR$                  U R&                  U R(                  U R*                  5       HD  u  pVpxXel        X…l        [#        UR0                  U5       H  u  pšX¤R                  U	   l        M     MF     UR2                  R                  SSSS9n[#        UR$                  U R4                  5       H+  u  p\UR0                   H  oœUR                  U	   l        M     M-     [8        R                  " 5       oÝR;                  U5        [8        R<                  R?                  XÝR@                  S9  [8        R<                  RC                  U[E        UR@                  5      S9  URG                  U5        URI                  5         UR                  5         U$ )NÚUVMap)r	   ÚColorÚFLOAT_COLORÚCORNER)r	   ÚtypeÚdomain)r-   )%ÚbpyÚdataÚmeshesÚnewr	   Úfrom_pydatar
   r   ÚupdateÚobjectsÚcontextÚ
collectionÚlinkÚMATSÚ	materialsr"   Ú	uv_layersÚzipÚpolygonsr   r   r   Úmaterial_indexÚ
use_smoothÚloop_indicesÚcolor_attributesr   r   ÚbmeshÚ	from_meshÚopsÚrecalc_face_normalsr-   ÚtriangulateÚlistÚto_meshÚfree)r   ÚmeÚobÚmr   r4   r   ÚcoordsÚsmÚliÚcor   ÚcÚbms                 r   ÚfinishÚMesh.finish   s:  € Ü‡X�X‡_�_×Ñ˜Ÿ™Ó#€"§N¡N°4·6±6¸"¸T¿V¹VÔ$DÀRÇYÁYÄ[ÔTW×T\ÑT\×TdÑTd×ThÑThÐim×irÑirÐsuÓTvÐQSÔwz÷  xCñ  xC÷  xNñ  xN÷  xVñ  xV÷  x[ñ  x[ð  \^ô  x_ß€a—‘×#Ñ# AÖ&‰4Ø‡\�\×Ñ˜7ÐÐ#€"Ü˜BŸK™K¨¯©°·±¸¿¹ÖD�n€aˆ6ØÔ B”|Ü�A—N‘N 6Ö*�u€r¸"¯7©7°2©;®>Ó*ñ Eð 	×Ñ×Ñ W°-ÀxÐÐP€%Ü�—‘˜TŸ[™[Ö)�c€aØ�^Œ^€r˜EŸJ™J r™NÖ0‹^ñ *ä
‡Y‚Yƒ[€"—‘˜bÔ!¤%§)¡)×"?Ñ"?ÀÏÉÐ"?Ñ"RÔSX×S\ÑS\×ShÑShÐikÔrvÐwy×wÑwó  sAÐShñ  TBð  CE÷  CMñ  CMð  NPô  CQð  RT÷  RYñ  RYô  R[ð  \^÷  \eñ  \eô  \gà	€)r   )r   r   r   r   r	   r   r   r
   )FN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r5   rb   Ú__static_attributes__r   r   r   r   r      s   † ò Eô^õr   r   c           
      ó  • [         R                  " 5       n[         R                  R                  USS9  UR                   Hd  n[        UR                  R                  US   -  UR                  R                  US   -  UR                  R                  US   -  45      Ul        Mf     U(       aJ  [         R                  R                  U[        UR                  5      [        U[        U5      S-  5      SSS9  UR                  R                  5         UR                  R                  5         UR                   Vs/ s H  owR                  R!                  5       PM     nnUR"                   V	s/ s H  n	[%        S U	R                   5       5      PM!     n
n	UR'                  5         U(       a  U Vs/ s H  ouU-  PM	     nnU R)                  U Vs/ s H  ow[        U5      -   PM     snX£5        g s  snf s  sn	f s  snf s  snf )	Nr   )Úsizer   r   g¸…ëQ¸Î?ÚEDGES)ÚgeomÚoffsetÚsegmentsÚaffectc              3   ó8   #   • U  H  oR                   v •  M     g 7fr   )Úindex)r   r
   s     r   r   Úbox.<locals>.<genexpr>'   s   é € Ðd~Òv}Ðqr×elÖelÒv}ùs   ‚)rQ   rA   rS   Úcreate_cuber,   r   r_   r(   r'   r)   ÚbevelrV   ÚedgesÚminÚensure_lookup_tableÚindex_updateÚcopyr-   r#   rX   r5   )Úgr`   Úsr[   ÚbÚrotra   r
   r/   r   Úfss              r   Úboxr   #   s¢  € Ü	‡I‚IƒK€”—	‘	×%Ñ% b¨aÐ%Ñ0Ø
�(Œ(€Qœ §¡§¡ q¨¡t¡¨A¯D©D¯F©F°1°Q±4©K¸¿¹¿¹¸qÀ¹t¹ÐDÓE�1–4‰(Þ„e‡i�i‡o�o�bœd 2§8¡8›n´C¸¼#¸a»&À¹*Ó4EÈqÐX_€oÑ`Ø‡�×ÑÔ §¡× 5Ñ 5Ô 7ÐQS×QYÒQYÓ;ZÒQYÈA¿D¹D¿I¹I¾KÑQY¸Ð;Zð  IK÷  IQò  IQó  _Rò  IQð  DEÔ_dÑd~Ðvw×v}Òv}Ód~Ö_~ñ  IQÐ[]ð  _Rð  SU÷  SZñ  SZô  S\Þ™2Óš2�a�ŒE™2ˆÐØ‡�™RÓ šR˜Œ&�‹)Œ™RÑ  Õ&ùò <[ùò  _RùÚùÚ s   Ä;#G0Å.&G5Æ1G:ÇG?c           	      ó®  • U VVVs/ s H  oQ  H	  u  pgXgU4PM     M     nnnn[        U5      n	[        [        U	S-
  SS5      5      [        [        U	SU	-  5      5      /[        U	5       V
s/ s H  oªU
S-   U	-  U
S-   U	-  U	-   X©-   4PM     sn
-   nUS:X  a  U VVVs/ s H	  u  pgoVXW4PM     nnnnU R                  X‹U5        g s  snnnf s  sn
f s  snnnf )Nr   éÿÿÿÿr   r'   )r    r#   Úranger5   )rz   ÚpolyÚdepthr[   Úaxisr)   r(   r'   r/   ÚnÚir~   s               r   Úprismrˆ   +   sÊ   € áÕ,’e�£t¡ €aˆ!ƒW¡t�W‘e€Ò,¬s°4«y¨QÜ
Œ5��1‘�R˜ÓÓœU¤5¨¨1¨Q©3£<Ó0Ð1ÔV[Ð\]ÔV^Ó2_ÒV^ÐQR°q¸±s¸A±g¸qÀ¹sÀA¹gÀa¹iÈÉÓ3LÑV^Ñ2_Ñ_€Øˆ#ƒI¡rÕ*¢r™e˜a !�Q“'¡rˆbÒ*Ø‡�€rˆQ…ùô -ùÚ2_ùÜ*s   ‡CÁ, CÂCc                 ó®  • [        U5      n[        U5      o"U-
  R                  orU-
  R                  SS5      o†c  UOUnX4X&44 V	V
Vs/ s H�  u  pš[        U5        Hl  o¹U[        U
[        R
                  " U[        R                  -  U-  5      -  U
[        R                  " U[        R                  -  U-  5      -  S45      -  -   PMn     Mƒ     nn
n	n[        [        US-
  SS5      5      [        [        USU-  5      5      /[        U5       Vs/ s H  o»US-   U-  US-   U-  U-   Xµ-   4PM     sn-   nU R                  XÍUS5        g s  snn
n	f s  snf )NÚZÚYr   r   r�   r   T)
r   ÚlengthÚto_track_quatr‚   ÚmathÚcosÚtauÚsinr#   r5   )rz   Úar|   Úrr[   r†   Úr2ÚLÚqr4   Úrrr‡   r/   r~   s                 r   Úcylr˜   2   s6  € Ü	ˆ!ƒ9€Œv�a‹yˆQ˜a™CŸ<™<˜¨Q©3×*=Ñ*=¸cÀ#Ó*F¨ÉzÉ!Ð_aÀrØWXÐV[Ð]^Ð\bÑUcÕvÒUcÉTÈQÔmrÐst×muÐhi€qŒ�”D—H’H˜QœtŸx™x™Z¨™\Ó*Ñ*¨2¬d¯hªh°q¼¿¹±zÀ!±|Ó.DÑ+DÀQÐGÓ	HÑHÔHÑmuÑHÑUc€ÒvÜ
Œ5��1‘�R˜ÓÓœU¤5¨¨1¨Q©3£<Ó0Ð1ÔV[Ð\]ÔV^Ó2_ÒV^ÐQR°q¸±s¸A±g¸qÀ¹sÀA¹gÀa¹iÈÉÓ3LÑV^Ñ2_Ñ_€Ø‡�€rˆQˆtÕùô wùÚ2_s   Á	BEÄ Ec           	      óL   • [        XSS  5       H  u  pV[        XXbX45        M     g )Nr   )rK   r˜   )rz   Úpointsr“   r[   r†   r’   r|   s          r   Útuber›   8   s"   € Ü�˜a˜b�zÖ"�S€Q¤3 q¨1¨qÖ#3Ò"r   )g{®Gáz„?N)r)   )é   N)rœ   )r>   rQ   rŽ   Ú	mathutilsr   rH   r+   r   r   rˆ   r˜   r›   r   r   r   Ú<module>rž      s6   ðç Ó Ý Ø€Ø€÷ñ ô:'ôôõ4r   