U
    —9%e@  ã                   @   s<  d dl mZ d dlmZ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 d dlmZmZmZmZmZmZ d d	lmZmZmZmZ d d
lmZ d dlmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/d d!„ Z0d"d#„ Z1d$d%„ Z2d&d'„ Z3d(S ))é    )ÚBasic)ÚIÚRationalÚpi©Úevaluate)ÚS)ÚSymbol)Úsympify)Úsqrt)ÚLineÚPointÚPoint2DÚPoint3DÚLine3DÚPlane)ÚrotateÚscaleÚ	translateÚGeometryEntity)ÚMatrix)ÚsubsetsÚpermutationsÚcartes)ÚUndecidable)ÚraisesÚwarnsc               
      s†	  t ddd} t ddd}t ddd}t ddd}t ddd}t ddd}tj}t||ƒ‰t||ƒ}td	d	ƒ‰td
d
ƒ}td	d
ƒ}	ttd
d	ƒd
d‰ ˆˆksžt‚ˆ|ksªt‚|j|ks¸t‚ˆ| |ksÈt‚|ˆ t|| || ƒksæt‚| t| | ƒksþt‚ttdd„ ƒ tt	dd„ ƒ tt	dd„ ƒ tt	dd„ ƒ tt	dd„ ƒ tdt
dƒƒttddƒt
dƒƒkslt‚t ˆ|¡t||ƒksˆt‚t ˆ|¡t|||  |||  ƒks´t‚t ||¡|ksÊt‚| |¡|ksÞt‚ˆjtd	d	ƒksôt‚t ˆ|¡t
dƒkst‚t ˆˆ¡d	ks$t‚t ˆ|¡t
|jd |jd  ƒksNt‚tt‡fdd„ƒ tt‡fdd„ƒ ˆ ˆ ¡ˆ  ˆ¡ksŒt‚| ˆ ¡ˆ  |¡ks¦t‚t |ˆ¡dks¼t‚t ||	¡d
ksÒt‚tt	‡fdd„ƒ t||ƒ‰t||ƒ}
t|d
 |ƒ}t ˆ¡st‚ttdd  t ˆtˆdd¡s>t‚W 5 Q R X ˆ ¡ sVt‚t ˆ|¡sht‚t ˆ|ˆ|
