Ë
    7^(hi!  ã                   ó
  — d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dl mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlm Z  d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-y)é    )ÚcompÚRational)
Úrefraction_angleÚfresnel_coefficientsÚ	deviationÚbrewster_angleÚcritical_angleÚlens_makers_formulaÚmirror_formulaÚlens_formulaÚhyperfocal_distanceÚtransverse_magnification)ÚMedium)Úe0)Úoo)Úsymbols)Úsqrt)ÚMatrix)ÚPoint3D)ÚRay3D)ÚPlane)Úraisesc                 ó$   — t        | |d| z  «      S )Né
   )r   )ÚaÚbÚns      úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/optics/tests/test_utils.pyú<lambda>r      s   € ”T˜!˜Q  Q B¡Ó'€ ó    c                  ó  ‡‡‡‡‡‡— t        d«      \  } }t        d«      Št        d«      Št        t        ddd«      t        ddd«      «      Št	        g d¢«      Št	        g d¢«      }t        t        ddd«      t        ddd«      «      Št        t        ddd«      g d¢¬	«      Št        ‰dd|«      t	        dgdgdgg«      k(  sJ ‚t        g d¢dd|«      t	        dgdgdgg«      k(  sJ ‚t        ddd|«      t	        dgdgdgg«      k(  sJ ‚t        ‰ddg d¢«      t	        dgdgdgg«      k(  sJ ‚t        ‰ddd«      t	        dgdgdgg«      k(  sJ ‚t        ‰dd‰«      t	        dgdgdgg«      k(  sJ ‚t        ‰dd‰¬
«      t	        dgdgdgg«      k(  sJ ‚t        ‰dd‰¬
«      t        t        ddd«      t        ddd«      «      k(  sJ ‚t        ‰‰d‰¬
«      t        t        ddd«      t        t        dd«      t        dd«      dt        d«      z  dz  «      «      k(  sJ ‚t        ‰d‰‰¬
«      t        t        ddd«      t        ddd«      «      k(  sJ ‚t        ‰| |‰¬
«      t        t        ddd«      t        | |z  | |z  t        d«       t        d| dz  z  d|dz  z  z  dz   «      z  «      «      k(  sJ ‚t        ‰dd‰¬
«      dk(  sJ ‚t        ‰dd‰«      t        t        ddd«      g d¢¬«      k(  sJ ‚t        t        ddd«      dd«      sJ ‚t        t        ddd«      dd«      sJ ‚t        t        ˆˆˆˆˆfd„«       t        t        ˆˆfd„«       t        t        ˆˆˆˆfd„«       t        t        ˆˆˆfd„«       y )Nún1, n2Úm1Úm2éÿÿÿÿé   r   )r&   r&   r&   ©r   r   r&   ©Únormal_vector©ÚplaneçHáz®Gõ?éd   é…   lüÿÿÿw ›^½7 é   l     �Iú5 éþÿÿÿé   )r&   r&   r%   )Údirection_ratioç      à?g@Þ«V&üÎ?é   gžê�›á†ô?c                  ó"   •— t        ‰‰‰‰‰ «      S ©N©r   )ÚPr#   r$   Ú
normal_rayÚr1s   €€€€€r   r   z'test_refraction_angle.<locals>.<lambda>I   s   ø€ Ô/°°B¸¸JÈÓJ€ r    c                  ó   •— t        ‰ ‰ ‰«      S r6   r7   ©r#   r$   s   €€r   r   z'test_refraction_angle.<locals>.<lambda>J   s   ø€ Ô.¨r°2°rÓ:€ r    c                  ó"   •— t        ‰‰‰d ‰ «      S r6   r7   )Úir#   r$   r:   s   €€€€r   r   z'test_refraction_angle.<locals>.<lambda>K   s   ø€ Ô.¨r°2°r¸4ÀÓC€ r    c                  ó    •— t        ‰‰ ‰‰«      S r6   r7   )r#   r$   r:   s   €€€r   r   z'test_refraction_angle.<locals>.<lambda>L   s   ø€ Ô.¨r°2°r¸2Ó>€ r    )r   r   r   r   r   r   r   r   r   Úaer   Ú
ValueErrorÚ	TypeError)	Ún1Ún2r   r8   r>   r#   r$   r9   r:   s	      @@@@@@r   Útest_refraction_anglerE      s  ý€ Ü�XÓ�F€BˆÜ	�‹€BÜ	�‹€BÜ	Œw�r˜2˜qÓ!¤7¨1¨a°Ó#3Ó	4€BÜŠyÓ€AÜŠyÓ€AÜ”w˜q ! QÓ'¬°°A°qÓ)9Ó:€JÜŒg�a˜˜AÓªiÔ8€AÜ˜B  1 aÓ(¬FØ./¨DØ./¨DØ-/¨Dð42ó -3ò 3ð 3ð 3ô šI q¨!¨QÓ/´6Ø./¨DØ./¨DØ-/¨Dð;2ó 43ò 3ð 3ð 3ô ˜I q¨!¨QÓ/´6Ø./¨DØ./¨DØ-/¨Dð;2ó 43ò 3ð 3ð 3ô ˜A˜q !¢YÓ/´6Ø./¨DØ./¨DØ-/¨Dð;2ó 43ò 3ð 3ð 3ô ˜A˜q ! YÓ/´6Ø./¨DØ./¨DØ-/¨Dð;2ó 43ò 3ð 3ð 3ô ˜A˜q ! ZÓ0´FØ./¨DØ./¨DØ-/¨Dð<2ó 53ò 3ð 3ð 3ô ˜A˜q !¨1Ô-´Ø./¨DØ./¨DØ-/¨Dð92ó 23ò 3ð 3ð 3ô ˜B  1¨AÔ.ÜŒg�a˜˜AÓ¤¨¨1¨bÓ 1Ó2ò3ð 3ð 3ä˜B  D°Ô2ÜŒg�a˜˜AÓ¤¬°°cÓ(:¼HÀSÈ#Ó<NÐP`ÔaeÐfgÓahÑPhÐiyÑPyÓ zÓ{ò|ð |ð |ä˜B  2¨QÔ/ÜŒg�a˜˜AÓ¤¨¨1¨bÓ 1Ó2ò3ð 3ð 3ä˜B  B¨aÔ0ÜŒg�a˜˜AÓ¤¨¨2©¨r°"©u´t¸A³w°h¼tÀBÀrÈ1ÁuÁHÈaÐPRÐTUÑPUÉgÑDVÐYZÑDZÓ?[Ñ6[Ó \Ó]ò^ð ^ð ^ä˜B  a¨qÔ1°QÒ6Ð6Ð6Ü˜B  1 jÓ1ÜŒg�a˜˜AÓ²
Ô;ò<ð <ð <äÔ˜s A qÓ)¨7°AÔ6Ð6Ð6ÜÔ˜s A qÓ)¨7°AÔ6Ð6Ð6Ü
Œ:×JÔKÜ
Œ9Ô:Ô;Ü
Œ9ÖCÔDÜ
Œ9Õ>Õ?r    c            
      óê  — t        d„ t        t        ddd«      g d¢«      D «       «      sJ ‚t        d„ t        t        ddd«      g d¢«      D «       «      sJ ‚t        d«      } t        d	d
