U
    ZÊ¹j@  ã                   @   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/bwave/python/venv/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      $@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