ó
    {ñ:iÍ  ã                   ó¦   • S r SSKrSSKJr   SS jrS rS rS rS r	S	 r
S
 rS rS rS rS r\R                   " S5      S 5       rS rS rS rg)z,
Various transforms used for by the 3D code
é    N)Ú_apic           	      ó¼   • X-
  nX2-
  nXT-
  n	Ub  Uu  p«nXz-  nX‹-  nXœ-  n	[         R                  " SU-  SSU * U-  /SSU-  SU* U-  /SSSU	-  U* U	-  // SQ/5      $ )z“
Produce a matrix that scales homogeneous coords in the specified ranges
to [0, 1], or [0, pb_aspect[i]] if the plotbox aspect ratio is specified.
é   r   )r   r   r   r   ©ÚnpÚarray)ÚxminÚxmaxÚyminÚymaxÚzminÚzmaxÚ	pb_aspectÚdxÚdyÚdzÚaxÚayÚazs                Ú^/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/mpl_toolkits/mplot3d/proj3d.pyÚworld_transformationr   
   s—   € ð 
‰€BØ	‰€BØ	‰€BØÑØ‰
ˆ�Ø
‰ˆØ
‰ˆØ
‰ˆä�8Š8�a˜‘d˜q Q¨¨¨b©Ð1Ø˜A˜b™D Q¨¨¨b©Ð1Ø˜q ! B¡$¨¨¨b©Ð1Ú1ð3ó 4ð 4ó    c                 óÒ  • U [         R                  R                  U 5      -  u  p#n[         R                  " U5      n[         R                  " U5      nS[         R                  " US-  5      S-  -  n[         R
                  " Xr-  U-  U-   Xr-  U-  XE-  -
  Xr-  U-  X5-  -   /Xs-  U-  XE-  -   Xs-  U-  U-   Xs-  U-  X%-  -
  /Xt-  U-  X5-  -
  Xt-  U-  X%-  -   Xt-  U-  U-   //5      nU$ )zC
Produce a rotation matrix for an angle in radians about a vector.
é   )r   ÚlinalgÚnormÚsinÚcosr   )	ÚvÚangleÚvxÚvyÚvzÚsÚcÚtÚRs	            r   Ú_rotation_about_vectorr(       sò   € ð ”R—Y‘Y—^‘^ AÓ&Ñ&�J€BˆBÜ
�Šˆu‹€AÜ
�Šˆu‹€AØ	Œ"�&Š&��q‘‹/˜1Ñ
Ñ€Aä
�ŠØ	
‰ˆb‰�1‰˜™˜b™ 2¡4™¨©¨b©°2±4©Ð8Ø	
‰ˆb‰�2‘4‰˜™˜b™ 1™¨©¨b©°2±4©Ð8Ø	
‰ˆb‰�2‘4‰˜™˜b™ 2¡4™¨©¨b©°1©Ð5ð7ó 	8€Að
 €Hr   c                 ón  • X-
  nU[         R                  R                  U5      -  n[         R                  " X$5      nU[         R                  R                  U5      -  n[         R                  " XE5      nUS:w  a8  [	        XC* 5      n[         R
                  " Xu5      n[         R
                  " Xv5      nXVU4$ )aO  
Get the unit viewing axes in data coordinates.

Parameters
----------
E : 3-element numpy array
    The coordinates of the eye/camera.
R : 3-element numpy array
    The coordinates of the center of the view box.
V : 3-element numpy array
    Unit vector in the direction of the vertical axis.
roll : float
    The roll angle in radians.

Returns
-------
u : 3-element numpy array
    Unit vector pointing towards the right of the screen.
v : 3-element numpy array
    Unit vector pointing towards the top of the screen.
w : 3-element numpy array
    Unit vector pointing out of the screen.
r   )r   r   r   Úcrossr(   Údot)ÚEr'   ÚVÚrollÚwÚur   ÚRrolls           r   Ú
_view_axesr2   1   s�   € ð0 
‰€AØ	Œ"�)‰)�.‰.˜Ó
Ñ€AÜ
�Š�‹€AØ	Œ"�)‰)�.‰.˜Ó
Ñ€AÜ
�Š�‹€Að ˆqƒyä& q¨%Ó0ˆÜ�FŠF�5ÓˆÜ�FŠF�5ÓˆØ�ˆ7€Nr   c                 ó¸   • [         R                  " S5      n[         R                  " S5      nXU/USS2SS24'   U* USS2S4'   [         R                  " XE5      nU$ )al  
Return the view transformation matrix.

Parameters
----------
u : 3-element numpy array
    Unit vector pointing towards the right of the screen.
v : 3-element numpy array
    Unit vector pointing towards the top of the screen.
w : 3-element numpy array
    Unit vector pointing out of the screen.
E : 3-element numpy array
    The coordinates of the eye/camera.
é   Né   éÿÿÿÿ)r   Úeyer+   )r0   r   r/   r,   ÚMrÚMtÚMs          r   Ú_view_transformation_uvwr;   X   s\   € ô 
�Š�‹€BÜ	�Š�‹€BØ˜�€B€rˆ€rˆ2ˆAˆ2€v�JØ�€B€rˆ€rˆ2€v�JÜ
�Šˆr‹€AØ€Hr   c                 óŠ   • UnSnX-   X-
  -  nSX-  -  X-
  -  n[         R                  " USSS/SX4-  SS/SSXV// SQ/5      nU$ )Nr   éþÿÿÿr   )r   r   r6   r   r   )ÚzfrontÚzbackÚfocal_lengthÚeÚaÚbr%   Úproj_matrixs           r   Ú_persp_transformationrE   o   sk   € Ø€AØ	€AØ	‰˜™Ñ%€AØ
ˆF‰LÑ˜6™<Ñ(€AÜ—(’(˜Q ! a¨˜OØ ¡ a¨˜OØ ! a˜OÚ+ð-ó .€Kð Ðr   c           	      ó`   • X-   * nX-
  * n[         R                  " / SQ/ SQ/ SQSSX#//5      nU$ )N)r   r   r   r   )r   r   r   r   )r   r   r=   r   r   r   )r>   r?   rB   rC   rD   s        r   Ú_ortho_transformationrG   {   sB   € à
‰.Ð€AØ
‰.Ð€AÜ—(’(šMÚ)Ú)Ø  A˜Mð+ó ,€Kð Ðr   c                 óh  • [         R                  " XR                  5      nUS   nUS   U-  US   U-  US   U-  pen[         R                  R	                  U S   5      (       a*  [         R                  R                  X@S   R                  S9n[         R                  R	                  U S   5      (       a*  [         R                  R                  XPS   R                  S9n[         R                  R	                  U S   5      (       a*  [         R                  R                  X`S   R                  S9nXEU4$ )Nr5   r   r   r   )Úmask)r   r+   ÚdataÚmaÚisMAr   rI   )Úvecr:   Úvecwr/   ÚtxsÚtysÚtzss          r   Ú_proj_transform_vecrR   †   sã   € Ü�6Š6�!—X‘XÓ€DØˆQ‰€AØ˜‘G˜A‘I˜t A™w q™y¨$¨q©'°!©)ˆc€CÜ	‡u�u‡z�z�#�a‘&×ÑÜ�e‰e�k‰k˜#¨¡F§K¡KˆkÐ0ˆÜ	‡u�u‡z�z�#�a‘&×ÑÜ�e‰e�k‰k˜#¨¡F§K¡KˆkÐ0ˆÜ	‡u�u‡z�z�#�a‘&×ÑÜ�e‰e�k‰k˜#¨¡F§K¡KˆkÐ0ˆØ�Sˆ=Ðr   c                 óP  • [         R                  " XR                  5      nUS   nUS   U-  US   U-  US   U-  pvn[         R                  " U5      (       a$  [         R                  " UR
                  [        S9nOSU:*  US:*  -  SU:*  -  US:*  -  US:*  -  n[         R                  R                  U S   5      (       a  X€S   R                  ) -  n[         R                  R                  U S   5      (       a  X€S   R                  ) -  n[         R                  R                  U S   5      (       a  X€S   R                  ) -  n[         R                  R                  XX) 5      n[         R                  R                  Xh) 5      n[         R                  R                  Xx) 5      nXVXx4$ )Nr5   r   r   r   )Údtyper6   )r   r+   rJ   ÚisinfÚonesÚshapeÚboolrK   rL   rI   Úmasked_array)	rM   r:   r@   rN   r/   rO   rP   rQ   Útiss	            r   Ú_proj_transform_vec_clipr[   “   sX  € Ü�6Š6�!—X‘XÓ€DØˆQ‰€AØ˜‘G˜a‘K  a¡¨1¡¨d°1©g¸©kˆc€CÜ	‡x‚x�×ÑÜ�gŠg�c—i‘i¤tÑ,‰à�S‰y˜S A™XÑ&¨"°©)Ñ4¸¸q¹ÑAÀSÈAÁXÑNˆÜ	‡u�u‡z�z�#�a‘&×ÑØ˜‘V—[‘[�LÑ ˆÜ	‡u�u‡z�z�#�a‘&×ÑØ˜‘V—[‘[�LÑ ˆÜ	‡u�u‡z�z�#�a‘&×ÑØ˜‘V—[‘[�LÑ ˆä
�%‰%×
Ñ
˜S $Ó
'€CÜ
�%‰%×
Ñ
˜S $Ó
'€CÜ
�%‰%×
Ñ
˜S $Ó
'€CØ�SÐÐr   c                 ó0  • [        XU5      n[        R                  " X45      nUR                  S:X  a  UR	                  S5      n[        UR                  S   5       H*  nUS   U   S:w  d  M  USS2U4   US   U   -  USS2U4'   M,     US   US   US   4$ )zG
Transform the points by the inverse of the projection matrix, *invM*.
)r4   )r4   r   r   r5   r   Nr   )Ú_vec_pad_onesr   r+   rW   ÚreshapeÚrange)ÚxsÚysÚzsÚinvMrM   ÚvecrÚis          r   Úinv_transformrf   ¨   s›   € ô ˜ Ó
#€CÜ�6Š6�$Ó€DØ‡z�z�TÓØ�|‰|˜FÓ#ˆÜ�4—:‘:˜a‘=Ö!ˆØ�‰7�1‰:˜�?Øša ˜d™ d¨1¡g¨a¡jÑ0ˆD’�A�‹Jñ "ð �‰7�D˜‘G˜T !™WÐ$Ð$r   c                 ó   • [         R                  R                  U 5      (       dH  [         R                  R                  U5      (       d$  [         R                  R                  U5      (       a6  [         R                  R                  XU[         R                  " U 5      /5      $ [         R                  " XU[         R                  " U 5      /5      $ ©N)r   rK   rL   r   Ú	ones_like)r`   ra   rb   s      r   r]   r]   ¶   su   € Ü	‡u�u‡z�z�"‡~�~œŸ™Ÿ™ BŸ™¬2¯5©5¯:©:°b¯>©>Ü�u‰u�{‰{˜B B¬¯ª°RÓ(8Ð9Ó:Ð:ä�xŠx˜ ¤R§\¢\°"Ó%5Ð6Ó7Ð7r   c                 ó0   • [        XU5      n[        XC5      $ )z4
Transform the points by the projection matrix *M*.
)r]   rR   )r`   ra   rb   r:   rM   s        r   Úproj_transformrk   ½   s   € ô ˜ Ó
#€CÜ˜sÓ&Ð&r   z3.10c                 ó4   • [        XX#[        R                  S9$ )N)r@   )Ú_proj_transform_clipr   Úinf)r`   ra   rb   r:   s       r   Úproj_transform_clipro   Å   s   € ä ¨¼B¿F¹FÑCÐCr   c                 ó2   • [        XU5      n[        XSU5      $ )zi
Transform the points by the projection matrix
and return the clipping result
returns txs, tys, tzs, tis
)r]   r[   )r`   ra   rb   r:   r@   rM   s         r   rm   rm   Ê   s   € ô ˜ Ó
#€CÜ# C¨LÓ9Ð9r   c                 ó@   • [         R                  " [        X5      5      $ rh   )r   Úcolumn_stackÚ_proj_trans_points)Úpointsr:   s     r   Ú_proj_pointsru   Ô   s   € Ü�?Š?Ô-¨fÓ8Ó9Ð9r   c                 óz   • [         R                  " U 5      n U S S 2S4   U S S 2S4   U S S 2S4   pCn[        X#XA5      $ )Nr   r   r   )r   Ú
asanyarrayrk   )rt   r:   r`   ra   rb   s        r   rs   rs   Ø   s@   € Ü�]Š]˜6Ó"€FØš˜1˜‘˜v¢a¨ d™|¨V²A°q°D©\ˆB€BÜ˜" "Ó(Ð(r   rh   )Ú__doc__Únumpyr   Ú
matplotlibr   r   r(   r2   r;   rE   rG   rR   r[   rf   r]   rk   Ú
deprecatedro   rm   ru   rs   © r   r   Ú<module>r}      s}   ðñó å ð
 04ô4ò,ò"$òNò.	òò
òò*%ò8ò'ð ‡‚�ÓñDó ðDò:ò:ó)r   