¬«      }t        d„ t        t        d| |«      g d¢«      D «       «      sJ ‚ddgddgg}t        d|| «      }t        ||«      D ]6  \  }}t        |j	                  «       |«      D ]  \  }}t        ||d«      rŒJ ‚ Œ8 y )Nc              3   ó<   K  — | ]  \  }}t        ||d «      –— Œ y­w©r4   N©r@   ©Ú.0r>   Újs      r   ú	<genexpr>z,test_fresnel_coefficients.<locals>.<genexpr>P   ó    è ø€ ò 0™t˜q !Œr�!�Q˜�{ñ 0ùó   ‚r3   r&   r,   )g‡¢@ŸÈ“¼?g ˜£ÇïÅ¿g­nõœô¾ê?gù÷„ê?c              3   ó<   K  — | ]  \  }}t        ||d «      –— Œ y­wrH   rI   rJ   s      r   rM   z,test_fresnel_coefficients.<locals>.<genexpr>S   rN   rO   )gHùIµOÇ³¿gHŠÈ°Š7Ê?g}iÆ¢ó?gIVñFó?r#   r$   r1   ©r   c              3   ó<   K  — | ]  \  }}t        ||d «      –— Œ y­wrH   rI   rJ   s      r   rM   z,test_fresnel_coefficients.<locals>.<genexpr>X   rN   rO   g333333Ó?)gºW•}WÔ?gŽðHPÖ¿g.ÅUeßå?g¹ü‡ôÛ×ä?gðmú³)Î¿g~:3Pï¿g�Ñ:ªš ê?gÒ©+Ÿåyâ¿g333333ã?r4   )ÚallÚzipr   r   Úas_real_imagr@   )r#   r$   ÚansÚgotr>   rL   r   r   s           r   Útest_fresnel_coefficientsrX   O   s  € Üñ 0¤sÜ˜S ! TÓ*Ú-ó(/ô 0ô 0ð 0ð 0ô ñ 0¤sÜ˜S $¨Ó*Ú-ó(/ô 0ô 0ð 0ð 0ô 
�‹€BÜ	�˜Ô	€BÜñ 0¤sÜ˜S " bÓ)Ú-ó(/ô 0ô 0ð 0ð 0ð �hÐ '¨8Ð!4Ð
5€CÜ
˜s B¨Ó
+€CÜ�C˜“ò ‰ˆˆ1Ü˜Ÿ™Ó(¨!Ó,ò 	‰DˆAˆqÜ�a˜˜A•;Ð�;ñ	ñr    c                  óÞ  — t        d«      \  } }t        t        ddd«      t        ddd«      «      }t        g d¢«      }t        g d¢«      }t        t        ddd«      t        ddd«      «      }t	        t        ddd«      g d¢¬«      }t        |dd|¬«      dk(  sJ ‚t        |dd|¬	«      dk(  sJ ‚t        |dd
|¬	«      j                  d«      dz   dk  sJ ‚t        |dd
|¬«      j                  d«      dz   dk  sJ ‚t        |dd|¬	«      �J ‚t        |ddg d¢¬«      dk(  sJ ‚t        g d¢ddg d¢¬«      dk(  sJ ‚t        t        ddd«      dd«      sJ ‚t        t        ddd«      dd«      sJ ‚y )Nr"   r%   r&   r   r'   )r%   r%   r%   r(   )Únormalr*   gš™™™™™ñ?r/   gX9´Èv¾?gü©ñÒMbP?r,   r3   r1   gàªÔì�Ð¿r4   g=Õ!7Ãé?)r   r   r   r   r   r   Úevalfr@   )rC   rD   r:   r   r>   r9   r8   s          r   Útest_deviationr\   b   sx  € Ü�XÓ�F€BˆÜ	Œw�r˜2˜qÓ!¤7¨1¨a°Ó#3Ó	4€BÜŠyÓ€AÜŠ|Ó€AÜ”w˜q ! QÓ'¬°°A°qÓ)9Ó:€JÜŒg�a˜˜AÓªiÔ8€AÜ�R˜˜A aÔ(¨AÒ-Ð-Ð-Ü�R˜˜A QÔ'¨1Ò,Ð,Ð,Ü�R˜˜C qÔ)×/Ñ/°Ó2°UÑ:¸TÒAÐAÐAÜ�Q˜˜3 zÔ2×8Ñ8¸Ó;¸eÑCÀdÒJÐJÐJÜ�R˜˜q¨Ô*Ð2Ð2Ð2Ü�R˜˜A¢iÔ0°AÒ5Ð5Ð5Ü’\ 1 a²	Ô:¸aÒ?Ð?Ð?ÜŒi˜˜Q Ó" H¨aÔ0Ð0Ð0ÜŒi˜˜Q Ó" G¨QÔ/Ð/Ñ/r    c                  ó  — t        dd¬«      } t        dd¬«      }t        t        | |«      dd«      sJ ‚t        dt        d¬«      } t        dt        d¬«      }t        t        | |«      dd«      sJ ‚t        t        dd«      dd«      sJ ‚y )	Nr#   r&   rQ   r$   r,   gÃõ(\�Âí?r1   ©Úpermittivityr   )r   r@   r   r   r<   s     r   Útest_brewster_angler`   t   s�   € Ü	�˜Ô	€BÜ	�˜Ô	€BÜŒn˜R Ó$ d¨AÔ.Ð.Ð.Ü	�¤2¨Ô	+€BÜ	�¤2¨Ô	.€BÜŒn˜R Ó$ d¨AÔ.Ð.Ð.ÜŒn˜Q Ó% t¨QÔ/Ð/Ñ/r    c                  ój   — t        dd¬«      } t        dd¬«      }t        t        || «      dd«      sJ ‚y )Nr#   r&   rQ   r$   r,   g333333ë?r1   )r   r@   r	   r<   s     r   Útest_critical_anglerb   ~   s3   € Ü	�˜Ô	€BÜ	�˜Ô	€BÜŒn˜R Ó$ d¨AÔ.Ð.Ñ.r    c                  ó  — t        d«      \  } }t        dt        d¬«      }t        dt        d¬«      }t        | |dd«      d	|z  | |z
  z  k(  sJ ‚t	        t        ||dd«      d
d«      sJ ‚t	        t        dddd«      dd«      sJ ‚y )Nr"   r#   r&   r^   r$   r,   r   éöÿÿÿg      @gfffff&4Àr1   gÍÌÌÌÌL.@)r   r   r   r
   r@   ©rC   rD   r#   r$   s       r   Útest_lens_makers_formularf   „   sŽ   € Ü�XÓ�F€BˆÜ	�¤2¨Ô	+€BÜ	�¤2¨Ô	.€BÜ˜r 2 r¨3Ó/°3°r±6¸2À¹7Ñ3CÒCÐCÐCÜÔ! " b¨"¨cÓ2°F¸AÔ>Ð>Ð>ÜÔ! $¨¨2¨sÓ3°e¸QÔ?Ð?Ñ?r    c                  óà  ‡ ‡‡— t        d«      \  ŠŠŠ t        ‰ ‰¬«      ‰ ‰z  ‰  ‰z   z  k(  sJ ‚t        ‰ ‰¬«      ‰ ‰z  ‰  ‰z   z  k(  sJ ‚t        ‰‰¬«      ‰‰z  ‰‰z   z  k(  sJ ‚t        t        ‰¬«      ‰k(  sJ ‚t        t        t        ¬«      t        u sJ ‚t        t        ‰¬«      ‰ k(  sJ ‚t        ‰t        ¬«      ‰k(  sJ ‚t        t        t        ¬«      t        u sJ ‚t        ‰ t        ¬«      ‰ k(  sJ ‚t        t        ‰¬«      ‰ k(  sJ ‚t        t        t        ¬«      t        u sJ ‚t        ‰ t        ¬«      ‰ k(  sJ ‚t        t        ‰¬«      ‰ k(  sJ ‚t        t        ˆ ˆˆfd„«       y )Núu, v, f©Úfocal_lengthÚu©rj   Úv©rk   rm   c                  ó    •— t        ‰ ‰‰¬«      S ©N)rj   rk   rm   )r   ©Úfrk   rm   s   €€€r   r   z%test_mirror_formula.<locals>.<lambda>œ   s   ø€ œ~¸1ÀÀQÔG€ r    )r   r   r   r   rA   rq   s   @@@r   Útest_mirror_formulars   �   s]  ú€ Ü�iÓ �G€A€qˆ!Ü q¨AÔ.°!°A±#¸°r¸A±v±,Ò>Ð>Ð>Ü q¨AÔ.°!°A±#¸°r¸A±v±,Ò>Ð>Ð>Ü˜A Ô# q¨¡s¨A°©E¡{Ò2Ð2Ð2ÜœB !Ô$¨Ò)Ð)Ð)ÜœB¤"Ô%¬Ñ+Ð+Ð+Ü¤r¨QÔ/°A°2Ò5Ð5Ð5Ü˜A¤Ô$¨Ò)Ð)Ð)Ü¤r¬RÔ0´BÑ6Ð6Ð6Ü q¬BÔ/°1Ò4Ð4Ð4Ü¤r¨QÔ/°A°2Ò5Ð5Ð5Ü¤r¬RÔ0´BÑ6Ð6Ð6Ü q¬BÔ/°1Ò4Ð4Ð4Ü¤r¨QÔ/°A°2Ò5Ð5Ð5Ü
Œ:ÕGÕHr    c                  óÜ  ‡ ‡‡— t        d«      \  ŠŠŠ t        ‰ ‰¬«      ‰ ‰z  ‰ ‰z   z  k(  sJ ‚t        ‰ ‰¬«      ‰ ‰z  ‰ ‰z
  z  k(  sJ ‚t        ‰‰¬«      ‰‰z  ‰‰z
  z  k(  sJ ‚t        t        ‰¬«      ‰k(  sJ ‚t        t        t        ¬«      t        u sJ ‚t        t        ‰¬«      ‰k(  sJ ‚t        ‰t        ¬«      ‰ k(  sJ ‚t        t        t        ¬«      t         u sJ ‚t        t        ‰¬«      ‰k(  sJ ‚t        ‰ t        ¬«      ‰  k(  sJ ‚t        t        t        ¬«      t        u sJ ‚t        t        ‰¬«      ‰k(  sJ ‚t        ‰ t        ¬«      ‰ k(  sJ ‚t        t        ˆ ˆˆfd„«       y )Nrh   ri   rl   rn   c                  ó    •— t        ‰ ‰‰¬«      S rp   )r   rq   s   €€€r   r   z#test_lens_formula.<locals>.<lambda>®   s   ø€ œ|¸¸aÀ1ÔE€ r    )r   r   r   r   rA   rq   s   @@@r   Útest_lens_formularv   Ÿ   sY  ú€ Ü�iÓ �G€A€qˆ!Ü Q¨!Ô,°°!±°Q¸±U±Ò;Ð;Ð;Ü Q¨!Ô,°°!±°Q¸±U±Ò;Ð;Ð;Ü˜!˜qÔ! Q q¡S¨!¨a©%¡[Ò0Ð0Ð0Üœ" Ô" aÒ'Ð'Ð'Üœ"¤Ô#¤rÑ)Ð)Ð)Ü¤R¨1Ô-°Ò2Ð2Ð2Ü˜!œrÔ" q bÒ(Ð(Ð(Ü¤R¬2Ô.´2°#Ñ5Ð5Ð5Ü¤R¨1Ô-°Ò2Ð2Ð2Ü Q¬"Ô-°!°Ò3Ð3Ð3Ü¤R¬2Ô.´"Ñ4Ð4Ð4Ü¤R¨1Ô-°Ò2Ð2Ð2Ü Q¬"Ô-°Ò2Ð2Ð2Ü
Œ:ÕEÕFr    c                  ó�   — t        d«      \  } }}t        | ||¬«      | dz  ||z  z  k(  sJ ‚t        t        ddd¬«      dd«      sJ ‚y )Nzf, N, c©rr   ÚNÚcr1   r3   é   gF%ušk?gq=
×£ð"@)r   r   r@   rx   s      r   Útest_hyperfocal_distancer|   ±   sQ   € Ü�iÓ �G€A€qˆ!Ü  a¨1Ô-°°A±°q¸±s±Ò;Ð;Ð;ÜÔ! C¨1°Ô7¸¸qÔAÐAÑAr    c                  ól   — t        d«      \  } }t        | |«      |  |z  k(  sJ ‚t        dd«      dk(  sJ ‚y )Nzsi, soé   é   r0   )r   r   )ÚsiÚsos     r   Útest_transverse_magnificationr‚   ·   s@   € Ü�XÓ�F€BˆÜ# B¨Ó+°¨s°2©vÒ5Ð5Ð5Ü# B¨Ó+¨rÒ1Ð1Ñ1r    c            	      óü   — t        d«      \  } }t        dt        d¬«      }t        dt        d¬«      }t        t	        ||ddd¬	«      d
d«      sJ ‚t	        | |ddd¬	«      |dd| z  d|z  z
  | z  z
  | |z
  z  z  k(  sJ ‚y )Nr"   r#   r&   r^   r$   r,   r   rd   )ÚdgR¸…ëÑ3Àr1   r%   gš™™™™™¹?g       @)r   r   r   r@   r
   re   s       r   Ú#test_lens_makers_formula_thick_lensr…   ½   s�   € Ü�XÓ�F€BˆÜ	�¤2¨Ô	+€BÜ	�¤2¨Ô	.€BÜÔ! " b¨"¨c°QÔ7¸ÀÔCÐCÐCÜ˜r 2 q¨"°Ô4¸¸SÀCÈÁFÈSÐQSÉVÁOÐUWÑCWÑ=WÐZ\Ð_aÑZaÑ<bÑ8cÒcÐcÑcr    c                  óæ   — t        d«      \  } }t        dt        d¬«      }t        dt        d¬«      }t        t	        ||dt
        «      dd	«      sJ ‚t	        | |dt
        «      d
|z  | |z
  z  k(  sJ ‚y )Nr"   r#   r&   r^   r$   r,   r   gfffff&DÀr1   g      $@)r   r   r   r@   r
   r   re   s       r   Ú#test_lens_makers_formula_plano_lensr‡   Å   sp   € Ü�XÓ�F€BˆÜ	�¤2¨Ô	+€BÜ	�¤2¨Ô	.€BÜÔ! " b¨"¬bÓ1°6¸1Ô=Ð=Ð=Ü˜r 2 r¬2Ó.°$°r±'¸2À¹7Ñ2CÒCÐCÑCr    N).Úsympy.core.numbersr   r   Úsympy.physics.optics.utilsr   r   r   r   r	   r
   r   r   r   r   Úsympy.physics.optics.mediumr   Úsympy.physics.unitsr   r   Úsympy.core.symbolr   Ú(sympy.functions.elementary.miscellaneousr   Úsympy.matrices.denser   Úsympy.geometry.pointr   Úsympy.geometry.liner   Úsympy.geometry.planer   Úsympy.testing.pytestr   r@   rE   rX   r\   r`   rb   rf   rs   rv   r|   r‚   r…   r‡   © r    r   ú<module>r”      s‚   ðß -÷"÷ "÷ "õ /Ý "å !Ý %Ý 9Ý 'Ý (Ý %Ý &å 'ñ (€ò5@òpò&0ò$0ò/ò@òIò$Gò$Bò2òdóDr    