ó
¡¼™\c           @   s6  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 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
 „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d S(   iÿÿÿÿ(
   t   refraction_anglet   fresnel_coefficientst	   deviationt   brewster_anglet   critical_anglet   lens_makers_formulat   mirror_formulat   lens_formulat   hyperfocal_distancet   transverse_magnification(   t   Medium(   t   e0(   t   symbolst   sqrtt   Matrixt   oo(   t   Point3D(   t   Ray3D(   t   Plane(   t   S(   t   raisesc             s´  t  d ƒ \ }  } t d ƒ ‰ t d ƒ ‰ t t d d d ƒ t d d d ƒ ƒ ‰ t d d d g ƒ ‰ t d d d g ƒ } t t d d d ƒ t d d d ƒ ƒ ‰ t t d d d ƒ d d d d g ƒ‰  t ˆ d d | ƒ t d g d g d g g ƒ k st ‚ t d d d g d d | ƒ t d g d g d g g ƒ k sDt ‚ t d d d | ƒ t d g d g d g g ƒ k s}t ‚ t ˆ d d d d d g ƒ t d g d g d g g ƒ k s¿t ‚ t ˆ d d d ƒ t d g d g d g g ƒ k søt ‚ t ˆ d d ˆ ƒ t d g d g d g g ƒ k s1t ‚ t ˆ d d d ˆ  ƒt d g d g d g g ƒ k smt ‚ t ˆ d d d ˆ  ƒt t d d d ƒ t d d d ƒ ƒ k s²t ‚ t ˆ ˆ d	 d ˆ  ƒt t d d d ƒ t t d
 ƒ d t d
 ƒ d d t	 d ƒ d ƒ ƒ k st ‚ t ˆ d ˆ d ˆ  ƒt t d d d ƒ t d d d ƒ ƒ k s^t ‚ t ˆ |  | d ˆ  ƒt t d d d ƒ t |  | |  | t	 d ƒ t	 d |  d d | d d ƒ ƒ ƒ k sÔt ‚ t ˆ d	 d d ˆ  ƒd k søt ‚ t ˆ d d ˆ ƒ t t d d d ƒ d d d d g ƒk s:t ‚ t
 t ‡  ‡ ‡ ‡ ‡ f d †  ƒ t
 t ‡ ‡ f d †  ƒ t
 t ‡ ‡ ‡ ‡ f d †  ƒ t
 t ‡ ‡ ‡ f d †  ƒ d  S(   Ns   n1, n2t   m1t   m2iÿÿÿÿi   i    t   normal_vectort   planegHáz®Gõ?id   i…   I‰²2ýÿi   I €Æ¤~ iþÿÿÿi   t   direction_ratioc              s   t  ˆ ˆ ˆ ˆ ˆ  ƒ S(   N(   R    (    (   t   PR   R   t
   normal_rayt   r1(    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   <lambda>B   t    c              s   t  ˆ  ˆ  ˆ ƒ S(   N(   R    (    (   R   R   (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyR   C   R   c              s   t  ˆ ˆ ˆ d  ˆ  ƒ S(   N(   R    t   None(    (   t   iR   R   R   (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyR   D   R   c              s   t  ˆ ˆ  ˆ ˆ ƒ S(   N(   R    (    (   R   R   R   (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyR   E   R   (   i   i   i   (   i    i    i   (   R   R
   R   R   R   R   R    t   AssertionErrorR   R   R   t
   ValueErrort	   TypeError(   t   n1t   n2t   n(    (   R   R    R   R   R   R   sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_refraction_angle   sf    '''0R0a$0"c          C   s  t  d „  t d d d ƒ Dƒ ƒ d d d d g k s: t ‚ t  d	 „  t d d d ƒ Dƒ ƒ d
 d d d g k st t ‚ t d ƒ }  t d d d ƒ} t  d „  t d |  | ƒ Dƒ ƒ d d d d g k sÌ t ‚ t  d „  t d | |  ƒ Dƒ ƒ d d g d d g g k st ‚ d  S(   Nc         s   s   |  ] } t  | d  ƒ Vq d S(   i   N(   t   round(   t   .0R    (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pys	   <genexpr>I   s    g      à?i   gHáz®Gõ?g‡¢@ŸÈ“¼?g ˜£ÇïÅ¿g­nõœô¾ê?gù÷„ê?c         s   s   |  ] } t  | d  ƒ Vq d S(   i   N(   R(   (   R)   R    (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pys	   <genexpr>K   s    gHùIµOÇ³¿gHŠÈ°Š7Ê?g}iÆ¢ó?gIVñFó?R   R   R&   i   c         s   s   |  ] } t  | d  ƒ Vq d S(   i   N(   R(   (   R)   R    (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pys	   <genexpr>O   s    g333333Ó?gºW•}WÔ?gŽðHPÖ¿g.ÅUeßå?g¹ü‡ôÛ×ä?c         s   s+   |  ]! } t  d  „  | j ƒ  Dƒ ƒ Vq d S(   c         s   s   |  ] } t  | d  ƒ Vq d S(   i   N(   R(   (   R)   t   j(    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pys	   <genexpr>Q   s    N(   t   listt   as_real_imag(   R)   R    (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pys	   <genexpr>Q   s    g333333ã?gðmú³)Î¿g~:3Pï¿gÑ:ªš ê?gÒ©+Ÿåyâ¿(   R+   R   R!   R
   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_fresnel_coefficientsH   s    	c          C   sæ  t  d ƒ \ }  } t t d d d ƒ t d d d ƒ ƒ } t d d d g ƒ } t d d d g ƒ } t t d d d ƒ t d d d ƒ ƒ } t t d d d ƒ d d d d g ƒ} t | d d d | ƒd k sÕ t ‚ t | d d d | ƒd k sù t ‚ t | d d d | ƒj d	 ƒ d
 d k  s*t ‚ t | d d d | ƒj d	 ƒ d
 d k  s[t ‚ t | d d d | ƒd  k st ‚ t | d d d d d d g ƒd k s¬t ‚ t d d d g d d d d d d g ƒd k sât ‚ d  S(   Ns   n1, n2iÿÿÿÿi   i    R   t   normalR   gš™™™™™ñ?i   gX9´Èv¾?gü©ñÒMbP?gHáz®Gõ?(	   R   R   R   R   R   R   R!   t   evalfR   (   R$   R%   R   R&   R    R   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_deviationV   s    '''$$11$-c          C   sÄ   t  d d d ƒ}  t  d d d ƒ} t t |  | ƒ d ƒ d k sH t ‚ t  d d t d d ƒ}  t  d d t d d ƒ} t t |  | ƒ d ƒ d k sœ t ‚ t t d d ƒ d ƒ d k sÀ t ‚ d  S(	   NR   R&   i   R   gHáz®Gõ?i   gÃõ(\Âí?t   permittivity(   R
   R(   R   R!   R   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_brewster_anglef   s    $$c          C   sL   t  d d d ƒ}  t  d d d ƒ} t t | |  ƒ d ƒ d k sH t ‚ d  S(   NR   R&   i   R   gHáz®Gõ?i   g333333ë?(   R
   R(   R   R!   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_critical_anglep   s    c          C   sÇ   t  d ƒ \ }  } t d d t d d ƒ} t d d t d d ƒ} t |  | d d	 ƒ d
 | |  | k so t ‚ t t | | d d	 ƒ d ƒ d k s™ t ‚ t t d d d d	 ƒ d ƒ d k sÃ t ‚ d  S(   Ns   n1, n2R   R1   R&   i   R   gHáz®Gõ?i
   iöÿÿÿi   i   gfffff&4ÀgÍÌÌÌÌL.@(   R   R
   R   R   R!   R(   (   R$   R%   R   R   (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_lens_makers_formulav   s    -*c              s  t  d ƒ \ ‰ ‰ ‰  t d ˆ  d ˆ ƒ ˆ  ˆ ˆ  ˆ k sC t ‚ t d ˆ  d ˆ ƒ ˆ  ˆ ˆ  ˆ k sq t ‚ t d ˆ d ˆ ƒ ˆ ˆ ˆ ˆ k sž t ‚ t d t d ˆ ƒ ˆ k s¿ t ‚ t d t d t ƒ t k sà t ‚ t d t d ˆ ƒ ˆ k st ‚ t d ˆ d t ƒ ˆ k s#t ‚ t d t d t ƒ t k sDt ‚ t d ˆ  d t ƒ ˆ  k set ‚ t d t d ˆ ƒ ˆ k s‡t ‚ t d t d t ƒ t k s¨t ‚ t d ˆ  d t ƒ ˆ  k sÉt ‚ t d t d ˆ ƒ ˆ k sët ‚ t t ‡  ‡ ‡ f d †  ƒ d  S(   Ns   u, v, ft   focal_lengtht   ut   vc              s   t  d ˆ  d ˆ d ˆ ƒ S(   NR5   R6   R7   (   R   (    (   t   fR6   R7   (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyR   Ž   R   (   R   R   R!   R   R   R"   (    (    (   R8   R6   R7   sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_mirror_formula   s    ..-!!"!!!"!!"c              s	  t  d ƒ \ ‰ ‰ ‰  t d ˆ  d ˆ ƒ ˆ  ˆ ˆ  ˆ k sB t ‚ t d ˆ  d ˆ ƒ ˆ  ˆ ˆ  ˆ k so t ‚ t d ˆ d ˆ ƒ ˆ ˆ ˆ ˆ k sœ t ‚ t d t d ˆ ƒ ˆ k s½ t ‚ t d t d t ƒ t k sÞ t ‚ t d t d ˆ ƒ ˆ k sÿ t ‚ t d ˆ d t ƒ ˆ k s!t ‚ t d t d t ƒ t k sCt ‚ t d t d ˆ ƒ ˆ k sdt ‚ t d ˆ  d t ƒ ˆ  k s†t ‚ t d t d t ƒ t k s§t ‚ t d t d ˆ ƒ ˆ k sÈt ‚ t d ˆ  d t ƒ ˆ  k sét ‚ t t ‡  ‡ ‡ f d †  ƒ d  S(   Ns   u, v, fR5   R6   R7   c              s   t  d ˆ  d ˆ d ˆ ƒ S(   NR5   R6   R7   (   R   (    (   R8   R6   R7   (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyR       R   (   R   R   R!   R   R   R"   (    (    (   R8   R6   R7   sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_lens_formula‘   s    ---!!!""!"!!!c          C   s|   t  d ƒ \ }  } } t d |  d | d | ƒ |  d | | k sH t ‚ t t d d d d d d ƒ d ƒ d	 k sx t ‚ d  S(
   Ns   f, N, cR8   t   Nt   ci   g      à?i   gF%ušk?gq=
×£ð"@(   R   R   R!   R(   (   R8   R;   R<   (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_hyperfocal_distance¢   s    3c          C   sQ   t  d ƒ \ }  } t |  | ƒ |  | k s2 t ‚ t d d ƒ d k sM t ‚ d  S(   Ns   si, soi   i   iþÿÿÿ(   R   R	   R!   (   t   sit   so(    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   test_transverse_magnification§   s     N((   t   sympy.physics.optics.utilsR    R   R   R   R   R   R   R   R   R	   t   sympy.physics.optics.mediumR
   t   sympy.physics.unitsR   t   sympyR   R   R   R   t   sympy.geometry.pointR   t   sympy.geometry.lineR   t   sympy.geometry.planeR   t
   sympy.coreR   t   sympy.utilities.pytestR   R'   R-   R0   R2   R3   R4   R9   R:   R=   R@   (    (    (    sD   lib/python2.7/site-packages/sympy/physics/optics/tests/test_utils.pyt   <module>   s$   F"	6			
						