
    sgi!                     
   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      X/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/optics/tests/test_utils.py<lambda>r      s    T!QQB'     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planeHzG?d      lw ^7    l     I5    )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    .r2r: r    c                  "    t        d        S r6   r7   )ir#   r$   r:   s   r   r   z'test_refraction_angle.<locals>.<lambda>K   s    .r2r4C r    c                       t               S r6   r7   )r#   r$   r:   s   r   r   z'test_refraction_angle.<locals>.<lambda>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_anglerE      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Ba0gaA2r"utAwhtBr1uHaPRTUPUgDVYZDZ?[6[ \]^ ^ ^Baq1Q666B1j1gaA
;< < <sAq)7A666sAq)7A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          0tq!r!Q{ 0   r3   r&   r,   )g@ȓ?g ſgn?g?c              3   <   K   | ]  \  }}t        ||d         ywrH   rI   rJ   s      r   rM   z,test_fresnel_coefficients.<locals>.<genexpr>S   rN   rO   )gHIOǳgHȰ7?g}iƢ?gIVF?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?gm)οg~:3Pg: ?gҩ+yg333333?r4   )allzipr   r   as_real_imagr@   )r#   r$   ansgotr>   rL   r   r   s           r   test_fresnel_coefficientsrX   O   s    0sS!T*-(/ 0 0 0 0  0sS$*-(/ 0 0 0 0 
B		B 0sS"b)-(/ 0 0 0 0 h'8!4
5C
sB
+CC 1(!, 	DAq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X9v?gMbP?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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iQ"GQ///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nR$dA...	2	+B	2	.BnR$dA...nQ%tQ///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nR$dA...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&4r1   gL.@)r   r   r   r
   r@   rC   rD   r#   r$   s       r   test_lens_makers_formularf      s    XFB	2	+B	2	.Br2r3/3r6273CCCC!"b"c2FA>>>!$2s3eQ???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 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                      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    |a1E r    )r   r   r   r   rA   rq   s   @@@r   test_lens_formularv      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                      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 GAq!a1-Aqs;;;!C1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FB#B+s2v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3r1   r%   g?g       @)r   r   r   r@   r
   re   s       r   #test_lens_makers_formula_thick_lensr      s    XFB	2	+B	2	.B!"b"cQ7CCCr2q"4SCFSQSVOUWCW=WZ\_aZa<b8c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&Dr1   g      $@)r   r   r   r@   r
   r   re   s       r   #test_lens_makers_formula_plano_lensr      sp    XFB	2	+B	2	.B!"b"b161===r2r2.$r'272C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    