o
    GZhi!                     @   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   T/var/www/auris/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#   Znormal_vectorZplaneHzG?d      lw ^7    l     I5    )r#   r#   r"   )Z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 r/   r0   r   r    r!   r   r   r   J   s    c                      s   t d  S r/   r0   r   )ir    r!   r3   r   r   r   K   r4   c                      s   t  S r/   r0   r   )r    r!   r3   r   r   r   L       )r   r   r   r   r   r   r   r   r   aer   
ValueError	TypeError)n1n2r   r   )r1   r6   r    r!   r2   r3   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 r.   Nr8   .0r6   jr   r   r   	<genexpr>P       z,test_fresnel_coefficients.<locals>.<genexpr>r-   r#   r'   )g@ȓ?g ſgn?g?c                 s   r>   r?   r@   rA   r   r   r   rD   S   rE   )gHIOǳgHȰ7?g}iƢ?gIVF?r    r!   r,   r   c                 s   r>   r?   r@   rA   r   r   r   rD   X   rE   g333333?)gW}W?gHPֿg.Ue?g?gm)οg~:3Pg: ?gҩ+yg333333?r.   )allzipr   r   Zas_real_imagr8   )r    r!   Zansgotr6   rC   r   r   r   r   r   test_fresnel_coefficientsO   s*   





rJ   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'   r-   r,   gпr.   g=!7?)r   r   r   r   r   r   Zevalfr8   )r;   r<   r3   r   r6   r2   r1   r   r   r   test_deviationb   s   "" rL   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#   rF   r!   r'   g(\?r,   Zpermittivityr   )r   r8   r   r   r5   r   r   r   test_brewster_anglet   s   rN   c                  C   s2   t ddd} t ddd}tt|| ddsJ d S )Nr    r#   rF   r!   r'   g333333?r,   )r   r8   r   r5   r   r   r   test_critical_angle~   s   rO   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#   rM   r!   r'   r   g      @gfffff&4r,   gL.@)r   r   r   r	   r8   r;   r<   r    r!   r   r   r   test_lens_makers_formula   s   "rR   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rU   vrV   rX   c                         t  dS N)rU   rV   rX   )r
   r   frV   rX   r   r   r      r7   z%test_mirror_formula.<locals>.<lambda>)r   r
   r   r   r9   r   r   r\   r   test_mirror_formula   s   "" r^   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 )NrS   rT   rW   rY   c                      rZ   r[   )r   r   r\   r   r   r      r7   z#test_lens_formula.<locals>.<lambda>)r   r   r   r   r9   r   r   r\   r   test_lens_formula   s      r_   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r]   Ncr,   r-      gF%uk?gq=
ף"@)r   r   r8   r`   r   r   r   test_hyperfocal_distance   s   "rd   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   ri   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#   rM   r!   r'   r   rP   )dgR3r,   r"   g?g       @)r   r   r   r8   r	   rQ   r   r   r   #test_lens_makers_formula_thick_lens   s
   >rk   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#   rM   r!   r'   r   gfffff&Dr,   g      $@)r   r   r   r8   r	   r   rQ   r   r   r   #test_lens_makers_formula_plano_lens   s
   &rl   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   r8   r=   rJ   rL   rN   rO   rR   r^   r_   rd   ri   rk   rl   r   r   r   r   <module>   s2    08
	