¡s~t‚t ˆ|ˆ|¡dks˜t‚t ˆˆ||	¡dks²t‚tt‡ fdd„ƒ tt‡ ‡fdd„ƒ ˆ td	d	ƒ¡ˆgksôt‚ˆ |¡g kst‚ˆ ˆ ¡g kst‚ttdd4 t td	d	d	ƒtd	d	ƒ¡td	d	d	ƒgksXt‚W 5 Q R X t ddd }t|d	ƒ}td	|ƒ}t| d	ƒ}td	| ƒ}t|d!ƒ}t |¡s´t‚t ||¡sÆt‚t ||||¡sÜt‚t||||fƒD ]}tj|Ž dksìt‚qìt ||d |d ¡dks(t‚td	d	ƒ d"d#d$¡dksFt‚t td	d	d	d	ƒtd
d	d	d	ƒtd
d
d	d	ƒtd
d
d
d	ƒ¡dksˆt‚ˆ ˆ¡s˜t‚ˆ dˆ ¡s¬t‚ˆ |¡r¼t‚t td
d
ƒd%¡sÔt‚t td	d	ƒd&¡sìt‚ttd'd„ ƒ td	d
ƒjtd
d	ƒkst‚td
d	ƒjtd	d
ƒks2t‚ˆjd ksBt‚ˆjsNt‚|jdks^t‚ˆjd ksnt‚ˆjdks~t‚|jsŠt‚| dd¡tddƒks¦t‚ˆ dd¡ˆks¼t‚| ttd(d(ƒ¡ˆksØt‚ˆ  |¡ˆ |¡ dd¡ksút‚ˆ  !|¡ˆ |¡ dd¡kst‚|d! td!d!ƒks6t‚|d! td)d)ƒksNt‚d!| td!d!ƒksft‚tt	d*d„ ƒ t| | d
  |ƒt| d |  |d
 ƒ td	d+ƒks¬t‚tjtd
dƒ }}t||ƒ "d¡t| #d¡| #d¡dd,ksît‚tt	d-d„ ƒ t $d.d/¡td	d	ƒkst‚t $d"d/¡td
d	ƒks4t‚tt	‡fd0d„ƒ td
d	ƒ‰ˆ td ¡td	d
ƒksnt‚ˆ td ˆ¡ˆksˆt‚td
d
ƒ‰ˆ dd¡tddƒks®t‚ˆ %d
d¡tddƒksÊt‚ˆ %d
¡tdd
ƒksät‚ˆj%d
d1td
dƒk	s t‚ˆj%ˆj&Ž tddƒk	st‚tt	‡fd2d„ƒ tt	‡fd3d„ƒ d	td	d	d	d	ƒk	sXt‚d
td	d	d	d	ƒk	spt‚t '¡ d+k	s‚t‚d S )4NÚxT©ÚrealÚyÚx1Úx2Úy1Úy2r   é   )Zslopec                   S   s   t dƒS ©Nr%   ©r   © r(   r(   ú^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/geometry/tests/test_point.pyÚ<lambda>%   ó    ztest_point.<locals>.<lambda>c                   S   s
   t dgƒS r&   r'   r(   r(   r(   r)   r*   &   r+   c                   S   s
   t dtƒS ©Né   ©r   r   r(   r(   r(   r)   r*   '   r+   c                   S   s   t dt tƒS )Né   r.   r(   r(   r(   r)   r*   (   r+   c                   S   s   t dt tƒS r,   r.   r(   r(   r(   r)   r*   )   r+   çfffffA@r-   é©  é   r/   c                      s   t  ˆ d¡S ©Nr   )r   Údistancer(   ©Úp1r(   r)   r*   5   r+   c                      s   t  ˆ tƒ ¡S ©N)r   r4   r   r(   r5   r(   r)   r*   6   r+   c                      s   t  ˆ ˆ ¡S r7   )r   Úcanberra_distancer(   ©Úp3r(   r)   r*   ?   r+   F©Ztest_stacklevelé   )Údimc                      s
   t  ˆ ¡S r7   )r   Úis_collinearr(   )Úliner(   r)   r*   N   r+   c                      s
   ˆ  ˆ ¡S r7   )r>   r(   )r?   Úp1_1r(   r)   r*   O   r+   )Zpositiveé   ©r%   r%   )r/   r/   )r/   r%   )éÿÿÿÿrC   )r   rC   c                   S   s    t  t tdƒtdƒƒt ddƒ¡S )Nzx1%y1zx2%y2r   r%   )r   Úis_scalar_multipler
   r(   r(   r(   r)   r*   l   r+   g      à?çš™™™™™É?c                   S   s   t ddƒd S ©Nr   é
   r'   r(   r(   r(   r)   r*   ƒ   r+   rC   r   c                   S   s   t ddƒd S ©Nr%   r/   r'   r(   r(   r(   r)   r*   ‹   r+   )r   r%   )r%   r   c                      s   t  ˆ t ddƒ¡S r3   )r   Úprojectr(   r5   r(   r)   r*      r+   )r    c                      s
   ˆ   ˆ ¡S r7   ©Ú	transformr(   r9   r(   r)   r*   ž   r+   c                      s   ˆ   tddgddggƒ¡S ©Nr%   r   ©rK   r   r(   ©Úpr(   r)   r*   Ÿ   r+   )(r	   r   ÚHalfr   r   ÚAssertionErrorr    r   Ú	TypeErrorÚ
ValueErrorr   r   ÚmidpointÚoriginr4   r   Útaxicab_distancer8   r>   r   ÚUserWarningÚintersectionÚis_concyclicr   rD   r   Zorthogonal_directionÚis_zeroZ
is_nonzeror   r   r   Ú__radd__Ú__rsub__ÚevalfÚnrI   r   ÚargsZaffine_rank)r   r    r!   r"   r#   r$   ÚhalfÚp2Úp4Úp5Úp1_2Úp1_3Zx_posZp2_1Zp2_2Zp2_3Zp2_4Zp2_5ZptsÚaÚbr(   )r?   rO   r6   r@   r:   r)   Ú
test_point   sì    




(,*

$8


 B"$8ÿ


rh   c               	      s¨  t ddd‰t ddd} t ddd}t ddd}t ddd}t ddd}t d	dd}t d
dd}tj}t|||ƒ}t|||ƒ}	tdddƒ}
tdddƒ}tdddƒ}||ks®t‚||	ksºt‚|	j|ksÈt‚|
| |ksØt‚|	| t|| || || ƒksüt‚|	 t| | | ƒkst‚tdtdƒƒttddƒtdƒƒksBt‚t 	|
|¡t|||ƒks`t‚t 	||¡t|||  |||  |||  ƒks–t‚t 	|	|	¡|	ks¬t‚|	 	|	¡|	ksÀt‚t 
|
|¡tdƒksÚt‚t 
||¡dksðt‚t 
|
|	¡t|	jd |	jd  |	jd  ƒks$t‚t|||ƒ}t|||ƒ}t|d ||ƒ}t |
¡ t |
|¡sht‚t |
|||¡s~t‚t |
|||¡dks˜t‚t |
|
||¡dks²t‚|
 tdddƒ¡|
gksÐt‚|
 |¡g ksät‚|d tdddƒksþt‚|d tdddƒkst‚d| tdddƒks2t‚ttdd„ ƒ |j|||fksVt‚|	j|||fkslt‚|
jdks|t‚|jdksŒt‚|jdksœt‚|jdks¬t‚|jdks¼t‚|jdksÌt‚tˆˆd  | dƒtˆd ˆ | d dƒ tdddƒks
t‚tjtddƒtddƒ  }}}t|||ƒ d¡t| d¡| d¡| d¡ddksbt‚ttdd„ ƒ tdddƒ‰ ˆ  dd¡tdddƒksšt‚ˆ  dd¡tdddƒks¸t‚ˆ  d¡tdddƒksÔt‚ˆ jddtdddƒksòt‚ˆ jˆ jŽ tdddƒkst‚tdddd d!jd js.t‚ˆ jdks>t‚|jdksNt‚|jdks^t‚tt‡ ‡fd"d„ƒ t ¡ s€t‚t d#d#d$¡s”t‚t d#d%¡s¦t‚ttdd& ttd'd„ ƒ W 5 Q R X t d#d%¡sÞt‚t dd(dd)¡dksøt‚tdddƒ}tdddƒ}t ˆ ||¡dks(t‚t ˆ |||
¡dksBt‚t ˆ |¡sTt‚tdddƒ}tdddƒ}t ˆ ||¡s€t‚td)d*d+ƒ‰tj‡fd,d-„tdƒD ƒŽ s®t‚t tˆ| ƒtˆˆ|  ƒt| ˆd ƒ¡dksàt‚| tˆ |ƒ¡tdddƒgkst‚| ddd¡|kst‚| ddd|¡tdddƒks>t‚| ddd|
¡|ksXt‚t ddddgddddgddddgddddggƒ}ˆ  !|¡ˆ ksœt‚t ddddgddddgddddgddddggƒ}ˆ  !|¡tdddƒksèt‚tt‡ fd.d„ƒ tt‡ fd/d„ƒ ˆ  "|¡dks t‚tddddƒ}ttdd&" ˆ | tddddƒksXt‚W 5 Q R X tddddƒ}ttdd&" ˆ | tddddƒksšt‚W 5 Q R X d S )0Nr   Tr   r    r!   r"   Úx3r#   r$   Úy3r   r%   r/   r0   r-   r1   r2   FrA   rE   c                   S   s   t dddƒd S rF   ©r   r(   r(   r(   r)   r*   Ü   r+   ztest_point3D.<locals>.<lambda>)r   r   r   )r%   r%   r%   )r   r%   r/   rC   r<   r   c                   S   s   t dddƒd S )Nr%   r/   r-   rk   r(   r(   r(   r)   r*   ï   r+   )Úzçš™™™™™¹?Úignore)r   Úon_morphc                      s   t  ˆ ˆ¡S r7   )r   Úare_collinearr(   )rO   r   r(   r)   r*     r+   )r%   r/   r   )r%   r-   r   ©r%   r/   r-   r;   c                   S   s   t  dd¡S )N©r%   r/   rq   )r   Úare_coplanarr(   r(   r(   r)   r*   	  r+   )r%   r%   r   )r%   r/   r%   )r/   r%   r   )r-   r%   r/   c                    s   g | ]}ˆ   d | |f¡‘qS )rC   )Z
projection©Ú.0Úi)Úplaner(   r)   Ú
<listcomp>  s     z test_point3D.<locals>.<listcomp>c                      s
   ˆ   ˆ ¡S r7   rJ   r(   rN   r(   r)   r*   '  r+   c                      s   ˆ   tddgddggƒ¡S rL   rM   r(   rN   r(   r)   r*   (  r+   )#r	   r   rP   r   rQ   r    r   r   r   rT   r4   r   rl   rp   rX   r   rS   Úcoordinatesr]   r^   r   r   r_   Úis_FloatÚlengthrR   rs   r   rW   r   Úranger   r   rK   Úequals)r    r!   r"   ri   r#   r$   rj   r`   r6   ra   r:   rb   rc   r@   rd   re   rf   rg   ÚcZplanar2Zplanar3ÚidentityZtransZp_4dZp_4d3dr(   )rO   rw   r   r)   Útest_point3D©   sÔ    $( 
ÿ4
*
ÿ
 ÿ
"2$"00&r€   c                  C   sÆ   t ddƒ} t ddƒ}d}|  |¡tdƒd ks2t‚| |¡tdƒd ksLt‚| jdksZt‚| jdksht‚|jdksvt‚|jtdƒd ksŒt‚| jd	ksšt‚|jdtdƒd fks´t‚| jd
ksÂt‚d S )Nr%   rA   r<   g      @)é   r-   é=   r/   é   )r%   rA   )r%   rA   r%   rA   )	r   r4   r   rQ   r   r    r   ry   Zbounds©r6   ra   r:   r(   r(   r)   Útest_Point2D6  s    

r…   c                  C   s>   t dddƒ} t dddƒ}t dddƒ}t  | ||¡dks:t‚d S )	Nr<   éþÿÿÿr   r%   r/   r-   é   F)r   rp   rQ   r„   r(   r(   r)   Útest_issue_9214J  s    rˆ   c               	   C   sH   t dddƒ} tddƒ}ttdd |  |¡tdƒks:t‚W 5 Q R X d S )Nr%   r   r/   Fr;   rA   )r   r   r   rW   r4   r   rQ   ©r6   ra   r(   r(   r)   Útest_issue_11617R  s    
rŠ   c                  C   s¬   t ddƒ} |  ttd ƒ¡t ddƒks*t‚|  tddƒ¡t ddƒksHt‚|  tddƒ¡t ddƒksft‚t ddƒ ddd¡t ddƒksˆt‚t ddƒ dd	¡t d	d
ƒks¨t‚d S )Nr%   r/   rC   r-   )r<   rA   r†   iùÿÿÿr<   rA   r   )r   rK   r   r   rQ   r   r   rN   r(   r(   r)   Útest_transformZ  s    
 ÿÿr‹   c                  C   sV   t ddƒt ddƒ } }t ddƒt ddƒ }}t  | ||¡s>t‚t  | |||¡rRt‚d S )NrC   r   r%   r/   )r   rY   rQ   )r6   ra   r:   rb   r(   r(   r)   Útest_concyclic_doctest_buge  s    rŒ   c               	   C   s  dddgt ddƒf} dddgt ddƒf}t| |ƒ}tddƒ}ddddgt dddƒf}t|dƒ}tdddƒ}dddddgt ddddƒf}t|dƒ}t ddddƒ}	d	d
