
    gi!                        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-dS )    )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      a/var/www/html/ai-engine/env/lib/python3.11/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           d S )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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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#3	4	4ByyyAyyyAwq!Q''Aq)9)9::JgaAiii888AB1a((F./D./D-/D42 -3 -3 3 3 3 3 IIIq!Q//6./D./D-/D;2 43 43 3 3 3 3 Iq!Q//6./D./D-/D;2 43 43 3 3 3 3 Aq!YYY//6./D./D-/D;2 43 43 3 3 3 3 Aq!Y//6./D./D-/D;2 43 43 3 3 3 3 Aq!Z00F./D./D-/D<2 53 53 3 3 3 3 Aq!1---./D./D-/D92 23 23 3 3 3 3 B1A...gaA1b 1 1223 3 3 3BD222gaAc(:(:HS#<N<NP`aefgahahPhiyPy z z{{| | | |B2Q///gaA1b 1 1223 3 3 3BBa000gaA2r"utAwwhtBr1uHaPRTUPUgDVYZDZ?[?[6[ \ \]]^ ^ ^ ^Baq111Q6666B1j11gaA


;;;< < < <sAq))7A66666sAq))7A66666
:JJJJJJJJKKK
9:::::;;;
9CCCCCCCDDD
9>>>>>>?????r    c            
      v   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 ]@\  }}t          |                                |          D ]\  }}t          ||d          sJ Ad S )Nc              3   >   K   | ]\  }}t          ||d           V  dS r4   Nr@   .0r>   js      r   	<genexpr>z,test_fresnel_coefficients.<locals>.<genexpr>P   @       0 0tq!r!Q{{ 0 0 0 0 0 0r    r3   r&   r,   )g@ȓ?g ſgn?g?c              3   >   K   | ]\  }}t          ||d           V  dS rH   rI   rJ   s      r   rM   z,test_fresnel_coefficients.<locals>.<genexpr>S   rN   r    )gHIOǳgHȰ7?g}iƢ?gIVF?r#   r$   r1   r   c              3   >   K   | ]\  }}t          ||d           V  dS rH   rI   rJ   s      r   rM   z,test_fresnel_coefficients.<locals>.<genexpr>X   rN   r    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_coefficientsrW   O   s    0 0sS!T**---(/ (/ 0 0 0 0 0 0 0 0  0 0sS$**---(/ (/ 0 0 0 0 0 0 0 0 
B				B 0 0sS"b))---(/ (/ 0 0 0 0 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
|	                              d          dz   dk     sJ t          |dd
|                              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 d S )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   s   XFB	wr2q!!71a#3#3	4	4ByyyA|||Awq!Q''Aq)9)9::JgaAiii888ARAa(((A----RAQ'''1,,,,RCq)))//22U:TAAAAQ3z22288;;eCdJJJJRq***222RAiii000A5555\\\1a			:::a????iQ""Ha00000iQ""GQ///////r    c                  l   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 d S )	Nr#   r&   rP   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                      t          dd          } t          dd          }t          t          ||           dd          sJ d S )Nr#   r&   rP   r$   r,   g333333?r1   )r   r@   r	   r<   s     r   test_critical_anglera   ~   sN    				B				BnR$$dA.......r    c                  T   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 d S )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_formulare      s    XFB	2	+	+	+B	2	.	.	.Br2r3//3r6273CCCCC!"b"c22FA>>>>>!$2s3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           d S )Nu, v, ffocal_lengthuri   vrj   rl   c                  (    t                     S N)ri   rj   rl   )r   frj   rl   s   r   r   z%test_mirror_formula.<locals>.<lambda>   s    ~1QGGG r    )r   r   r   r   rA   rp   s   @@@r   test_mirror_formularr      s   i  GAq!qA...!A#rAv,>>>>qA...!A#rAv,>>>>A###qsAE{2222B!$$$))))B"%%%++++rQ///A25555A$$$))))rR000B6666qB///14444rQ///A25555rR000B6666qB///14444rQ///A25555
:GGGGGGHHHH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           d S )Nrg   rh   rk   rm   c                  (    t                     S ro   )r   rp   s   r   r   z#test_lens_formula.<locals>.<lambda>   s    |a1EEE r    )r   r   r   r   rA   rp   s   @@@r   test_lens_formularu      s   i  GAq!Q!,,,!QU;;;;Q!,,,!QU;;;;!q!!!QqS!a%[0000""""a''''"###r))))R1---2222!r"""qb((((R2...2#5555R1---2222Q"---!3333R2..."4444R1---2222Q"---2222
:EEEEEEFFFFFr    c                      t          d          \  } }}t          | ||          | dz  ||z  z  k    sJ t          t          ddd          dd          sJ d S )Nzf, N, crq   Ncr1   r3      gF%uk?gq=
ף"@)r   r   r@   rw   s      r   test_hyperfocal_distancer{      so    i  GAq!a1---Aqs;;;;!C1777qAAAAAAAr    c                      t          d          \  } }t          | |          |  |z  k    sJ t          dd          dk    sJ d S )Nzsi, so      r0   )r   r   )sisos     r   test_transverse_magnificationr      sU    XFB#B++s2v5555#B++r111111r    c            	      4   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 d S )Nr"   r#   r&   r]   r$   r,   r   rc   )dgR3r1   r%   g?g       @)r   r   r   r@   r
   rd   s       r   #test_lens_makers_formula_thick_lensr      s    XFB	2	+	+	+B	2	.	.	.B!"b"cQ777CCCCCr2q"444SCFSQSVOUWCW=WZ\_aZa<b8cccc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 d S )Nr"   r#   r&   r]   r$   r,   r   gfffff&Dr1   g      $@)r   r   r   r@   r
   r   rd   s       r   #test_lens_makers_formula_plano_lensr      s    XFB	2	+	+	+B	2	.	.	.B!"b"b1161=====r2r2..$r'272CCCC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   rW   r[   r_   ra   re   rr   ru   r{   r   r   r    r    r   <module>r      s+   - - - - - - - -" " " " " " " " " " " " " " " " " " " " " " " " / . . . . . " " " " " " ! ! ! ! ! ! % % % % % % 9 9 9 9 9 9 ' ' ' ' ' ' ( ( ( ( ( ( % % % % % % & & & & & & ' ' ' ' ' ' ('5@ 5@ 5@p  &0 0 0$0 0 0/ / /@ @ @I I I$G G G$B B B2 2 2d d dD D D D Dr    