o
    GZŽh@  ã                   @   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‰ ˆˆv sOJ ‚ˆ|vsUJ ‚|j|ks\J ‚ˆ| |ksdJ ‚|ˆ t|| || ƒkssJ ‚| t| | ƒksJ ‚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sµJ ‚t ˆ|¡t||ƒksÂJ ‚t ˆ|¡t|||  |||  ƒks×J ‚t ||¡|ksáJ ‚| |¡|ksêJ ‚ˆjtd	d	ƒksôJ ‚t ˆ|¡t	dƒksJ ‚t ˆˆ¡d	ksJ ‚t ˆ|¡t	|jd |jd  ƒks!J ‚tt‡fdd„ƒ tt‡fdd„ƒ ˆ ˆ ¡ˆ  ˆ¡ks@J ‚| ˆ ¡ˆ  |¡ksMJ ‚t |ˆ¡dksXJ ‚t ||	¡d
kscJ ‚tt‡fdd„ƒ t||ƒ‰t||ƒ}
t|d
 |ƒ}t ˆ¡s…J ‚ttdd t ˆtˆdd¡s™J ‚W d   ƒ n	1 s¤w   Y  ˆ ¡ s°J ‚t ˆ|¡s¹J ‚t ˆ|ˆ|
¡sÄJ ‚t ˆ|ˆ|¡du sÑJ ‚t ˆˆ||	¡du sÞJ ‚tt‡ fdd„ƒ tt‡ ‡fdd„ƒ ˆ td	d	ƒ¡ˆgksÿJ ‚ˆ |¡g ks	J ‚ˆ ˆ ¡g ksJ ‚ttdd t td	d	d	ƒtd	d	ƒ¡td	d	d	ƒgks1J ‚W d   ƒ n	1 s<w   Y  t ddd }t|d	ƒ}td	|ƒ}t| d	ƒ}td	| ƒ}t|d!ƒ}t |¡sjJ ‚t ||¡ssJ ‚t ||||¡s~J ‚t||||fƒD ]}tj|Ž du s’J ‚q†t ||d |d ¡du s¤J ‚td	d	ƒ d"d#d$¡du s³J ‚t td	d	d	d	ƒtd
d	d	d	ƒtd
d
d	d	ƒtd
d
d
d	ƒ¡du sÔJ ‚ˆ ˆ¡sÜJ ‚ˆ dˆ ¡sæJ ‚ˆ |¡rîJ ‚t td
d
ƒd%¡súJ ‚t td	d	ƒd&¡sJ ‚ttd'd„ ƒ td	d
ƒjtd
d	ƒksJ ‚td
d	ƒjtd	d
ƒks)J ‚ˆjd u s1J ‚ˆjs7J ‚|jdu s?J ‚ˆjd u sGJ ‚ˆjdu sOJ ‚|jsUJ ‚| dd¡tddƒkscJ ‚ˆ dd¡ˆksnJ ‚| ttd(d(ƒ¡ˆks|J ‚ˆ |¡ˆ |¡ dd¡ksJ ‚ˆ   |¡ˆ |¡ dd¡ksŸJ ‚|d! td!d!ƒks«J ‚|d! td)d)ƒks·J ‚d!| td!d!ƒksÃJ ‚ttd*d„ ƒ t| | d
  |ƒt| d |  |d
 ƒ td	d+ƒksæJ ‚tjt