dddddddg	}
ddg}| D ]}t|ƒ qÀ|
D ]}| D ]}t||ƒ|ƒ qÚqÒ|D ]}|D ]}t||ƒ|Ž  qüqôdg}|D ]}t|ƒ q|
D ] }|D ]}t||ƒ|ƒ q8q0|D ] }|D ]}t||ƒ|Ž  q^qVdg}|D ]}t |ƒ q‚|
D ] }|D ]}t|	|ƒ|ƒ qžq–|D ] }|D ]}t|	|ƒ|Ž  qÄq¼tdƒ}t ddƒ}|d|f t dd| ddkst‚t ddƒ}|d t ddddks:t‚t ddƒ}|d t ddddks`t‚t dddd}t |ddd}|jdksŒt‚t	dd „ |jd!d… D ƒƒs®t‚t	d"d „ t |ƒjD ƒƒsÌt‚t dd#dsÞt‚t
td$d%„ ƒ t
td&d%„ ƒ t
td'd%„ ƒ d!S )(z‡Functions accepting `Point` objects in `geometry`
    should also accept tuples and lists and
    automatically convert them to points.rr   r%   r/   )r%   r-   r-   rq   )r%   r/   r-   r<   r<   r4   rD   rV   rT   rX   Údotr}   Ú__add__Ú__sub__rY   r>   r   r   rm   Fr   g      $@g        rE   rn   ©r=   ro   )rm   rE   r   r   c                 s   s   | ]}|j V  qd S r7   ©rz   rt   r(   r(   r)   Ú	<genexpr>«  s     z!test_arguments.<locals>.<genexpr>Nc                 s   s   | ]}|j V  qd S r7   r‘   rt   r(   r(   r)   r’   ­  s     Úerrorc                   S   s   t dddddS )Nr%   r-   r“   r   r'   r(   r(   r(   r)   r*   ³  r+   z test_arguments.<locals>.<lambda>c                   S   s   t dddddS )Nr%   r-   Úunknownr   r'   r(   r(   r(   r)   r*   µ  r+   c                   S   s   t tƒ tƒ ƒS r7   )r   r   r(   r(   r(   r)   r*   ·  r+   )r   r   r   r   r   Úgetattrr	   rQ   r_   Úallr   rS   rR   )Z	singles2dZ
singles2d2Z	doubles2dZp2dZ	singles3dZ	doubles3dZp3dZ	singles4dZ	doubles4dZp4dZtest_singleZtest_doublerO   Úfuncr   rf   ÚuZu4r(   r(   r)   Útest_argumentsl  sl    





$

"r™   c                   C   s.   t ddƒjt tdƒd tdƒd ƒks*t‚d S rH   )r   Úunitr   rQ   r(   r(   r(   r)   Ú	test_unit¹  s    r›   c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t ddƒ tddƒ¡S )Nr%   r/   )r   r   rB   )r   r   r   r(   r(   r(   r)   r*   ¾  r+   ztest_dot.<locals>.<lambda>)r   rR   r(   r(   r(   r)   Útest_dot½  s    rœ   c                   C   sn   t  t ddƒt ddƒ¡t ddƒt ddƒgks0t‚t jt ddƒt dddƒddt dddƒt dddƒgksjt‚d S )Nr%   r/   r-   r<   r   rn   )ro   )r   Z_normalize_dimensionrQ   r(   r(   r(   r)   Útest__normalize_dimensionÁ  s     ÿ
 
 ÿ
 
ÿÿr   c                	   C   s"   t dƒ tddƒ W 5 Q R X d S )NFr%   r/   )r   r   r(   r(   r(   r)   Útest_issue_22684É  s    
rž   c                  C   s  t dddƒ} t dddƒ}|  t dddƒ¡dddgks8t‚|  t dddƒ¡dddgksXt‚|  t ddtƒ¡dddgksxt‚|  t dddƒ¡dddgks˜t‚|  t dtdƒdƒ¡dddgks¼t‚|  t dddƒ¡dddgksÜt‚|  t dddƒ¡tdƒd tdƒd dgkst‚|  t dddƒ¡tdƒd tdƒd tdƒd gksHt‚|  t ddƒ¡d	td
ƒ d
 dtd
ƒ d
 dgks€t‚| t dddƒ¡tdƒ d tdƒ d tdƒ d gksÀt‚| t dddƒ¡dddgksât‚| t dddƒ¡tdƒd dtdƒd gkst‚d S )Nr   r%   rA   r-   g333333@r/   iôÿÿÿiñÿÿÿéüÿÿÿé)   éûÿÿÿé   )r   Zdirection_cosinerQ   r   r   r‰   r(   r(   r)   Útest_direction_cosineÏ  s        $ 2:8@"r£   N)4Zsympy.core.basicr   Zsympy.core.numbersr   r   r   Zsympy.core.parametersr   Zsympy.core.singletonr   Zsympy.core.symbolr	   Zsympy.core.sympifyr
   Z(sympy.functions.elementary.miscellaneousr   Zsympy.geometryr   r   r   r   r   r   Zsympy.geometry.entityr   r   r   r   Zsympy.matricesr   Zsympy.utilities.iterablesr   r   r   Zsympy.utilities.miscr   Zsympy.testing.pytestr   r   rh   r€   r…   rˆ   rŠ   r‹   rŒ   r™   r›   rœ   r   rž   r£   r(   r(   r(   r)   Ú<module>   s6      M