a
    kh                     @   s  d dl Z d dlmZ d dl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mZmZ d dl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mZmZ d d	l m!Z!m"Z"m#Z#m$Z$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S )    N)Float)
DerivativeFunction)S)Symbol)expcossintancoshsinh)sqrt)PointPoint2DLinePolygonSegmentconvex_hullintersectioncentroidPoint3DLine3DRayEllipse)idiffclosest_pointsfarthest_points_ordered_pointsare_coplanar)solve)raisesc                     s*  t dddt ddd} t ddd}td}td}d | d  d	 }d
 d | d  d  | d  }|t|| dksJ t|| d|t|| gdksJ t|| d|ksJ d td  d	 d   || t|| d  sJ d fddt|| D v s J t| |  | |gt| d ksNJ t|t| t  |d t t|  |d  ksJ t|| t  || g| t|  t ksJ t|| t  | |g|  t|t   ks2J t|| ||gt|ksjJ | dt	 d  d  t
d  dtd    }t|| dt	 t dt
d   dt
  td d  dt   dt	 d   dd   ks&J d S )NxT)realytfg                  r   c                    s   g | ]}| d  qS )r+   )diffequals).0Zsolexplicitr!    L/var/www/auris/lib/python3.9/site-packages/sympy/geometry/tests/test_util.py
<listcomp>       ztest_idiff.<locals>.<listcomp>i
   i   )r   r   r   r   subsr   r/   r   r   r	   r
   r   r   r   )r#   r$   r%   r&   circansZfxyr3   r1   r4   
test_idiff   s<    $$ $.\@H8:,

r<   c                  C   s  t tddg ksJ ttdd  t tddtddtddd	d
tddtddgks^J t tddtddtddd	d
tddtddgksJ t tddtddtddtdddd	d
tddtddgksJ d} t ttddtddttdd| ddd	d
d j	}|t
tddddj	ks6J tdd} t ttddtddttdd| ddd	d
d j	}|t
tddddj	ksJ |d jdksJ |d jdksJ d S )Nr   c                   S   s   t tdddS Nr   r+   )r   r   r3   r3   r3   r4   <lambda>+   r6   z#test_intersection.<locals>.<lambda>r   r   r'   r   )r   )r*   r   )r   r*   T)pairwiser*   )Zslopeg      @gMbP?rA   g-C6J?g333333g       @)centerZhradiusZvradiusgj6gG?gpF)evaluater(   r-   5   r8   )r   r   r    	TypeErrorr   r   r   r   r   ZcoordinatespytestZapproxr   Z_prec)Rcc2r3   r3   r4   test_intersection)   sj    




rK   c                  C   sh   t tdd  g d} t| i dditddtdd	td
d	tddgtddtddgfksdJ d S )Nc                   S   s   t tdddS r=   )r   r   r3   r3   r3   r4   r>   P   r6   z"test_convex_hull.<locals>.<lambda>)r*   rA   )r*   )r+   rA   )rM   )   ZpolygonFrN   rM   r*   rA   r+   rO   rP   )r    rF   r   r   )pointsr3   r3   r4   test_convex_hullO   s    "rR   c                  C   s   t ddd} | dd}t| |tddd ks4J tdd} tdd	}t| |td
td d ksjJ ttddtddtddd ksJ ttddtddtddtddd ksJ d S )Nr?   )r7   r   )r7   r7   r   r8   (   r+   r@   )r'   r'   r*   r'   )r   	translater   r   r   r   )pqr3   r3   r4   test_centroidW   s    

"(rW   c                     s6  ddl m}  ddlm} ttfD ]}|tkr4t nt tt	 fdd t
ddt
ddt
ddg}t
ddt
ddt
ddg}t
ddt
ddt
dd	g}t
ddt
ddt
d
dg}t
ddt
ddt
ddg}t
ddt
ddt
ddt
ddg}tddd}	dd |	df|	d df|	d dffD }
|||||||
fD ]`}|dd |t|dD }t | d  }\}}|||ksJ |t|ks@J q@t }t|dkr|t
| dd| dd qt|}|dd ||dD }t | d  }\}}|||ks"J |t|ks J q t
ddt
ddt
tjtdd   }}}dd ||||fdD }t||||ksJ t||||ksJ g d}t| t
ddt
dd
fhksJ g d}t| t
ddt
ddfhksJ tddt
ddt
ddfhks$J tt	d d  d S )!Nr   )randint)subsetsc                      s    t ddt ddS )Nr   r   r3   funcr3   r4   r>   l   r6   z5test_farthest_points_closest_points.<locals>.<lambda>r+   r*   r'   r7   r(   rA   r!   T)Zpositivec                 S   s   g | ]}t |qS r3   rZ   )r0   ar3   r3   r4   r5   |   r6   z7test_farthest_points_closest_points.<locals>.<listcomp>c                 s   s   | ]\}}| |V  qd S Ndistancer0   ijr3   r3   r4   	<genexpr>   r6   z6test_farthest_points_closest_points.<locals>.<genexpr>   d   c                 s   s   | ]\}}| |V  qd S r^   r_   ra   r3   r3   r4   rd      r6   c                 S   s   h | ]\}}t ||fqS r3   )r   ra   r3   r3   r4   	<setcomp>   s   z6test_farthest_points_closest_points.<locals>.<setcomp>)r*   r*   )r*   r'   )r+   r*   )rN   r'   )rO   r(   rN   rO   rL   rM   rP   rh   r?   c                   S   s   t dS )Nrh   )r   r3   r3   r3   r4   r>      r6   )Zsympy.core.randomrX   Zsympy.utilities.iterablesrY   minmaxr   r   r    
ValueErrorr   r   setlistr`   r   lenaddr   ZHalfr   )rX   rY   howp1p2Zp3Zp4Zp5dupr!   srQ   dr;   r]   brI   r3   r[   r4   #test_farthest_points_closest_pointsb   s^    $( "
rw   c                  C   s   t tdddtddd} t tdddtddd}t tdddtddd}ttddtdd}t| ||dksxJ t| |dksJ d S )	Nr-   r   r*   rA   rM   r+   	   F)r   r   r   r   r   )r]   rv   rI   ru   r3   r3   r4   test_are_coplanar   s    ry   )0rG   Zsympy.core.numbersr   Zsympy.core.functionr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Zsympy.functionsr   r   r	   r
   r   r   Z(sympy.functions.elementary.miscellaneousr   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   r   r   Zsympy.geometry.utilr   r   r   r   r   Zsympy.solvers.solversr   Zsympy.testing.pytestr    r<   rK   rR   rW   rw   ry   r3   r3   r3   r4   <module>   s     8&A