a
    {d<                     @   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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    g/var/www/html/stable-diffusion-webui/venv/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fxyr0   r.   r1   
test_idiff   s<    $$ $.\@H8:,

r9   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 S )Nr   c                   S   s   t tdddS Nr   r(   )r   r   r0   r0   r0   r1   <lambda>)   r3   z#test_intersection.<locals>.<lambda>r   r   r$   r   )r   )r'   r   )r   r'   T)pairwiser'   )Zslope)r   r   r   	TypeErrorr   r   r0   r0   r0   r1   test_intersection'   s6    

rA   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   r0   r0   r0   r1   r;   =   r3   z"test_convex_hull.<locals>.<lambda>)r'   r>   )r'   )r(   r>   )rC   )   ZpolygonFrD   rC   r'   r>   r(   rE   rF   )r   r@   r   r   )pointsr0   r0   r1   test_convex_hull<   s    "rH   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<   )r4   r   )r4   r4   r   r5   (   r(   r=   )r$   r$   r'   r$   )r   	translater   r   r   r   )pqr0   r0   r1   test_centroidD   s    

"(rM   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   r0   funcr0   r1   r;   Y   r3   z5test_farthest_points_closest_points.<locals>.<lambda>r(   r'   r$   r4   r%   r>   r   T)Zpositivec                 S   s   g | ]}t |qS r0   rP   )r-   ar0   r0   r1   r2   i   r3   z7test_farthest_points_closest_points.<locals>.<listcomp>c                 s   s   | ]\}}| |V  qd S Ndistancer-   ijr0   r0   r1   	<genexpr>l   r3   z6test_farthest_points_closest_points.<locals>.<genexpr>   d   c                 s   s   | ]\}}| |V  qd S rT   rU   rW   r0   r0   r1   rZ   w   r3   c                 S   s   h | ]\}}t ||fqS r0   )r   rW   r0   r0   r1   	<setcomp>   s   z6test_farthest_points_closest_points.<locals>.<setcomp>)r'   r'   )r'   r$   )r(   r'   )rD   r$   )rE   r%   rD   rE   rB   rC   rF   r^   r<   c                   S   s   t dS )Nr^   )r   r0   r0   r0   r1   r;      r3   )Zsympy.core.randomrN   Zsympy.utilities.iterablesrO   minmaxr   r   r   
ValueErrorr   r   setlistrV   r   lenaddr   ZHalfr   )rN   rO   howp1p2Zp3Zp4Zp5dupr   srG   dr8   rS   bcr0   rQ   r1   #test_farthest_points_closest_pointsO   s^    $( "
rn   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'   r>   rC   r(   	   F)r   r   r   r   r   )rS   rl   rm   rk   r0   r0   r1   test_are_coplanar   s    rp   N)+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   Zsympy.geometry.utilr   r   r   r   r   Zsympy.solvers.solversr   Zsympy.testing.pytestr   r9   rA   rH   rM   rn   rp   r0   r0   r0   r1   <module>   s    0A