o
    à8Va.>  ã                   @   s   d dl 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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„ Z)dd„ Z*dd„ Z+d S )!é    )ÚIÚRationalÚSymbolÚpiÚsqrtÚsympifyÚSÚBasic)ÚLineÚPointÚPoint2DÚPoint3DÚLine3DÚPlane)ÚrotateÚscaleÚ	translateÚGeometryEntity)ÚMatrix)ÚsubsetsÚpermutationsÚcartes)ÚUndecidable)ÚraisesÚwarnsc               
      sv	  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ƒ 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	d	ƒtd	d	ƒ¡td	d	d	ƒgks(J ‚t dddd}t|d	ƒ}td	|ƒ}t| d	ƒ}td	| ƒ}t|d ƒ}t |¡sRJ ‚t ||¡s[J ‚t ||||¡sfJ ‚t||||fƒD ]}tj|Ž du szJ ‚qnt ||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 sJ ‚ˆjsJ ‚|jdu s'J ‚ˆjd u s/J ‚ˆjdu s7J ‚|js=J ‚| dd¡tddƒksKJ ‚ˆ dd¡ˆksVJ ‚| ttd'd'ƒ¡ˆksdJ ‚ˆ |¡ˆ |¡ dd¡ksuJ ‚ˆ   |¡ˆ |¡ 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d/d„ƒ td
d	ƒ‰ˆ td ¡td	d
ƒks/J ‚ˆ td ˆ¡ˆks<J ‚td
d
ƒ‰ˆ dd¡tddƒksOJ ‚ˆ $d
d¡tddƒks]J ‚ˆ $d
¡tdd
ƒksjJ ‚ˆj$d
d0td
dƒksxJ ‚ˆj$ˆj%Ž tddƒks†J ‚tt‡fd1d„ƒ tt‡fd2d„ƒ 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 )3NÚxT©ÚrealÚyÚx1Úx2Úy1Úy2r   é   )Zslopec                   S   s   t dƒS ©Nr#   ©r   © r&   r&   úA/usr/lib/python3/dist-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(   #   r.   çfffffA@r+   é©  é   r-   c                      s   t  ˆ d¡S ©Nr   )r   Údistancer&   ©Úp1r&   r'   r(   /   ó    c                      s   t  ˆ tƒ ¡S ©N)r   r3   r   r&   r4   r&   r'   r(   0   r.   c                      s   t  ˆ ˆ ¡S r7   )r   Úcanberra_distancer&   ©Úp3r&   r'   r(   9   r6   é   )ÚdimFc                      s
   t  ˆ ¡S r7   )r   Úis_collinearr&   )Úliner&   r'   r(   H   r)   c                      s
   ˆ  ˆ ¡S r7   )r=   r&   )r>   Úp1_1r&   r'   r(   I   r)   )r   Zpositiveé   ©r#   r#   )r-   r-   )r-   r#   )éÿÿÿÿrB   )r   rB   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(   e   s     g      à?çš™™™™™É?c                   S   s   t ddƒd S ©Nr   é
   r%   r&   r&   r&   r'   r(   |   r.   rB   ©Úevaluatec                   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 r2   )r   Úprojectr&   r4   r&   r'   r(   ‰   s    )r   c                      ó
   ˆ   ˆ ¡S r7   ©Ú	transformr&   r9   r&   r'   r(   —   r)   c                      ó   ˆ   tddgddggƒ¡S ©Nr#   r   ©rM   r   r&   ©Úpr&   r'   r(   ˜   ó    )'r   r   ÚHalfr   r
   r   r   Ú	TypeErrorÚ
ValueErrorr   r   ÚmidpointÚoriginr3   r   Útaxicab_distancer8   r=   r   ÚUserWarningÚintersectionÚis_concyclicr   rC   r   Zorthogonal_directionZis_zeroZ
is_nonzeror   r   r   Ú__radd__Ú__rsub__ÚevalfÚnrJ   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>   rR   r5   r?   r:   r'   Ú
test_point
   sì   




&**


ÿ.


 B"$8
ÿ

