o
    jgi!                     @   s$  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d Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd  Z*d!d" Z+d#d$ Z,d%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                 C   s   t | |d|  S )N
   )r   )abn r   ]/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/physics/optics/tests/test_utils.py<lambda>   s    r   c                     sr  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d	 tdd|tdgdgdggksSJ tg ddd|tdgdgdggkshJ 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sJ tdddtdgdgdggksJ tddtdgdgdggksJ tdd d
tdgdgdggksJ tdd d
ttdddtdddksJ td d
ttdddttddtdddtd d 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 td| d  d|d   d  ksLJ tdd d
dksYJ tddttdddg ddksoJ t	tddddds|J t	tdddddsJ t
t fdd t
tfdd t
tfdd t
tfd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                      s   t  S Nr   r   )Pr    r!   
normal_rayr1r   r   r   I       z'test_refraction_angle.<locals>.<lambda>c                      s   t   S r2   r3   r   r    r!   r   r   r   J   s    c                      s   t d  S r2   r3   r   )ir    r!   r6   r   r   r   K   r7   c                      s   t  S r2   r3   r   )r    r!   r6   r   r   r   L       )r   r   r   r   r   r   r   r   r   aer   
ValueError	TypeError)n1n2r   r   )r4   r9   r    r!   r5   r6   r   test_refraction_angle   s   0

F

r@   c                  C   s   t dd ttdddg dD sJ t dd ttdddg dD s(J td	} td
dd}t dd ttd| |g dD sFJ ddgddgg}td|| }t||D ]\}}t| |D ]\}}t||dspJ qdqYd S )Nc                 s        | ]\}}t ||d V  qdS r1   Nr;   .0r9   jr   r   r   	<genexpr>P       z,test_fresnel_coefficients.<locals>.<genexpr>r0   r#   r)   )g@ȓ?g ſgn?g?c                 s   rA   rB   rC   rD   r   r   r   rG   S   rH   )gHIOǳgHȰ7?g}iƢ?gIVF?r    r!   r.   r   c                 s   rA   rB   rC   rD   r   r   r   rG   X   rH   g333333?)gW}W?gHPֿg.Ue?g?gm)οg~:3Pg: ?gҩ+yg333333?r1   )allzipr   r   as_real_imagr;   )r    r!   ansgotr9   rF   r   r   r   r   r   test_fresnel_coefficientsO   s*   





rO   c                  C   sl  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d}t|dd|ddksDJ t|dd|d	dksPJ t|dd
|d	dd dk saJ t|dd
|ddd dk srJ t|dd|d	d u s~J t|ddg dddksJ tg dddg dddksJ ttdddddsJ ttdddddsJ d S )Nr   r"   r#   r   r$   )r"   r"   r"   r%   )normalr'   g?r,   gX9v?gMbP?r)   r0   r.   gпr1   g=!7?)r   r   r   r   r   r   evalfr;   )r>   r?   r6   r   r9   r5   r4   r   r   r   test_deviationb   s   "" rR   c                  C   sz   t ddd} t ddd}tt| |ddsJ t dtdd} t dtdd}tt| |dds0J ttdddds;J d S )	Nr    r#   rI   r!   r)   g(\?r.   permittivityr   )r   r;   r   r   r8   r   r   r   test_brewster_anglet   s   rU   c                  C   s2   t ddd} t ddd}tt|| ddsJ d S )Nr    r#   rI   r!   r)   g333333?r.   )r   r;   r   r8   r   r   r   test_critical_angle~   s   rV   c                  C   s   t d\} }tdtdd}tdtdd}t| |ddd	| | |  ks%J tt||ddd
ds2J ttdddddds?J d S )Nr   r    r#   rS   r!   r)   r   g      @gfffff&4r.   gL.@)r   r   r   r	   r;   r>   r?   r    r!   r   r   r   test_lens_makers_formula   s   "rY   c                      sZ  t d\ t d      ksJ t d      ks)J td   ks9J ttdksCJ tttdtu sMJ ttd ksXJ ttdksbJ tttdtu slJ t td ksvJ ttd ksJ tttdtu sJ t td ksJ ttd ksJ tt fdd d S )Nu, v, ffocal_lengthur\   vr]   r_   c                         t  dS N)r\   r]   r_   )r
   r   fr]   r_   r   r   r      r:   z%test_mirror_formula.<locals>.<lambda>)r   r
   r   r   r<   r   r   rc   r   test_mirror_formula   s   "" re   c                      sV  t d\ t d     ksJ t d     ks'J td   ks7J ttdksAJ tttdtu sKJ ttdksUJ ttd ks`J tttdt u skJ ttdksuJ t td  ksJ tttdtu sJ ttdksJ t td ksJ tt fdd d S )NrZ   r[   r^   r`   c                      ra   rb   )r   r   rc   r   r   r      r:   z#test_lens_formula.<locals>.<lambda>)r   r   r   r   r<   r   r   rc   r   test_lens_formula   s      rf   c                  C   sN   t d\} }}t| ||d| d ||  ksJ ttdddddds%J d S )Nzf, N, crd   Ncr.   r0      gF%uk?gq=
ף"@)r   r   r;   rg   r   r   r   test_hyperfocal_distance   s   "rk   c                  C   s:   t d\} }t| ||  | ksJ tdddksJ d S )Nzsi, so      r-   )r   r   )sisor   r   r   test_transverse_magnification   s   rp   c                  C   s   t d\} }tdtdd}tdtdd}tt||dddd	d
ds#J t| |dddd	|dd|  d|  |   | |   ks@J d S )Nr   r    r#   rS   r!   r)   r   rW   )dgR3r.   r"   g?g       @)r   r   r   r;   r	   rX   r   r   r   #test_lens_makers_formula_thick_lens   s
   >rr   c                  C   sh   t d\} }tdtdd}tdtdd}tt||dtdd	s!J t| |dtd
| | |  ks2J d S )Nr   r    r#   rS   r!   r)   r   gfffff&Dr.   g      $@)r   r   r   r;   r	   r   rX   r   r   r   #test_lens_makers_formula_plano_lens   s
   &rs   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;   r@   rO   rR   rU   rV   rY   re   rf   rk   rp   rr   rs   r   r   r   r   <module>   s2    08
	