U
    9%ei!                     @   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   d/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/physics/optics/tests/test_utils.py<lambda>       r   c                     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gd tdd|tdgdgdggksttdddgdd|tdgdgdggksttddd|tdgdgdggkst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sTttddtdgdgdggks|ttdd d
tdgdgdggksttdd d
ttdddtdddkst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sNtt| | d
ttdddt| | | | t	d t	d| d  d|d   d  ksttdd d
dksttddttddddddgdkstt
tdddddstt
tddddds(t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   Znormal_vector)r$   r$   r$   )r   r   r$   ZplaneHzG?d      lw ^7    l     I5    )Zdirection_ratio      ?g@ޫV&?   gꐛ?c                      s   t  S Nr   r   )Pr!   r"   
normal_rayr1r   r   r   I   r   z'test_refraction_angle.<locals>.<lambda>c                      s   t   S r/   r0   r   r!   r"   r   r   r   J   r   c                      s   t d  S r/   r0   r   )ir!   r"   r3   r   r   r   K   r   c                      s   t  S r/   r0   r   )r!   r"   r3   r   r   r   L   r   )r   r   r   r   r   r   r   AssertionErrorr   r   aer   
ValueError	TypeError)n1n2r   r   )r1   r5   r!   r"   r2   r3   r   test_refraction_angle   s    
0

F

r<   c                  C   s   t dd ttddddddd	gD s,tt d
d ttdddddddgD sXttd} tddd}t dd ttd| |ddddgD stddgddgg}td|| }t||D ]0\}}t| |D ]\}}t||dstqqd S )Nc                 s   s   | ]\}}t ||d V  qdS r.   Nr7   .0r5   jr   r   r   	<genexpr>P   s     z,test_fresnel_coefficients.<locals>.<genexpr>r-   r$   r'   g@ȓ?g ſgn?g?c                 s   s   | ]\}}t ||d V  qdS r=   r>   r?   r   r   r   rB   S   s     gHIOǳgHȰ7?g}iƢ?gIVF?r!   r"   r,   r   c                 s   s   | ]\}}t ||d V  qdS r=   r>   r?   r   r   r   rB   X   s     g333333?gW}W?gHPֿg.Ue?g?gm)οg~:3Pg: ?gҩ+yg333333?r.   )allzipr   r6   r   Zas_real_imagr7   )r!   r"   Zansgotr5   rA   r   r   r   r   r   test_fresnel_coefficientsO   s&    








rG   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gd}t|dd|ddkstt|dd|ddkstt|dd|dd	d
 dk stt|dd|dd	d
 dk stt|dd|dd kstt|dddddgddks$ttdddgdddddgddksJtttdddddsdtttddddds~td S )Nr    r#   r$   r   r%   )normalr&   g?r*   gX9v?gMbP?r'   r-   r,   gпr.   g=!7?)	r   r   r   r   r   r   r6   Zevalfr7   )r:   r;   r3   r   r5   r2   r1   r   r   r   test_deviationb   s    "" &rI   c                  C   sz   t ddd} t ddd}tt| |dds.tt dtdd} t dtdd}tt| |dds`tttddddsvtd S )	Nr!   r$   rC   r"   r'   g(\?r,   Zpermittivityr   )r   r7   r   r6   r   r4   r   r   r   test_brewster_anglet   s    rK   c                  C   s2   t ddd} t ddd}tt|| dds.td S )Nr!   r$   rC   r"   r'   g333333?r,   )r   r7   r   r6   r4   r   r   r   test_critical_angle~   s    rL   c                  C   s   t d\} }tdtdd}tdtdd}t| |ddd	| | |  ksJttt||ddd
dsdtttdddddds~td S )Nr    r!   r$   rJ   r"   r'   r   g      @gfffff&4r,   gL.@)r   r   r   r	   r6   r7   r:   r;   r!   r"   r   r   r   test_lens_makers_formula   s    "rO   c                      sb  t d\ t d      ks0tt d      ksRttd   ksrtttdksttttdtkstttd kstttdksttttdtkstt td kstttd ksttttdtkstt td ks0tttd ksHttt fdd d S )Nu, v, ffocal_lengthurR   vrS   rU   c                      s   t  dS N)rR   rS   rU   )r
   r   frS   rU   r   r   r      r   z%test_mirror_formula.<locals>.<lambda>)r   r
   r6   r   r   r8   r   r   rX   r   test_mirror_formula   s    "" rZ   c                      s^  t d\ t d     ks.tt d     ksNttd   ksntttdksttttdtkstttdkstttd ksttttdt kstttdkstt td  ksttttdtkstttdks.tt td ksDttt fdd d S )NrP   rQ   rT   rV   c                      s   t  dS rW   )r   r   rX   r   r   r      r   z#test_lens_formula.<locals>.<lambda>)r   r   r6   r   r   r8   r   r   rX   r   test_lens_formula   s       r[   c                  C   sN   t d\} }}t| ||d| d ||  ks0tttddddddsJtd S )Nzf, N, crY   Ncr,   r-      gF%uk?gq=
ף"@)r   r   r6   r7   r\   r   r   r   test_hyperfocal_distance   s    "r`   c                  C   s:   t d\} }t| ||  | ks$ttdddks6td S )Nzsi, so      r+   )r   r   r6   )sisor   r   r   test_transverse_magnification   s    re   c                  C   s   t d\} }tdtdd}tdtdd}tt||dddd	d
dsFtt| |dddd	|dd|  d|  |   | |   kstd S )Nr    r!   r$   rJ   r"   r'   r   rM   )dgR3r,   r#   g?g       @)r   r   r   r7   r	   r6   rN   r   r   r   #test_lens_makers_formula_thick_lens   s
    rg   c                  C   sh   t d\} }tdtdd}tdtdd}tt||dtdd	sBtt| |dtd
| | |  ksdtd S )Nr    r!   r$   rJ   r"   r'   r   gfffff&Dr,   g      $@)r   r   r   r7   r	   r   r6   rN   r   r   r   #test_lens_makers_formula_plano_lens   s
    rh   N).Zsympy.core.numbersr   r   Zsympy.physics.optics.utilsr   r   r   r   r   r	   r
   r   r   r   Zsympy.physics.optics.mediumr   Zsympy.physics.unitsr   r   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.matrices.denser   Zsympy.geometry.pointr   Zsympy.geometry.liner   Zsympy.geometry.planer   Zsympy.testing.pytestr   r7   r<   rG   rI   rK   rL   rO   rZ   r[   r`   re   rg   rh   r   r   r   r   <module>   s0   08
	