rj   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ƒ 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 ˆ ||¡sAJ ‚td(d)d*ƒ‰tj‡fd+d,„tdƒD ƒŽ sXJ ‚t tˆ| ƒtˆˆ|  ƒt| ˆd ƒ¡du sqJ ‚| tˆ |ƒ¡tdddƒgksƒJ ‚| ddd¡|ksJ ‚| ddd|¡tdddƒks J ‚| ddd|
¡|ks­J ‚tg d-¢g d.¢g d/¢g d0¢gƒ}ˆ   |¡ˆ ksÇJ ‚tg d1¢g d2¢g d3¢g d0¢gƒ}ˆ   |¡tdddƒksåJ ‚tt‡ fd4d„ƒ tt‡ fd5d„ƒ ˆ  !|¡dksJ ‚tddddƒ}ttƒ ˆ | tddddƒksJ ‚W d   ƒ n	1 s&w   Y  tddddƒ}ttƒ ˆ | tddddƒksEJ ‚W d   ƒ d S 1 sQw   Y  d S )6Nr   Tr   r   r   r    Úx3r!   r"   Úy3r   r#   r-   r/   r+   r0   r1   Fr@   rD   c                   S   s   t dddƒd S rE   ©r   r&   r&   r&   r'   r(   Õ   ó    ztest_point3D.<locals>.<lambda>)r   r   r   )r#   r#   r#   )r   r#   r-   rB   r;   rG   c                   S   s   t dddƒd S )Nr#   r-   r+   rm   r&   r&   r&   r'   r(   è   rn   )Úzçš™™™™™¹?Úignore)rH   Úon_morphc                      s   t  ˆ ˆ¡S r7   ©r   Úare_collinearr&   )rR   r   r&   r'   r(   û   r6   )r#   r-   r   )r#   r+   r   ©r#   r-   r+   c                   S   s   t  dd¡S )N©r#   r-   ru   )r   Úare_coplanarr&   r&   r&   r'   r(     r6   )r#   r#   r   )r#   r-   r#   )r-   r#   r   )r+   r#   r-   c                    s   g | ]}ˆ   d | |f¡‘qS )rB   )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                      rK   r7   rL   r&   rQ   r&   r'   r(      r)   c                      rN   rO   rP   r&   rQ   r&   r'   r(   !  rS   )"r   r   rT   r   r   r   r   r   rW   r3   r   ro   rt   r[   r   rV   Úcoordinatesr_   r`   r   r   ra   Úis_FloatÚlengthrU   rw   r   rZ   r   Úranger   r   rM   Úequals)r   r   r    rk   r!   r"   rl   rb   r5   rc   r:   rd   re   r?   rf   rg   rh   ri   ÚcZplanar2Zplanar3ÚidentityZtransZp_4dZp_4d3dr&   )rR   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dksBJ ‚| jd	ksIJ ‚|jd
ksPJ ‚| jdksWJ ‚d S )Nr#   r@   r;   ç      @)é   r+   é=   r-   é   )r#   r@   )r;   r…   )r#   r@   r#   r@   )r   r3   r   r   r   r}   Zbounds©r5   rc   r:   r&   r&   r'   Útest_Point2D/  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+   é   Frs   r‰   r&   r&   r'   Útest_issue_9214C  s   r   c                  C   sZ   t dddƒ} tddƒ}ttƒ |  |¡tdƒksJ ‚W d   ƒ d S 1 s&w   Y  d S )Nr#   r   r-   r@   )r   r   r   rZ   r3   r   ©r5   rc   r&   r&   r'   Útest_issue_11617K  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-   rB   r+   )r;   r@   r‹   iùÿÿÿr;   r@   r†   )r   rM   r   r   r   r   rQ   r&   r&   r'   Útest_transformS  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 )NrB   r   r#   r-   )r   r\   )r5   rc   r:   rd   r&   r&   r'   Útest_concyclic_doctest_bug^  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.rv   r#   r-   )r#   r+   r+   ru   )r#   r-   r+   r;   r;   )	r3   rC   rY   rW   r[   Údotr   Ú__add__Ú__sub__r\   r=   r   r   rp   FrG   g      $@g        rD   rq   ©r<   rr   )rp   rD   r   r   c                 s   ó    | ]}|j V  qd S r7   ©r~   rx   r&   r&   r'   Ú	<genexpr>¤  ó   € z!test_arguments.<locals>.<genexpr>Nc                 s   r–   r7   r—   rx   r&   r&   r'   r˜   ¦  r™   Úerrorc                   S   ó   t dddddS )Nr#   r+   rš   r•   r%   r&   r&   r&   r'   r(   ¬  rn   z test_arguments.<locals>.<lambda>c                   S   r›   )Nr#   r+   Úunknownr•   r%   r&   r&   r&   r'   r(   ®  rn   c                   S   s   t tƒ tƒ ƒS r7   )r   r	   r&   r&   r&   r'   r(   °  r.   )r   r   r   r   r   Úgetattrr   ra   Úallr   rV   rU   )Z	singles2dZ
singles2d2Z	doubles2dZp2dZ	singles3dZ	doubles3dZp3dZ	singles4dZ	doubles4dZp4dZtest_singleZtest_doublerR   Úfuncr   rh   ÚuZu4r&   r&   r'   Útest_argumentse  sx   




ÿÿ
ÿÿ
ÿÿ
"

"r¡   c                   C   s.   t ddƒjt tdƒd tdƒd ƒksJ ‚d S rI   )r   Z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   rA   )r   r’   r
   r&   r&   r&   r'   r(   ·  s    ztest_dot.<locals>.<lambda>)r   rU   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   rq   )rr   )r   Z_normalize_dimensionr&   r&   r&   r'   Útest__normalize_dimensionº  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#   r@   r+   g333333@r-   iôÿÿÿiñÿÿÿéüÿÿÿé)   éûÿÿÿé   )r   Zdirection_cosiner   r   rŽ   r&   r&   r'   Útest_direction_cosineÂ  s   "086>4r©   N),Zsympyr   r   r   r   r   r   r   r	   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   rj   r„   rŠ   r   r   r   r‘   r¡   r¢   r£   r¤   r©   r&   r&   r&   r'   Ú<module>   s*   (    M