
    \hi!                     
   S SK JrJr  S SKJrJrJrJrJrJ	r	J
r
JrJrJr  S SKJr  S SKJr  S SK Jr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJ r   S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-g)    )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                 "    [        XSU* -  5      $ )N
   )r   )abns      ]/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/optics/tests/test_utils.py<lambda>r      s    T!QB'    c                     ^^^^^^ [        S5      u  p[        S5      m[        S5      m[        [        SSS5      [        SSS5      5      m[	        / SQ5      m[	        / SQ5      n[        [        SSS5      [        SSS5      5      m[        [        SSS5      / SQS	9m[        TSSU5      [	        S/S/S//5      :X  d   e[        / SQSSU5      [	        S/S/S//5      :X  d   e[        SSSU5      [	        S/S/S//5      :X  d   e[        TSS/ SQ5      [	        S/S/S//5      :X  d   e[        TSSS5      [	        S/S/S//5      :X  d   e[        TSST5      [	        S/S/S//5      :X  d   e[        TSSTS
9[	        S/S/S//5      :X  d   e[        TSSTS
9[        [        SSS5      [        SSS5      5      :X  d   e[        TTSTS
9[        [        SSS5      [        [        SS5      [        SS5      S[        S5      -  S-  5      5      :X  d   e[        TSTTS
9[        [        SSS5      [        SSS5      5      :X  d   e[        TXTS
9[        [        SSS5      [        X-  X-  [        S5      * [        SU S-  -  SUS-  -  -  S-   5      -  5      5      :X  d   e[        TSSTS
9S:X  d   e[        TSST5      [        [        SSS5      / SQS9:X  d   e[        [        SSS5      SS5      (       d   e[        [        SSS5      SS5      (       d   e[        [        UUUUU4S j5        [        [        UU4S j5        [        [        UUUU4S j5        [        [        UUU4S j5        g )Nn1, n2m1m2   r   )r&   r&   r&   r   r   r&   normal_vectorplaneHzG?d      lw ^7    l     I5    )r&   r&   r%   )direction_ratio      ?g@ޫV&?   gꐛ?c                  "   > [        TTTTT 5      $ Nr   )Pr#   r$   
normal_rayr1s   r   r   'test_refraction_angle.<locals>.<lambda>I   s    /BJJr    c                     > [        T T T5      $ r6   r7   r#   r$   s   r   r   r;   J   s    .r2r:r    c                  "   > [        TTTS T 5      $ r6   r7   )ir#   r$   r:   s   r   r   r;   K   s    .r2r4Cr    c                      > [        TT TT5      $ r6   r7   )r#   r$   r:   s   r   r   r;   L   s    .r2r2>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_anglerF      s   XFB	B	B	wr2q!71a#3	4ByAyAwq!Q'Aq)9:JgaAi8AB1a(F./D./D-/D42 -3 3 3 3 Iq!Q/6./D./D-/D;2 43 3 3 3 Iq!Q/6./D./D-/D;2 43 3 3 3 Aq!Y/6./D./D-/D;2 43 3 3 3 Aq!Y/6./D./D-/D;2 43 3 3 3 Aq!Z0F./D./D-/D<2 53 3 3 3 Aq!1-./D./D-/D92 23 3 3 3 B1A.gaA1b 123 3 3BD2gaAc(:HS#<NP`aefgahPhiyPy z{| | |B2Q/gaA1b 123 3 3Ba0gaArutAwhtBr1uHaPRTUPUgDVYZDZ?[6[ \]^ ^ ^Baq1Q666B1j1gaA
;< < <sAq)7A6666sAq)7A6666
:JJK
9:;
9CD
9>?r    c            
         [        S [        [        SSS5      / SQ5       5       5      (       d   e[        S [        [        SSS5      / SQ5       5       5      (       d   e[        S5      n [        S	S
S9n[        S [        [        SX5      / SQ5       5       5      (       d   eSS/SS//n[        SX5      n[        X25       H;  u  pE[        UR	                  5       U5       H  u  pg[        XgS5      (       a  M   e   M=     g )Nc              3   >   #    U  H  u  p[        XS 5      v   M     g7fr4   NrA   .0r?   js      r   	<genexpr>,test_fresnel_coefficients.<locals>.<genexpr>P   "      0 (/tqr!{{ (/   r3   r&   r,   )g@ȓ?g ſgn?g?c              3   >   #    U  H  u  p[        XS 5      v   M     g7frI   rJ   rK   s      r   rN   rO   S   rP   rQ   )gHIOǳgHȰ7?g}iƢ?gIVF?r#   r$   r1   r   c              3   >   #    U  H  u  p[        XS 5      v   M     g7frI   rJ   rK   s      r   rN   rO   X   rP   rQ   g333333?)gW}W?gHPֿg.Ue?g?gm)οg~:3Pg: ?gҩ+yg333333?r4   )allzipr   r   as_real_imagrA   )r#   r$   ansgotr?   rM   r   r   s           r   test_fresnel_coefficientsrZ   O   s    0sS!T*-(/ 0 0 0 0 0  0sS$*-(/ 0 0 0 0 0 
B		B 0sS")-(/ 0 0 0 0 0 h'8!4
5C
sB
+CC(!,DAaA;;; - r    c                     [        S5      u  p[        [        SSS5      [        SSS5      5      n[        / SQ5      n[        / SQ5      n[        [        SSS5      [        SSS5      5      n[	        [        SSS5      / SQS9n[        USSUS9S:X  d   e[        USSUS	9S:X  d   e[        USS
US	9R                  S5      S-   S:  d   e[        USS
US9R                  S5      S-   S:  d   e[        USSUS	9b   e[        USS/ SQS9S:X  d   e[        / SQSS/ SQS9S:X  d   e[        [        SSS5      SS5      (       d   e[        [        SSS5      SS5      (       d   eg )Nr"   r%   r&   r   r'   )r%   r%   r%   r(   )normalr*   g?r/   gX9v?gMbP?r,   r3   r1   gпr4   g=!7?)r   r   r   r   r   r   evalfrA   )rD   rE   r:   r   r?   r9   r8   s          r   test_deviationr^   b   s|   XFB	wr2q!71a#3	4ByA|Awq!Q'Aq)9:JgaAi8ARAa(A---RAQ'1,,,RCq)//2U:TAAAQ3z288;eCdJJJRq*222RAi0A555\1a	:a???iQ"Ha0000iQ"GQ////r    c                     [        SSS9n [        SSS9n[        [        X5      SS5      (       d   e[        S[        SS9n [        S[        SS9n[        [        X5      SS5      (       d   e[        [        SS5      SS5      (       d   eg )	Nr#   r&   rS   r$   r,   g(\?r1   permittivityr   )r   rA   r   r   r=   s     r   test_brewster_anglerb   t   s    		B		BnR$dA....	2	+B	2	.BnR$dA....nQ%tQ////r    c                  f    [        SSS9n [        SSS9n[        [        X5      SS5      (       d   eg )Nr#   r&   rS   r$   r,   g333333?r1   )r   rA   r	   r=   s     r   test_critical_anglerd   ~   s4    		B		BnR$dA....r    c                     [        S5      u  p[        S[        SS9n[        S[        SS9n[        XSS5      S	U-  X-
  -  :X  d   e[	        [        X#SS5      S
S5      (       d   e[	        [        SSSS5      SS5      (       d   eg )Nr"   r#   r&   r`   r$   r,   r   g      @gfffff&4r1   gL.@)r   r   r   r
   rA   rD   rE   r#   r$   s       r   test_lens_makers_formularh      s    XFB	2	+B	2	.Brr3/3r6273CCCC!""c2FA>>>>!$2s3eQ????r    c                    ^ ^^ [        S5      u  mmm [        T TS9T T-  T * T-   -  :X  d   e[        T TS9T T-  T * T-   -  :X  d   e[        TTS9TT-  TT-   -  :X  d   e[        [        TS9T:X  d   e[        [        [        S9[        L d   e[        [        TS9T* :X  d   e[        T[        S9T:X  d   e[        [        [        S9[        L d   e[        T [        S9T :X  d   e[        [        TS9T* :X  d   e[        [        [        S9[        L d   e[        T [        S9T :X  d   e[        [        TS9T* :X  d   e[        [        U UU4S j5        g )Nu, v, ffocal_lengthurl   vrm   ro   c                     > [        T TTS9$ N)rl   rm   ro   )r   frm   ro   s   r   r   %test_mirror_formula.<locals>.<lambda>   s    ~1QGr    )r   r   r   r   rB   rs   s   @@@r   test_mirror_formularv      s]   i GAq!qA.!A#rAv,>>>qA.!A#rAv,>>>A#qsAE{222B!$)))B"%+++rQ/A2555A$)))rR0B666qB/1444rQ/A2555rR0B666qB/1444rQ/A2555
:GHr    c                    ^ ^^ [        S5      u  mmm [        T TS9T T-  T T-   -  :X  d   e[        T TS9T T-  T T-
  -  :X  d   e[        TTS9TT-  TT-
  -  :X  d   e[        [        TS9T:X  d   e[        [        [        S9[        L d   e[        [        TS9T:X  d   e[        T[        S9T* :X  d   e[        [        [        S9[        * L d   e[        [        TS9T:X  d   e[        T [        S9T * :X  d   e[        [        [        S9[        L d   e[        [        TS9T:X  d   e[        T [        S9T :X  d   e[        [        U UU4S j5        g )Nrj   rk   rn   rp   c                     > [        T TTS9$ rr   )r   rs   s   r   r   #test_lens_formula.<locals>.<lambda>   s    |a1Er    )r   r   r   r   rB   rs   s   @@@r   test_lens_formularz      sY   i GAq!Q!,!QU;;;Q!,!QU;;;!q!QqS!a%[000""a'''"#r)))R1-222!r"qb(((R2.2#555R1-222Q"-!333R2."444R1-222Q"-222
:EFr    c                      [        S5      u  pn[        XUS9U S-  X-  -  :X  d   e[        [        SSSS9SS5      (       d   eg )Nzf, N, crt   Ncr1   r3      gF%uk?gq=
ף"@)r   r   rA   r|   s      r   test_hyperfocal_distancer      sN    i GA!1-Aqs;;;!C17qAAAAr    c                  l    [        S5      u  p[        X5      U * U-  :X  d   e[        SS5      S:X  d   eg )Nzsi, so      r0   )r   r   )sisos     r   test_transverse_magnificationr      s<    XFB#B+s2v555#B+r111r    c            
          [        S5      u  p[        S[        SS9n[        S[        SS9n[        [	        X#SSSS	9S
S5      (       d   e[	        XSSSS	9USSU -  SU-  -
  U -  -
  X-
  -  -  :X  d   eg )Nr"   r#   r&   r`   r$   r,   r   rf   )dgR3r1   r%   g?g       @)r   r   r   rA   r
   rg   s       r   #test_lens_makers_formula_thick_lensr      s    XFB	2	+B	2	.B!""cQ7CCCCrq"4SCFSQSVOUWCW=WZ\Za<b8ccccr    c                      [        S5      u  p[        S[        SS9n[        S[        SS9n[        [	        X#S[
        5      SS	5      (       d   e[	        XS[
        5      S
U-  X-
  -  :X  d   eg )Nr"   r#   r&   r`   r$   r,   r   gfffff&Dr1   g      $@)r   r   r   rA   r
   r   rg   s       r   #test_lens_makers_formula_plano_lensr      sk    XFB	2	+B	2	.B!""b161====rr2.$r'272C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   rA   rF   rZ   r^   rb   rd   rh   rv   rz   r   r   r   r    r    r   <module>r      s    -" " " / " ! % 9 ' ( % & ' (5@p&0$0/@I$G$B2dDr    