o
    oÇ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   é   )Úslopec                   S   s   t dƒS ©Nr%   ©r   © r)   r)   ús/var/www/html/construction_image-detection-poc/venv/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+   )   r1   çfffffA@r.   é©  é   r0   c                      s   t  ˆ d¡S ©Nr   )r   Údistancer)   ©Úp1r)   r*   r+   5   ó    c                      s   t  ˆ tƒ ¡S ©N)r   r6   r   r)   r7   r)   r*   r+   6   r1   c                      s   t  ˆ ˆ ¡S r:   )r   Úcanberra_distancer)   ©Úp3r)   r*   r+   ?   r9   F©Útest_stacklevelé   )Údimc                      s
   t  ˆ ¡S r:   )r   Úis_collinearr)   )Úliner)   r*   r+   N   r,   c                      s
   ˆ  ˆ ¡S r:   )rB   r)   )rC   Úp1_1r)   r*   r+   O   r,   )Úpositiveé   ©r%   r%   )r0   r0   )r0   r%   )éÿÿÿÿrH   )r   rH   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+   ƒ   r1   rH   r   c                   S   s   t ddƒd S ©Nr%   r0   r(   r)   r)   r)   r*   r+   ‹   r1   )r   r%   )r%   r   c                      s   t  ˆ t ddƒ¡S r5   )r   Úprojectr)   r7   r)   r*   r+      s    )r    c                      ó
   ˆ   ˆ ¡S r:   ©Ú	transformr)   r<   r)   r*   r+   ž   r,   c                      ó   ˆ   tddgddggƒ¡S ©Nr%   r   ©rQ   r   r)   ©Úpr)   r*   r+   Ÿ   ó    )'r	   r   ÚHalfr   r   r    r   Ú	TypeErrorÚ
ValueErrorr   r   ÚmidpointÚoriginr6   r   Útaxicab_distancer;   rB   r   ÚUserWarningÚintersectionÚis_concyclicr   rI   r   Úorthogonal_directionÚis_zeroÚ
is_nonzeror   r   r   Ú__radd__Ú__rsub__ÚevalfÚnrN   r   ÚargsÚaffine_rank)r   r    r!   r"   r#   r$   ÚhalfÚp2Úp4Úp5Úp1_2Úp1_3Úx_posÚp2_1Úp2_2Úp2_3Úp2_4Úp2_5ÚptsÚaÚbr)   )rC   rV   r8   rD   r=   r*   Ú
test_point   sð   




&**

ÿ0ÿ


 B"$8
ÿ

ry   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%   r0   r2   r.   r3   r4   FrF   rJ   c                   S   s   t dddƒd S rK   ©r   r)   r)   r)   r*   r+   Ü   ó    ztest_point3D.<locals>.<lambda>)r   r   r   )r%   r%   r%   )r   r%   r0   rH   r@   r   c                   S   s   t dddƒd S )Nr%   r0   r.   r|   r)   r)   r)   r*   r+   ï   r}   )Úzçš™™™™™¹?Úignore)r   Úon_morphc                      s   t  ˆ ˆ¡S r:   ©r   Úare_collinearr)   )rV   r   r)   r*   r+     r9   )r%   r0   r   )r%   r.   r   ©r%   r0   r.   r>   c                   S   s   t  dd¡S )N©r%   r0   r„   )r   Úare_coplanarr)   r)   r)   r*   r+   	  r9   )r%   r%   r   )r%   r0   r%   )r0   r%   r   )r.   r%   r0   c                    s   g | ]}ˆ   d | |f¡‘qS )rH   )Ú
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                      rO   r:   rP   r)   rU   r)   r*   r+   '  r,   c                      rR   rS   rT   r)   rU   r)   r*   r+   (  rW   )"r	   r   rX   r   r    r   r   r   r[   r6   r   r~   rƒ   r_   r   rZ   Úcoordinatesrf   rg   r   r   rh   Úis_FloatÚlengthrY   r†   r   r^   r   Úranger   r   rQ   Úequals)r    r!   r"   rz   r#   r$   r{   rj   r8   rk   r=   rl   rm   rD   rn   ro   rw   rx   ÚcÚplanar2Úplanar3ÚidentityÚtransÚp_4dÚp_4d3dr)   )rV   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%   rF   r@   g      @)é   r.   é=   r0   é   )r%   rF   )r%   rF   r%   rF   )r   r6   r   r   r    r   r   Úbounds©r8   rk   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%   r0   r.   é   Fr‚   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   r0   Fr>   rF   )r   r   r   r^   r6   r   ©r8   rk   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%   r0   rH   r.   )r@   rF   r    iùÿÿÿr@   rF   rš   )r   rQ   r   r   r   r   rU   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 )NrH   r   r%   r0   )r   r`   )r8   rk   r=   rl   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.r…   r%   r0   )r%   r.   r.   r„   )r%   r0   r.   r@   r@   )	r6   rI   r]   r[   r_   Údotr‘   Ú__add__Ú__sub__r`   rB   r   r   r   Fr   g      $@rJ   r€   ©rA   r   )r   rJ   r   r   c                 s   ó    | ]}|j V  qd S r:   ©rŽ   rˆ   r)   r)   r*   Ú	<genexpr>«  ó   € z!test_arguments.<locals>.<genexpr>Nc                 s   r«   r:   r¬   rˆ   r)   r)   r*   r­   ­  r®   Úerrorc                   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   r°   )Nr%   r.   Úunknownrª   r(   r)   r)   r)   r*   r+   µ  r}   c                   S   s   t tƒ tƒ ƒS r:   )r   r   r)   r)   r)   r*   r+   ·  r1   )r   r   r   r   r   Úgetattrr	   rh   Úallr   rZ   rY   )Ú	singles2dÚ
singles2d2Ú	doubles2dÚp2dÚ	singles3dÚ	doubles3dÚp3dÚ	singles4dÚ	doubles4dÚp4dÚtest_singleÚtest_doublerV   Úfuncr   rw   ÚuÚ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 rM   )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%   r0   )r   r   rG   )r   r§   r   r)   r)   r)   r*   r+   ¾  s    ztest_dot.<locals>.<lambda>)r   rY   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%   r0   r.   r@   r   r€   )r   )r   Ú_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%   r0   )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%   rF   r.   g333333@r0   iôÿÿÿiñÿÿÿéüÿÿÿé)   éûÿÿÿé   )r   Údirection_cosiner   r   r£   r)   r)   r*   Útest_direction_cosineÏ  s   "086>4rÏ   N)4Úsympy.core.basicr   Úsympy.core.numbersr   r   r   Úsympy.core.parametersr   Úsympy.core.singletonr   Úsympy.core.symbolr	   Úsympy.core.sympifyr
   Ú(sympy.functions.elementary.miscellaneousr   Úsympy.geometryr   r   r   r   r   r   Úsympy.geometry.entityr   r   r   r   Úsympy.matricesr   Úsympy.utilities.iterablesr   r   r   Úsympy.utilities.miscr   Úsympy.testing.pytestr   r   ry   r™   rŸ   r¢   r¤   r¥   r¦   rÃ   rÅ   rÆ   rÈ   rÉ   rÏ   r)   r)   r)   r*   Ú<module>   s8       M