o
    *ήc=                     @   s   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 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 )    )
DerivativeFunction)S)Symbol)expcossintancoshsinh)sqrt)
PointPoint2DLinePolygonSegmentconvex_hullintersectioncentroidPoint3DLine3D)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sHJ t|| d|t|| gdksTJ t|| d|ks_J d td  d	 d   || t|| d  s~J d fddt|| D v sJ t| |  | |gt| d ksJ t|t| t  |d t t|  |d  ksJ t|| t  || g| t|  t ksJ t|| t  | |g|  t|t   ksJ t|| ||gt|ks1J | 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sJ d S )NxT)realytfg                  r   c                    s   g | ]}| d  qS )r(   )diffequals).0solexplicitr    E/tmp/pip-target-vg8gfxp4/lib/python/sympy/geometry/tests/test_util.py
<listcomp>   s    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ansfxyr1   r/   r2   
test_idiff   s<   $$ ",Z>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sLJ t tddtddtddtdddd	d
tddtddgksnJ d S )Nr   c                   S      t tdddS Nr   r(   )r   r   r1   r1   r1   r2   <lambda>)       z#test_intersection.<locals>.<lambda>r   r   r$   r   )r   )r'   r   )r   r'   T)pairwiser'   )slope)r   r   r   	TypeErrorr   r   r1   r1   r1   r2   test_intersection'   s6   

rE   c                  C   sj   t tdd  g d} t| i tddtddtdd	td
d	tddgtddtddgfks3J d S )Nc                   S   r;   r<   )r   r   r1   r1   r1   r2   r=   =   r>   z"test_convex_hull.<locals>.<lambda>)r'   rA   )r'   )r(   rA   )rG   )   F)polygonrH   rG   r'   rA   r(   rI   rJ   )r   rD   r   dictr   )pointsr1   r1   r2   test_convex_hull<   s   "rN   c                  C   s   t ddd} | dd}t| |tddd ksJ tdd} tdd	}t| |td
td d ks5J ttddtddtddd ksIJ ttddtddtddtddd ksaJ d S )Nr?   )r4   r   )r4   r4   r   r5   (   r(   r@   )r$   r$   r'   r$   )r   	translater   r   r   r   )pqr1   r1   r2   test_centroidD   s   

"(4rS   c                     s8  ddl m}  ddlm} ttfD ]	}|tkrt 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sJ qt }t|dkr|t
| dd| dd t|dkst|}|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sIJ t||||ksTJ g d}t| t
ddt
dd
fhksjJ 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sJ tt	d d  d S )!Nr   )randint)subsetsc                      s    t ddt ddS )Nr   r   r1   funcr1   r2   r=   Y   s    z5test_farthest_points_closest_points.<locals>.<lambda>r(   r'   r$   r4   r%   rA   r   T)positivec                 S   s   g | ]}t |qS r1   rV   )r-   ar1   r1   r2   r3   i   s    z7test_farthest_points_closest_points.<locals>.<listcomp>c                 s       | ]
\}}| |V  qd S Ndistancer-   ijr1   r1   r2   	<genexpr>l       z6test_farthest_points_closest_points.<locals>.<genexpr>   d   c                 s   r[   r\   r]   r_   r1   r1   r2   rb   w   rc   c                 S   s   h | ]
\}}t ||fqS r1   )r   r_   r1   r1   r2   	<setcomp>   s    z6test_farthest_points_closest_points.<locals>.<setcomp>)r'   r'   )r'   r$   )r(   r'   )rH   r$   )rI   r%   rH   rI   rF   rG   rJ   rg   r?   c                   S   s   t dS )Nrg   )r   r1   r1   r1   r2   r=      s    )sympy.core.randomrT   sympy.utilities.iterablesrU   minmaxr   r   r   
ValueErrorr   r   setlistr^   r   lenaddr   Halfr   )rT   rU   howp1p2p3p4p5dupr   srM   dr8   rZ   bcr1   rW   r2   #test_farthest_points_closest_pointsO   s`   $("
r}   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s<J t| |dksEJ d S )	Nr*   r   r'   rA   rG   r(   	   F)r   r   r   r   r   )rZ   r{   r|   rz   r1   r1   r2   test_are_coplanar   s   r   N)+sympy.core.functionr   r   sympy.core.singletonr   sympy.core.symbolr   sympy.functionsr   r   r   r	   r
   r   (sympy.functions.elementary.miscellaneousr   sympy.geometryr   r   r   r   r   r   r   r   r   r   sympy.geometry.utilr   r   r   r   r   sympy.solvers.solversr   sympy.testing.pytestr   r:   rE   rN   rS   r}   r   r1   r1   r1   r2   <module>   s     0A