U
    ZÊ¹j„  ã                   @   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s�tt|| ˆdƒƒ‚|t|| gˆdƒks¨t‚t|| ˆdƒ|ks¾t‚dˆ tˆd  d	 ƒd  ‰ | | t|| ƒd ¡ ˆ ¡süt‚d‡ ‡fdd„t|| ƒD ƒk�s t‚tˆ| |  | |gˆƒt|ˆƒ d k�sNt‚t|ˆƒt	|ˆƒƒ ˆt	ˆƒ  |ˆƒˆƒˆd t	ˆƒ t	|ˆƒ ƒ |ˆƒd  k�sªt‚t|ˆƒ| t	ˆƒ  |ˆƒ| gˆƒ| t| ˆƒ t	ˆƒ k�sêt‚t|ˆƒ| t	ˆƒ  | |ˆƒgˆƒ|  t|ˆƒˆƒt	ˆ ƒ  k�s2t‚t|ˆƒ|ˆƒ |ˆƒ|ˆƒgˆƒt|ˆƒˆƒk�sjt‚| 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&t‚d S )NÚxT)ÚrealÚyÚtÚfÚgé   é   éýÿÿÿé   é   é   é   r   c                    s   g | ]}|  ˆd ¡ ˆ ¡‘qS )r+   )ÚdiffÚequals)Ú.0Zsol©Úexplicitr!   © ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/geometry/tests/test_util.pyÚ
<listcomp>   s     ztest_idiff.<locals>.<listcomp>iöÿÿÿé
   iìÿÿÿé   )r   r   r   ÚAssertionErrorr   Ú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t‚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^t‚t tddƒtddƒtddƒd	d
�tddƒtddƒgks˜t‚t tddƒtddƒtddƒtddd�d	d
�tddƒtddƒgksÜt‚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�s6t‚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�s–t‚|d jdk�sªt‚|d jdk�s¾t‚d S )Nr   c                   S   s   t tddƒdƒS ©Nr   r+   )r   r   r3   r3   r3   r4   Ú<lambda>+   ó    z#test_intersection.<locals>.<lambda>©r   r   ©r'   r   )éÿÿÿÿr   )r*   r   )r   r*   T)Úpairwiser*   )Zslopeg      @gü©ñÒMbP?rB   g-Cëâ6J?g333333û¿g       @)ÚcenterZhradiusZvradiusgjä6éÜgG?g˜°p÷ÿÿÿ¿F)Úevaluater(   r-   é5   r7   )r   r   r8   r    Ú	TypeErrorr   r   r   r   r   ZcoordinatesÚpytestZapproxr   Z_prec)ÚRÚcÚc2r3   r3   r4   Útest_intersection)   sz     ý ÿý ý ÿý
 ü ÿü
ÿ ýýÿ

ÿ ýýÿrL   c                  C   sj   t tdd„ ƒ dddddg} t| 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sft‚d S )Nc                   S   s   t tddƒdƒS r=   )r   r   r3   r3   r3   r4   r>   P   r?   z"test_convex_hull.<locals>.<lambda>©r*   rB   ©r*   éþÿÿÿ©r+   rB   ©éûÿÿÿrO   ©é   éüÿÿÿZpolygonFrR   rO   r*   rB   r+   rT   rU   )r    rG   r   r   r8   )Úpointsr3   r3   r4   Útest_convex_hullO   s    "þrW   c                  C   sÆ   t dddƒ} |  dd¡}t| |ƒtddƒd ks4t‚tddƒ} tdd	ƒ}t| |ƒtd
tdƒ d ƒksjt‚ttddƒtddƒƒtddƒd ks’t‚ttddƒtddƒtddƒƒtddƒd ksÂt‚d S )Nr@   )r6   r   )r6   r6   r   r7   é(   r+   rA   )r'   r'   r*   r'   )r   Ú	translater   r   r8   r   r   )ÚpÚqr3   r3   r4   Útest_centroidW   s    

"(r\   c                     sB  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�sŒt‚|t|ƒk�s@t‚�q@tƒ }t|ƒdk�rÖ| t
| ddƒ| ddƒƒ¡ �q¨t|ƒ}|dd„ ||dƒD ƒƒ}tˆ |Ž ƒd  }\}}| |¡|k�s"t‚|t|ƒks t‚q t
ddƒt
ddƒt
tjtdƒd ƒ  }}}dd„ ||||fdƒD ƒ}t|||ƒ|k�s�t‚t|||ƒ|k�s¦t‚dddddg}t|Ž t
ddƒt
dd
ƒfhk�sØt‚dd d!d"d#g}t|Ž t
dd$ƒt
dd%ƒfhk�s
t‚tdd&ƒt
ddƒt
ddƒfhk�s0t‚tt	d'd„ ƒ d S )(Nr   )Úrandint)Úsubsetsc                      s   ˆ t ddƒt ddƒƒS )Nr   ©r   r3   ©Úfuncr3   r4   r>   l   r?   z5test_farthest_points_closest_points.<locals>.<lambda>r+   r*   r'   r6   r(   rB   r!   T)Zpositivec                 S   s   g | ]}t |ƒ‘qS r3   r_   )r0   Úar3   r3   r4   r5   |   s     z7test_farthest_points_closest_points.<locals>.<listcomp>c                 s   s   | ]\}}|  |¡V  qd S ©N©Údistance©r0   ÚiÚjr3   r3   r4   Ú	<genexpr>   s     z6test_farthest_points_closest_points.<locals>.<genexpr>é   éd   c                 s   s   | ]\}}|  |¡V  qd S rc   rd   rf   r3   r3   r4   ri   Š   s     c                 S   s   h | ]\}}t ||fƒ’qS r3   )r   rf   r3   r3   r4   Ú	<setcomp>’   s   ÿz6test_farthest_points_closest_points.<locals>.<setcomp>©r*   r*   )r*   r'   )r+   r*   )rR   r'   )rT   r(   rR   rT   rM   rN   rP   rQ   rS   rO   rU   r@   c                   S   s   t dƒS )Nrm   )r   r3   r3   r3   r4   r>       r?   )Zsympy.core.randomr]   Zsympy.utilities.iterablesr^   ÚminÚmaxr   r   r    Ú
ValueErrorr   r   ÚsetÚlistre   r8   r   ÚlenÚaddr   ZHalfr   )r]   r^   ÚhowÚp1Zp2Zp3Zp4Zp5Údupr!   ÚsrV   Údr;   rb   ÚbrJ   r3   r`   r4   Ú#test_farthest_points_closest_pointsb   sb    $(   ÿ
ÿÿÿÿ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sxt‚t| |ƒdksŠt‚d S )	Nr-   r   r*   rB   rO   r+   é	   F)r   r   r   r   r   r8   )rb   rz   rJ   ry   r3   r3   r4   Útest_are_coplanar£   s    r}   )0rH   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<   rL   rW   r\   r{   r}   r3   r3   r3   r4   Ú<module>   s     8&A