d
dƒ}}t||ƒ !d¡t| "d¡| "d¡dd,ksJ ‚ttd-d„ ƒ t #d.d/¡td	d	ƒksJ ‚t #d"d/¡td
d	ƒks*J ‚tt‡fd0d„ƒ td
d	ƒ‰ˆ td ¡td	d
ƒksGJ ‚ˆ td ˆ¡ˆksTJ ‚td
d
ƒ‰ˆ dd¡tddƒksgJ ‚ˆ $d
d¡tddƒksuJ ‚ˆ $d
¡tdd
ƒks‚J ‚ˆj$d
d1td
dƒksJ ‚ˆj$ˆj%Ž tddƒksžJ ‚tt‡fd2d„ƒ tt‡fd3d„ƒ d	td	d	d	d	ƒv s¼J ‚d
td	d	d	d	ƒvsÈJ ‚t &¡ d+ksÑJ ‚d S )4NÚxT©ÚrealÚyÚx1Úx2Úy1Úy2r   é   )Zslopec                   S   s   t dƒS ©Nr%   ©r   © r(   r(   úN/var/www/auris/lib/python3.10/site-packages/sympy/geometry/tests/test_point.pyÚ<lambda>%   s    ztest_point.<locals>.<lambda>c                   S   s
   t dgƒS 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*   (   ó    c                   S   s   t dt tƒS r,   r.   r(   r(   r(   r)   r*   )   r0   çfffffA@r-   é©  é   r/   c                      s   t  ˆ d¡S ©Nr   )r   Údistancer(   ©Úp1r(   r)   r*   5   ó    c                      s   t  ˆ tƒ ¡S ©N)r   r5   r   r(   r6   r(   r)   r*   6   r0   c                      s   t  ˆ ˆ ¡S r9   )r   Úcanberra_distancer(   ©Úp3r(   r)   r*   ?   r8   F©Ztest_stacklevelé   )Údimc                      s
   t  ˆ ¡S r9   )r   Úis_collinearr(   )Úliner(   r)   r*   N   r+   c                      s
   ˆ  ˆ ¡S r9   )r@   r(   )rA   Úp1_1r(   r)   r*   O   r+   )Zpositiveé   ©r%   r%   )r/   r/   )r/   r%   )éÿÿÿÿrE   )r   rE   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   s     g      à?çš™™™™™É?c                   S   s   t ddƒd S ©Nr   é
   r'   r(   r(   r(   r)   r*   ƒ   r0   rE   r   c                   S   s   t ddƒd S ©Nr%   r/   r'   r(   r(   r(   r)   r*   ‹   r0   )r   r%   )r%   r   c                      s   t  ˆ t ddƒ¡S r4   )r   Úprojectr(   r6   r(   r)   r*      s    )r    c                      ó
   ˆ   ˆ ¡S r9   ©Ú	transformr(   r;   r(   r)   r*   ž   r+   c                      ó   ˆ   tddgddggƒ¡S ©Nr%   r   ©rN   r   r(   ©Úpr(   r)   r*   Ÿ   ó    )'r	   r   ÚHalfr   r   r    r   Ú	TypeErrorÚ
ValueErrorr   r   ÚmidpointÚoriginr5   r   Útaxicab_distancer:   r@   r   ÚUserWarningÚintersectionÚis_concyclicr   rF   r   Zorthogonal_directionÚis_zeroZ
is_nonzeror   r   r   Ú__radd__Ú__rsub__ÚevalfÚnrK   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(   )rA   rS   r7   rB   r<   r)   Ú
test_point   sð   




&**

ÿ0ÿ


 B"$8
ÿ

rl   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ƒ}||v sWJ ‚||	vs]J ‚|	j|ksdJ ‚|
| |kslJ ‚|	| t|| || || ƒks~J ‚|	 t| | | ƒksŒJ ‚tdtdƒƒttddƒtdƒƒksŸJ ‚t |
|¡t|||ƒks­J ‚t ||¡t|||  |||  |||  ƒksÇJ ‚t |	|	¡|	ksÑJ ‚|	 |	¡|	ksÚJ ‚t 	|
|¡tdƒksæJ ‚t 	||¡dksðJ ‚t 	|
|	¡t|	j
d |	jd  |	jd  ƒks
J ‚t|||ƒ}t|||ƒ}t|d ||ƒ}t |
¡ t |
|¡s,J ‚t |
|||¡s7J ‚t |
|||¡du sDJ ‚t |
|
||¡du sQJ ‚|
 tdddƒ¡|
