a
    ¬<b\  ć                   @   sŲ   d dl 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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)Śsqrt)
ŚPointŚPoint2DŚLineŚPolygonŚSegmentŚconvex_hullŚintersectionŚcentroidŚPoint3DŚLine3D)ŚidiffŚclosest_pointsŚfarthest_pointsŚ_ordered_pointsŚare_coplanar)Śsolve)Śraisesc                     sd  t dddt ddd} t ddd}td}td}d | d  d	 }d
 d  | d   | d  }|t|| d
 ” ksJ |t|| gd
 ” ks J t|| d
 ” |ksŗJ d td  d	 d   | | t|| d ”  ”sųJ d fddt|| D v sJ t| |  | |gt| d ksJJ t|t	| t	  |d t	|  |d  ks J t|| t	  || g| t|  t	 ksąJ t|| t	  | |g|  t	 t|  ks(J t|| ||gt|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   © śn/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/geometry/tests/test_util.pyŚ
<listcomp>   ó    ztest_idiff.<locals>.<listcomp>é   )
r   r   r   Zsimplifyr   Śsubsr   r%   r   r   )r   r   r   r   ŚcircŚansr)   r'   r*   Ś
test_idiff   s$    " $.V@Hr1   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sJ 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ÜJ d S )Nr   c                   S   s   t tdddS ©Nr   r!   )r   r   r)   r)   r)   r*   Ś<lambda>%   r,   z#test_intersection.<locals>.<lambda>©r   r   ©r   r   )é’’’’r   )r-   r   )r   r-   T)Śpairwiser-   )Zslope)r   r   r   Ś	TypeErrorr   r
   r)   r)   r)   r*   Śtest_intersection#   s6    
ż’ż
ż’żü’ür9   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sfJ d S )Nc                   S   s   t tdddS r2   )r   r   r)   r)   r)   r*   r3   9   r,   z"test_convex_hull.<locals>.<lambda>©)r-   r6   )r-   éž’’’)r!   r6   )éū’’’r;   )é   éü’’’F)Zpolygonr<   r;   r-   r6   r!   r=   r>   )r   r8   r   Śdictr	   )Śpointsr)   r)   r*   Śtest_convex_hull8   s    "žrA   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sJ ttddtddtddtddd ksĀJ d S )Nr4   )é
   r   )rB   rB   r   é   é(   r!   r5   )r   r   r-   r   )r   Ś	translater   r   r   r   )ŚpŚqr)   r)   r*   Śtest_centroid@   s    

"(rH   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sJ |t|ks@J q@t }t|dkrÖ| t
| dd| dd” qØt|}|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sJ t||||ks¦J g d¢}t| t
ddt
dd
fhksŅJ g d¢}t| t
ddt
ddfhksžJ 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	   r)   ©Śfuncr)   r*   r3   U   r,   z5test_farthest_points_closest_points.<locals>.<lambda>r!   r-   r   rB   r    r6   r   T)Zpositivec                 S   s   g | ]}t |qS r)   rK   )r&   Śar)   r)   r*   r+   e   r,   z7test_farthest_points_closest_points.<locals>.<listcomp>c                 s   s   | ]\}}|  |”V  qd S ©N©Śdistance©r&   ŚiŚjr)   r)   r*   Ś	<genexpr>h   r,   z6test_farthest_points_closest_points.<locals>.<genexpr>é   éd   c                 s   s   | ]\}}|  |”V  qd S rO   rP   rR   r)   r)   r*   rU   s   r,   c                 S   s   h | ]\}}t ||fqS r)   )r   rR   r)   r)   r*   Ś	<setcomp>{   s   ’z6test_farthest_points_closest_points.<locals>.<setcomp>)©r-   r-   )r-   r   )r!   r-   )r<   r   )r=   r    r<   r=   r:   r;   r>   rY   r4   c                   S   s   t dS )NrY   )r   r)   r)   r)   r*   r3      r,   )Zsympy.core.randomrI   Zsympy.utilities.iterablesrJ   ŚminŚmaxr   r   r   Ś
ValueErrorr	   r   ŚsetŚlistrQ   r   ŚlenŚaddr   ZHalfr   )rI   rJ   ŚhowŚp1Śp2Zp3Zp4Zp5Śdupr   Śsr@   Śdr0   rN   ŚbŚcr)   rL   r*   Ś#test_farthest_points_closest_pointsK   s^    $( "’
’’’’ri   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sJ d S )	Nr"   r   r-   r6   r;   r!   é	   F)r   r   r
   r	   r   )rN   rg   rh   rf   r)   r)   r*   Śtest_are_coplanar   s    rk   N)&Zsympy.core.functionr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z&sympy.functions.elementary.exponentialr   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   r1   r9   rA   rH   ri   rk   r)   r)   r)   r*   Ś<module>   s   0A