gks`J ‚|
 |¡g ksjJ ‚|d tdddƒkswJ ‚|d tdddƒks„J ‚d| tdddƒks‘J ‚ttdd„ ƒ |j|||fks£J ‚|	j|||fks®J ‚|
jdks¶J ‚|jdks¾J ‚|jdksÆJ ‚|j
dksÎJ ‚|jdksÖJ ‚|jdksÞJ ‚tˆˆd  | dƒtˆd ˆ | d dƒ tdddƒksýJ ‚tjtddƒtddƒ}}}t|||ƒ d¡t| d¡| d¡| d¡ddks)J ‚ttdd„ ƒ tdddƒ‰ ˆ  dd¡tdddƒksEJ ‚ˆ  dd¡tdddƒksTJ ‚ˆ  d¡tdddƒksbJ ‚ˆ jddtdddƒksqJ ‚ˆ jˆ jŽ tdddƒks€J ‚tdddd d!jd jsJ ‚ˆ jdks—J ‚|jdksŸJ ‚|jdks§J ‚tt‡ ‡fd"d„ƒ t ¡ s¸J ‚t d#d#d$¡sÂJ ‚t d#d%¡sËJ ‚ttdd& ttd'd„ ƒ W d   ƒ n	1 säw   Y  t d#d%¡sòJ ‚t dd(dd)¡du sÿJ ‚tdddƒ}tdddƒ}t ˆ ||¡dksJ ‚t ˆ |||
¡dks$J ‚t ˆ |¡s-J ‚tdddƒ}tdddƒ}t ˆ ||¡sCJ ‚td)d*d+ƒ‰tj‡fd,d-„tdƒD ƒŽ sZJ ‚t tˆ| ƒtˆˆ|  ƒt| ˆd ƒ¡du ssJ ‚| tˆ |ƒ¡tdddƒgks…J ‚| ddd¡|ks‘J ‚| ddd|¡tdddƒks¢J ‚| ddd|
¡|ks¯J ‚tg d.¢g d/¢g d0¢g d1¢gƒ}ˆ   |¡ˆ ksÉJ ‚tg d2¢g d3¢g d4¢g d1¢gƒ}ˆ   |¡tdddƒksçJ ‚tt‡ fd5d„ƒ tt‡ fd6d„ƒ ˆ  !|¡dksJ ‚tddddƒ}ttdd& ˆ | tddddƒksJ ‚W d   ƒ n	1 s*w   Y  tddddƒ}ttdd& ˆ | tddddƒksKJ ‚W d   ƒ d S 1 sWw   Y  d S )7Nr   Tr   r    r!   r"   Úx3r#   r$   Úy3r   r%   r/   r1   r-   r2   r3   FrC   rG   c                   S   s   t dddƒd S rH   ©r   r(   r(   r(   r)   r*   Ü   ó    ztest_point3D.<locals>.<lambda>)r   r   r   )r%   r%   r%   )r   r%   r/   rE   r>   r   c                   S   s   t dddƒd S )Nr%   r/   r-   ro   r(   r(   r(   r)   r*   ï   rp   )Úzçš™™™™™¹?Úignore)r   Úon_morphc                      s   t  ˆ ˆ¡S r9   ©r   Úare_collinearr(   )rS   r   r(   r)   r*     r8   )r%   r/   r   )r%   r-   r   ©r%   r/   r-   r=   c                   S   s   t  dd¡S )N©r%   r/   rw   )r   Úare_coplanarr(   r(   r(   r)   r*   	  r8   )r%   r%   r   )r%   r/   r%   )r/   r%   r   )r-   r%   r/   c                    s   g | ]}ˆ   d | |f¡‘qS )rE   )Z
projection©Ú.0Úi)Úplaner(   r)   Ú
<listcomp>  s    z test_point3D.<locals>.<listcomp>)r%   r   r   r   )r   r%   r   r   )r   r   r%   r   )r   r   r   r%   )r%   r   r   r%   )r   r%   r   r%   )r   r   r%   r%   c                      rL   r9   rM   r(   rR   r(   r)   r*   '  r+   c                      rO   rP   rQ   r(   rR   r(   r)   r*   (  rT   )"r	   r   rU   r   r    r   r   r   rX   r5   r   rq   rv   r\   r   rW   Úcoordinatesra   rb   r   r   rc   Úis_FloatÚlengthrV   ry   r   r[   r   Úranger   r   rN   Úequals)r    r!   r"   rm   r#   r$   rn   rd   r7   re   r<   rf   rg   rB   rh   ri   rj   rk   ÚcZplanar2Zplanar3ÚidentityZtransZp_4dZp_4d3dr(   )rS   r}   r   r)   Útest_point3D©   sÚ   $& 

ÿ4
*

ÿ 
ÿÿ"2$"  ÿ$ÿr†   c                  C   sÆ   t ddƒ} t ddƒ}d}|  |¡tdƒd ksJ ‚| |¡tdƒd ks&J ‚| jdks-J ‚| jdks4J ‚|jdks;J ‚|jtdƒd ksFJ ‚| jd	ksMJ ‚|jdtdƒd fksZJ ‚| jd
ksaJ ‚d S )Nr%   rC   r>   g      @)é   r-   é=   r/   é   )r%   rC   )r%   rC   r%   rC   )r   r5   r   r   r    r   r   Zbounds©r7   re   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u sJ ‚d S )	Nr>   éþÿÿÿr‡   r%   r/   r-   é   Fru   rŠ   r(   r(   r)   Útest_issue_9214J  s   rŽ   c                  C   s^   t dddƒ} tddƒ}ttdd |  |¡tdƒksJ ‚W d   ƒ d S 1 s(w   Y  d S )Nr%   r   r/   Fr=   rC   )r   r   r   r[   r5   r   ©r7   re   r(   r(   r)   Útest_issue_11617R  s
   
"ÿr   c                  C   s¬   t ddƒ} |  ttd ƒ¡t ddƒksJ ‚|  tddƒ¡t ddƒks$J ‚|  tddƒ¡t ddƒks3J ‚t ddƒ ddd¡t ddƒksDJ ‚t ddƒ dd	¡t d	d
ƒksTJ ‚d S )Nr%   r/   rE   r-   )r>   rC   rŒ   iùÿÿÿr>   rC   r‡   )r   rN   r   r   r   r   rR   r(   r(   r)   Útest_transformZ  s   
 ÿÿr‘   c                  C   sV   t ddƒt ddƒ} }t ddƒt ddƒ}}t  | ||¡sJ ‚t  | |||¡r)J ‚d S )NrE   r   r%   r/   )r   r]   )r7   re   r<   rf   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g d¢t dddƒf}t|dƒ}tdddƒ}dg d¢t ddddƒf}t|dƒ}t ddddƒ}	g d	¢}
d
dg}| D ]}t|ƒ qV|
D ]}| D ]	}t||ƒ|ƒ qcq_|D ]}|D ]	}t||ƒ|Ž  qtqpdg}|D ]}t|ƒ q„|
D ]}|D ]	}t||ƒ|ƒ q‘q|D ]}|D ]	}t||ƒ|Ž  q¢qžd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õJ ‚t ddƒ}|d t ddddksJ ‚t ddƒ}|d t ddddksJ ‚t dddd}t |ddd}|jdks1J ‚tdd„ |jdd… D ƒƒsBJ ‚tdd„ t |ƒjD ƒƒsQJ ‚t dddsZJ ‚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.rx   r%   r/   )r%   r-   r-   rw   )r%   r/   r-   r>   r>   )	r5   rF   rZ   rX   r\   Údotrƒ   Ú__add__Ú__sub__r]   r@   r   r   rr   Fr   g      $@rG   rs   ©r?   rt   )rr   rG   r   r   c                 s   ó    | ]}|j V  qd S r9   ©r€   rz   r(   r(   r)   Ú	<genexpr>«  ó   € z!test_arguments.<locals>.<genexpr>Nc                 s   r—   r9   r˜   rz   r(   r(   r)   r™   ­  rš   Úerrorc                   S   ó   t dddddS )Nr%   r-   r›   r–   r'   r(   r(   r(   r)   r*   ³  rp   z test_arguments.<locals>.<lambda>c                   S   rœ   )Nr%   r-   Úunknownr–   r'   r(   r(   r(   r)   r*   µ  rp   c                   S   s   t tƒ tƒ ƒS r9   )r   r   r(   r(   r(   r)   r*   ·  r0   )r   r   r   r   r   Úgetattrr	   rc   Úallr   rW   rV   )Z	singles2dZ
singles2d2Z	doubles2dZp2dZ	singles3dZ	doubles3dZp3dZ	singles4dZ	doubles4dZp4dZtest_singleZtest_doublerS   Úfuncr   rj   ÚuZu4r(   r(   r)   Útest_argumentsl  sx   




ÿÿ
ÿÿ
ÿÿ
"

"r¢   c                   C   s.   t ddƒjt tdƒd tdƒd ƒksJ ‚d S rJ   )r   Úunitr   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   rD   )r   r“   r   r(   r(   r(   r)   r*   ¾  s    ztest_dot.<locals>.<lambda>)r   rV   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sJ ‚t jt ddƒt dddƒddt dddƒt dddƒgks5J ‚d S )Nr%   r/   r-   r>   r   rs   )rt   )r   Z_normalize_dimensionr(   r(   r(   r)   Útest__normalize_dimensionÁ  s   
ÿÿÿÿr¦   c                   C   s8   t dƒ tddƒ W d   ƒ d S 1 sw   Y  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ƒ¡g d¢ksJ ‚|  t dddƒ¡g d¢ks*J ‚|  t ddtƒ¡g d¢ks9J ‚|  t dddƒ¡g d¢ksHJ ‚|  t dtdƒdƒ¡g d¢ksYJ ‚|  t dddƒ¡g d¢kshJ ‚|  t dddƒ¡td	ƒd	 td	ƒd	 dgks€J ‚|  t dddƒ¡tdƒd tdƒd tdƒd gksœJ ‚|  t d
dƒ¡dtdƒ d dtdƒ d dgks·J ‚| t dddƒ¡tdƒ d tdƒ d tdƒ d gksÖJ ‚| t dddƒ¡g d¢ksåJ ‚| t dddƒ¡td	ƒd	 dtd	ƒd	 gksýJ ‚d S )Nr   r%   )r%   r   r   )r   r%   r   )r   r   r%   rC   r-   g333333@r/   iôÿÿÿiñÿÿÿéüÿÿÿé)   éûÿÿÿé   )r   Zdirection_cosiner   r   r   r(   r(   r)   Útest_direction_cosineÏ  s   "086>4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   rl   r†   r‹   rŽ   r   r‘   r’   r¢   r¤   r¥   r¦   r§   r¬   r(   r(   r(   r)   Ú<module>   s8       M