U
    Ç-e-’  ã                   @   s”  d dl mZmZmZmZ d dlmZ d dlmZ d dl	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 d d	lmZ d d
lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"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.m/Z/ e
dddZ0e
dddZ1e
dddZ2e
dddZ3e
dddZ4e
dddZ5e
dddZ6eddd\Z7Z8edddZ9dd„ Z:dd„ Z;dd„ Z<d d!„ Z=d"d#„ Z>d$d%„ Z?d&d'„ Z@d(d)„ ZAd*d+„ ZBd,d-„ ZCd.d/„ ZDd0d1„ ZEd2d3„ ZFd4d5„ ZGd6d7„ ZHd8d9„ ZId:d;„ ZJd<d=„ ZKd>d?„ ZLd@dA„ ZMdBdC„ ZNdDdE„ ZOdFdG„ ZPdHdI„ ZQdJdK„ ZRdLdM„ ZSdNdO„ ZTdPdQ„ ZUdRdS„ ZVdTdU„ ZWdVdW„ ZXdXdY„ ZYdZd[„ ZZd\d]„ Z[d^d_„ Z\d`da„ Z]dbdc„ Z^ddS )eé    )ÚFloatÚRationalÚooÚpi)ÚEq)ÚS)ÚSymbolÚsymbols)Úsqrt)ÚacosÚcosÚsin)ÚEmptySet)Úsimplify)Útan)ÚCircleÚGeometryErrorÚLineÚPointÚRayÚSegmentÚTriangleÚintersectionÚPoint3DÚLine3DÚRay3DÚ	Segment3DÚPoint2DÚLine2D)ÚUndecidable)Ú_asa)Úcartes)ÚraisesÚwarnsÚxT©ÚrealÚyÚzÚkÚx1Úy1Útúa,bÚmc                      sz  ddl m‰m‰m‰ m‰ tdˆ ˆ d ƒttddƒtddƒƒksFt‚tdˆ dˆ  d ƒttdt	d	dƒƒtdt	d
dƒƒƒks„t‚tdˆ  ˆ d dddttddƒtddƒƒks¸t‚tdˆ ˆ ƒttddƒtddƒƒksât‚tˆˆ ƒttddƒtdd	ƒƒks
t‚tt
dˆ  ˆ dƒdˆdttddƒtddƒƒksBt‚tˆd ƒttddƒtddƒƒksjt‚tdˆ d ˆdttddƒtddƒƒksšt‚tˆƒttddƒtddƒƒks¾t‚tdˆ ˆdttddƒtddƒƒksêt‚tˆˆdttddƒtddƒƒkst‚tt‡‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡‡fdd„ƒ d S )Nr   )r$   r'   ÚaÚbé   é   iîÿÿÿé   iëÿÿÿé   éÿÿÿÿéüÿÿÿr/   r0   ©r$   r'   éýÿÿÿé   )r'   )r$   c                      s   t ˆ ˆ ƒS ©N©r   © r7   r<   ú_/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/geometry/tests/test_line.pyÚ<lambda>/   ó    z+test_object_from_equation.<locals>.<lambda>c                      s   t ˆ ˆ dddS ©Nr/   r0   r7   r;   r<   ©r/   r0   r<   r=   r>   0   r?   c                      s   t ˆˆ  ƒS r:   r;   r<   r7   r<   r=   r>   1   r?   c                      s   t ˆˆ  dddS r@   r;   r<   rA   r<   r=   r>   2   r?   c                      s   t ˆ d d ˆ ƒS )Nr3   r9   r;   r<   r7   r<   r=   r>   3   r?   )Z	sympy.abcr$   r'   r/   r0   r   r   r   ÚAssertionErrorr   r   r"   Ú
ValueErrorr<   r<   )r/   r0   r$   r'   r=   Útest_object_from_equation   s4    . ÿ
 ÿ
*( ÿ(0$,(rD   c                 C   s&   t dƒ}| | |   k o |k S   S )z.Test if two floating point values are 'equal'.z1.0E-10)r   )r/   r0   Zt_floatr<   r<   r=   Úfeq6   s    rE   c               	   C   s  t ddddƒ} | j}| j}tt tt ddƒt ddƒƒtt ddƒt ddƒƒ¡ ¡ t ¡ d ƒs`t‚t| |ƒ t||ƒ¡td ks‚t‚t	dddƒ}t
 t
|t	dddƒƒt
|t	dddƒƒ¡ttdƒd ƒksÊt‚t
 t
|t	dddƒƒt
t	dddƒ|ƒ¡ttdƒ d ƒks
t‚d S )Nr3   r9   r1   é   r   r4   )r   Zorthogonal_directionÚoriginrE   r   Zangle_betweenZevalfr   rB   r   r   r   r
   )r/   r0   Úor(   r<   r<   r=   Útest_angle_between<   s(    ÿ
ÿ"ÿÿÿÿrI   c                  C   s`   t ddd} t dtd d}|  |¡t d ks4t‚| | ¡td ksJt‚|  | ¡dks\t‚d S )N©r   r   r   ©Zangle©r3   r9   r9   )r   r   Zclosing_anglerB   rA   r<   r<   r=   Útest_closing_angleK   s
    rM   c                  C   sR   t tddƒtddƒƒ} t tddƒtddƒƒ}|  |¡tdtdƒ d ƒksNt‚d S )Nr3   r9   r1   r4   )r   r   Zsmallest_angle_betweenr   r
   rB   rA   r<   r<   r=   Útest_smallest_angleS   s    rN   c                  C   sv   t tddƒtddƒƒ} |  ¡ dks&t‚ttddƒtddƒƒ} |  ¡ dksLt‚ttddƒtddƒƒ} |  ¡ dksrt‚d S )	Nr3   r9   zï<path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 1.00000000000000,1.00000000000000 L 1.00000000000000,2.00000000000000" marker-start="url(#markerReverseArrow)" marker-end="url(#markerArrow)"/>r   zš<path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 1.00000000000000,0 L 1.00000000000000,1.00000000000000" />r1   r4   zé<path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 2.00000000000000,3.00000000000000 L 3.00000000000000,5.00000000000000" marker-start="url(#markerCircle)" marker-end="url(#markerArrow)"/>)r   r   Z_svgrB   r   r   )r/   r<   r<   r=   Útest_svgY   s    rO   c                  C   sš  t tdddƒtdddƒƒ} ttttƒtttƒƒ}| ¡ |ks@t‚tdt	d d ¡ tt
d t
d ƒksjt‚tddƒ ¡ tdt
 ddt
  ƒks’t‚|  |  ¡ ¡|  ¡ ks¬t‚tdddd	gd
 ¡ tt
d dt
 d d	t
 d ƒksæt‚ttdddƒtdddƒƒjttjtjtjƒkst‚tttttƒttttƒƒjtd	ƒttt d ƒ ksTt‚tddƒ ¡ tt
d dt
 d d	t
 d ƒksˆt‚ttdd„ ƒ d S )Nr   r3   ©r3   r3   rF   rK   ©r9   r1   r9   ©r3   r3   r3   r1   ©Údirection_ratio)r9   r1   rF   c                   S   s   t tdfdƒ t¡S )Nr3   rQ   )r   r$   Úarbitrary_pointr<   r<   r<   r=   r>   q   r?   z&test_arbitrary_point.<locals>.<lambda>)r   r   r   r   r*   r+   rU   rB   r   r   r,   r   Úperpendicular_segmentr   r   Úmidpointr   ÚHalfÚlengthr
   r"   rC   ©Úl1Úl2r<   r<   r=   Útest_arbitrary_pointb   s&    ÿ(ÿÿ
:ÿ
r]   c               
   C   s¾   t tddƒtddƒƒ} t tttƒttdt ƒƒ}t  | ¡dksBt‚t  | |¡sRt‚t  | | | |¡sft‚t  | |t tdtƒttddƒtƒƒ¡st‚t  | t tddƒtt tƒƒ|¡dksºt‚d S )Nr   r3   Fr4   r8   )r   r   r*   Úare_concurrentrB   r   rZ   r<   r<   r=   Útest_are_concurrent_2dt   s    *r_   c               
   C   sä   t dddƒ} t| t dddƒƒ}tt dddƒt dddƒƒ}tt dddƒt dddƒƒ}t |¡dksdt‚t |tt tttƒt tttƒƒ¡dksŽt‚t |t| t tttƒƒtt tttƒt tdt dƒƒ¡dksÌt‚t ||¡dksàt‚d S ©Nr   r3   FT)r   r   r   r^   rB   r*   r+   )Úp1r[   Z
parallel_1Z
parallel_2r<   r<   r=   Útest_are_concurrent_3d~   s    *ÿÿrb   c                  C   s€  ddl m}  dddgtddƒf}| |dƒ}ttddƒtddƒƒ}dddd	gtddd
ƒf}| |dƒ}ttdddƒtdddƒƒ}dddddgtddddƒf}| |dƒ}ttdddd	ƒtddddƒƒ}	ddddddddg}
|D ]}t|Ž  qØ|
D ]}|D ]}t||ƒ|ƒ qòqê|D ]}t|Ž  q|
D ] }|D ]}t||ƒ|ƒ q(q |D ]}t|Ž  qF|
D ] }|D ]}t|	|ƒ|ƒ qbqZdS )z”Functions accepting `Point` objects in `geometry`
    should also accept tuples, lists, and generators and
    automatically convert them to points.r   )ÚsubsetsrL   r3   r1   r4   r9   )r3   r9   r1   rF   é   )r3   r9   r1   rF   é   ÚcontainsÚdistanceÚequalsÚparallel_lineÚperpendicular_linerV   Ú
projectionr   N)	Úsympy.utilities.iterablesrc   r   r   r   r   r   Úgetattrr   )rc   Z	singles2dZ	doubles2dZl2dZ	singles3dZ	doubles3dZl3dZ	singles4dZ	doubles4dZl4dZtest_singleÚpÚfuncr<   r<   r=   Útest_argumentsŠ   s:    


 ÿ
rp   c                  C   sÀ  t ddƒ} t ddƒ}t ddƒ}t| |ƒ ¡ }t|| ƒ ¡ }t| |ƒ}tt ttƒt tdt ƒƒ}t| t ddƒƒ}t| t ddƒƒ}tt ddƒ| ƒ}	t| |ƒ}
|
 ¡ }tdddtddƒksºt‚tdtdtddƒksÔt‚tdtdjdksêt‚tdt dtddƒkst‚t| |ƒ 	d	d¡t| t d	dƒƒks0t‚t| |ƒt| |ƒksJt‚t| |ƒt|| ƒksdt‚|tt ttƒt t
t
ƒƒks„t‚||ks’t‚t| |ƒt|| ƒks¬t‚t| |ƒ| ksÀt‚| |ksÎt‚| |ksÜt‚|
t| |ƒksðt‚tt ddƒt ddƒƒtt ddƒt dd	ƒƒks"t‚tt ddƒt dd	ƒƒtt ddƒt ddƒƒksTt‚tt ddƒt dd	ƒƒjtjksxt‚tt ddƒt dd	ƒƒjtjksœt‚tt ddƒt d
d	ƒƒjtjksÀt‚tt ddƒt d	dƒƒjtjksät‚tt ddƒt d	d	ƒƒjtjkst‚tt ddƒt d	dƒƒjtjks,t‚||
kdks>t‚t| |ƒ|
ksRt‚tt ttƒt tdt ƒƒt| t d
dƒƒks‚t‚t| |ƒjt tjtjƒks¢t‚t| t t tƒƒjtd	td	  ƒksÌt‚|jdksÜt‚|jtksìt‚|jdksüt‚t| t ddƒƒjtkst‚t|j| ¡ ƒj|jks6t‚t|	j|	 ¡ ƒj|	jksTt‚tt dd
ƒt| t ddƒƒ ¡ ƒjt| t ddƒƒjksŽt‚|jdksžt‚tt tft d td fƒjdksÈt‚t| t ddƒƒjdksät‚tdtd}| tdt d ¡tddƒkst‚| tdt d ¡tddƒks8t‚| tt d ¡tddƒksZt‚| ttd	 ¡tddƒkszt‚| tt d	 ¡tddƒksœt‚tddƒD ]}| ¡ |ks¦t‚q¦|j| jkrÜ|j| jksàt‚|j|jkrü|j|jks t‚| j|j  kr|jkrBn n | j|j  kr@|jksFn t‚t|
ƒtt|| ƒƒksbt‚|
 ¡ tddgkszt‚t| |ƒ ¡ tddgks˜t‚tdtd d ¡ tddgks¼t‚d S )Nr   r3   éÐ  rP   ©Úslope©r9   r9   rL   )r3   r3   r3   r9   r9   r5   éþÿÿÿFr4   ©r   r3   r   ©r3   r3   r   ©r3   r   r   rJ   rK   r1   rF   ©r5   r3   )r5   r5   )r3   r5   ©r   r3   ©r   r5   éûÿÿÿé
   ) r   r   Úrandom_pointr   r*   r   rB   r   ZboundsÚscaler+   Ú
xdirectionr   ÚZeroÚInfinityÚNegativeInfinityÚ
ydirectionrW   rX   rY   r
   rs   ÚsourceZcoefficientsr$   Úsubsr   Úranger'   ÚhashZplot_intervalr,   )ra   Úp2Zp10Zp_r3Zp_r4r[   Úl3Úl4Úr1Úr2Ús1Zp_s1ÚrÚindr<   r<   r=   Útest_basic_properties_2d¯   s€    




( 22$$$$$$0 *:*$$" "  Fr‘   c            	      C   s0  t dddƒ} t dddƒ}t tttƒ}t tdt dƒ}t| |ƒ}t||ƒ}t| t dddƒƒ}t| |ƒ}t| |ƒ}tddddgd	tt dddƒt dddƒƒksžt‚tdddd
gd	tt dddƒt dddƒƒksÎt‚tddddgd	tt dddƒt dddƒƒksþt‚tt dddƒt dddƒƒjdddgks*t‚tt| t dddƒƒƒt| t dddƒƒksXt‚ttt dddƒt dddƒƒƒt| t dddƒƒksŽt‚t| |ƒt|| ƒks¨t‚||ks¶t‚|t|t tttƒƒksÒt‚||ksàt‚tt dddƒt dddƒƒtt dddƒt dddƒƒkst‚tt dddƒt dddƒƒtt dddƒt dddƒƒksTt‚tt dddƒt dddƒƒjt	j
ks|t‚tt dddƒt dddƒƒjt	j
ks¤t‚tt dddƒt dddƒƒjt	j
ksÌt‚tt dddƒt dddƒƒjt	jksôt‚tt dddƒt dddƒƒjt	jkst‚tt dddƒt dddƒƒjt	jksDt‚tt dddƒt dddƒƒjt	jkslt‚tt dddƒt dddƒƒjt	jks”t‚tt dddƒt dddƒƒjt	jks¼t‚| |ksÊt‚| |ksØt‚|jdddgksît‚|jt t	jt	jt	jƒkst‚t| t dddƒƒjt	jks,t‚d S )Nr   r3   r5   r4   rR   r9   r1   rF   rS   re   rd   é   ru   )r   r*   r   r   r   rB   Zdirection_cosiner+   r€   r   r‚   r„   Z
zdirectionrƒ   r   rT   rW   rX   )	ra   r‰   Úp3Zp5r[   rŠ   rŒ   Úr3rŽ   r<   r<   r=   Útest_basic_properties_3dü   sF    



000,.6::(((((((((r•   c               	   C   sŒ  t ddƒ} t| t ddƒƒ}t| tdddƒƒ}t| tdddƒƒ}t| tdddƒƒ}tt ddƒt ddƒƒ}t dtt d ƒtdtfdtfƒksŽt‚t tt d dƒttdftdfƒks¶t‚tdddƒt	ddƒksÐt‚tdddƒt	ddƒksêt‚t	tdddƒtdddƒƒ 
g ¡d	kst‚t	tdddƒtdddƒƒ 
t	tdddƒtdddƒƒ¡d
ksTt‚| 
t ddƒ¡d	ksnt‚| 
d¡d	ks‚t‚| 
d¡d
ks–t‚| 
| ¡d	ksªt‚| 
d¡d	ks¾t‚| 
d¡d
ksÒt‚| 
tddƒ¡d	ksìt‚| 
tddƒ¡d
kst‚| 
tddƒ¡d	ks t‚| 
tddƒ¡d
ks:t‚| 
t	| tdddƒƒ¡d	ks\t‚| 
t	tdddƒtdddƒƒ¡d
ks†t‚| 
tdddƒ¡d	ks¢t‚| 
tdddƒ¡d	ks¾t‚ttdddƒtdddƒƒ 
g ¡d
ksèt‚tdtttfƒ 
dt dt dt f¡st‚ttd
d. t| tdddƒƒ 
t ddƒ¡d
ksLt‚W 5 Q R X ttd
d  | 
t ddƒ¡d
ks~t‚W 5 Q R X d S )Nr   rF   r5   r3   r1   r9   rv   rx   TFrz   rJ   rP   )r3   r1   rt   rL   )r9   r4   )r1   r1   )r1   r4   éöÿÿÿ©r   r   r   ©Ztest_stacklevelç      ð?)r   r   r   r   r   r/   r0   r   rB   r   rf   r   r$   r'   r(   r#   ÚUserWarning)ra   r   rŒ   r   r”   Úlr<   r<   r=   Útest_contains)  sH    
((*ÿÿ
"**.2rœ   c                  C   sf   t dƒ\} }}}tt| |ƒt||ƒƒ}t| tddƒ |d  |tddƒ |d  ƒ}| |¡sbt‚d S )Nz
u, v, w, zr9   r1   )r	   r   r   r   rf   rB   )ÚuÚvÚwr(   r›   rn   r<   r<   r=   Útest_contains_nonreal_symbolsS  s    .r    c                  C   sL  t ddƒ} t ddƒ}tj}tt ddƒt ddƒƒ}tt ||ƒt ddƒƒ}t| |ƒ}| t ddƒ¡dksht‚| d¡dkszt‚| t ddƒ¡d| d ksšt‚| t tdƒd tdƒd ƒ¡d| ksÆt‚t| |ƒ t ddƒ¡t	dƒksèt‚t| |ƒ t ddƒ¡t	dƒkst‚t| |ƒ t ddƒ¡dks,t‚t| |ƒ d¡t	dƒksJt‚tddƒ | ¡dksdt‚tddƒ |¡dks~t‚tdd	ƒ | ¡dks˜t‚tdd	ƒ |¡dks²t‚| t ddƒ¡t	dƒksÐt‚| t ddƒ¡dksêt‚| t ddƒ¡t	dƒkst‚td
dƒ t ddƒ¡dt	dƒ d ks4t‚| d
¡dksHt‚d S )Nr   r3   rJ   r9   r1   r5   ry   rz   ©r3   r   rP   rt   ç      ø?rF   )
r   r   rX   r   r   rg   rB   r   r   r
   )ra   r‰   ZhalfrŽ   Ús2r   r<   r<   r=   Útest_distance_2dZ  s.    


 ,"$ ,r¤   c                	   C   s4   t tdd tddƒtddƒks&t‚W 5 Q R X d S )NFr˜   rP   )r9   r3   r9   rw   )r#   rš   r   rB   r<   r<   r<   r=   Útest_dimension_normalizationw  s    r¥   c                  C   sŒ  t dddƒt dddƒ } }t tdƒd tdƒd tdƒd ƒ}tt dddƒt dddƒƒ}tt tjtjtjƒt dddƒƒ}t| |ƒ}| | ¡dks”t‚| | ¡tdƒd ks®t‚| |¡dtdƒ d ksÌt‚| d¡dksÞt‚| d¡tdƒd ksøt‚| | ¡dkst‚| | ¡tdƒd ks(t‚| |¡dtdƒ d ksHt‚| d¡dks\t‚| d¡tdƒd ksxt‚t	| |ƒ t dddƒ¡dtdƒ d ks¦t‚t	| |ƒ t dddƒ¡dtdƒ d ksÔt‚t	| |ƒ t dddƒ¡dksöt‚t	| |ƒ d¡dkst‚t	| |ƒ d	¡dtdƒ d ks6t‚t	dd
ƒ | ¡dksPt‚t	dd
ƒ |¡tdƒksnt‚t	ddƒ | ¡dksˆt‚t	ddƒ |¡tdƒks¦t‚| t dddƒ¡tdƒksÆt‚| t dddƒ¡dksât‚| d¡tdƒksút‚| d¡dkst‚tddƒ d¡dtdƒ d ks4t‚tddƒ t dddƒ¡tdƒd ks^t‚tddƒ t dddƒ¡tdƒd ksˆt‚d S )Nr   r3   r1   r9   rd   r—   r5   )r9   r9   r9   )r3   r5   r3   rv   rx   )r5   r5   r5   rR   )r3   r3   r9   )r5   r5   r9   rF   r¢   r8   é	   éN   )
r   r   r   r   rX   r   rg   rB   r
   r   )ra   r‰   r“   rŽ   r£   r   r<   r<   r=   Útest_distance_3d|  s>    $ 
 .."& &*r¨   c                  C   s  t ddƒ} t ddƒ}t| |ƒ}tdtd}tt ttƒt tdt ƒƒ}| | j¡ tt ddƒt ddƒƒ¡slt‚| | ¡ tt ddƒt ddƒƒ¡s’t‚tt ttƒt ttƒƒ 	t t tƒ¡ tt t tƒt t dt t ƒƒ¡sÞt‚| 	| j¡ tt ddƒt ddƒƒ¡st‚| 	| ¡ tt ddƒt ddƒƒ¡s0t‚| 
t ddƒ¡dttd ƒ ttd d ƒ   d¡slt‚t| tdddƒƒ t ddƒ¡d	ks”t‚ttdddƒtdddƒƒ ttd
ddƒtdddƒƒ¡dksÔt‚ttdddƒtdddƒƒ t| tdddƒƒ¡d	kst‚t| tdddƒƒ t ddƒ¡d	ks4t‚t| tdddƒƒ t| tdddƒƒ¡dksdt‚tdttfƒ t dddƒ¡ ttdddƒttjtjdƒƒ¡s¦t‚tdttfƒ t dddƒ¡ tdtjtjfƒ¡sÜt‚t| tdddƒƒ t ddƒ¡d	kst‚d S )Nr   r3   )r   r4   rr   r5   r9   r1   r™   Fr|   TrJ   rz   )r   r   r.   r*   rj   Úargsrh   rB   r+   ri   rg   Úabsr
   r   r   r   r,   r   rX   rV   r   )ra   r‰   r[   r\   rŠ   r<   r<   r=   Útest_equals£  s.    


(&$ ÿ*(<(@8(0ÿ
6r«   c                  C   s  t ddƒ} t ddƒ}t| |ƒ}tt ttƒt tdt ƒƒ}t| ¡ ƒtt tt fksXt‚t| ¡ ƒtt tt fksxt‚t| ¡ ƒtt tt fks˜t‚t| ¡ ƒtt tt fks¸t‚t| t ddƒƒjttdtksÚt‚t| t ddƒƒ ¡ tksöt‚tt ddƒt ddƒƒ ¡ td kst‚t|t ddƒƒ ¡ td ks@t‚tt tttƒt t	t	t	ƒƒ ¡ t t t t
 fksxt‚tt dddƒt dddƒƒ ¡ t t d t t
 d fks¸t‚tt dddƒt dddƒƒ ¡ td t t
 d fksòt‚tt dddƒt dddƒƒ ¡ td t t
 d fks,t‚tt dddƒt dddƒƒ ¡ t t d t
d fksft‚tt dddƒt dddƒƒ ¡ td td fksšt‚tt dddƒt dddƒƒ ¡ td t
d fksÎt‚tt dddƒt dddƒƒ ¡ td t
d fkst‚d S )Nr   r3   r7   r9   r1   rF   )r   r   r*   r   Zequationr$   r'   rB   r   r+   r(   )ra   r‰   r[   rŠ   r<   r<   r=   Útest_equation½  sH    


    "("ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿr¬   c               
   C   sª  t ddƒ} t ddƒ}t ttƒ}t ttƒ}t| |ƒ}tt ddƒt ddƒƒ}tt ddƒt ddƒƒ}tt ddƒt ddƒƒ}t| |ƒ}tt ddƒt ddƒƒ}	tt ddƒt ddƒƒ}
t| |ƒ}tt ddƒt ddƒƒ}tt ddƒt ddƒƒ}t|| ƒ| gksôt‚t|t tdt ƒƒg kst‚t|t||ƒƒ|gt||ƒgfks:t‚t|| t tdt ƒ¡ƒg ks^t‚t||ƒ|gkstt‚t||ƒ|gksŠt‚t||ƒ|gks t‚t||ƒ|gks¶t‚ttt dd	ƒt d	d	ƒƒtt d
d
ƒt d
dƒƒƒg ksît‚t||ƒ|gkst‚t|tt ddƒt ddƒƒƒtt ddƒt ddƒƒgks>t‚t|tt ddƒt ddƒƒƒt ddƒgkslt‚t|tt ddƒt ddƒƒƒtt ddƒt ddƒƒgks¦t‚| |¡|gks¼t‚| tt ddƒt ddƒƒ¡g ksât‚| tt ddƒt ddƒƒ¡t| t ddƒƒgkst‚| t|| ƒ¡|gks2t‚t|| ƒ |	¡g ksLt‚| |
¡|
 |¡  krr|
gksxn t‚t	ddƒ t	ddƒ¡t	ddƒgks t‚t	ddƒ t	ddƒ¡t	ddƒgksÈt‚tt ddƒt ddƒƒ tt ddƒt ddƒƒ¡tt ddƒt ddƒƒgkst‚t
ddƒ t
ddƒ¡t
ddƒgks<t‚t
ddƒ t
ddƒ¡t
ddƒgksdt‚t
ddƒ t
ddƒ¡tdƒgksŠt‚t
ddƒ t
ddƒ¡t
ddƒgks²t‚t
ddƒ t
ddƒ¡t
ddƒgksÚt‚t
ddƒ t
ddƒ¡tddƒgkst‚| tt ddƒt ddƒƒ¡t ddƒgks0t‚| tt ddƒt ddƒƒ¡tt ddƒ|ƒgksdt‚| tt ddƒt ddƒƒ¡g ksŠt‚| tt ddƒ| ƒ¡| gks¬t‚| tt ddƒt ddƒƒ¡t| t ddƒƒgksàt‚| tt ddƒt ddƒƒ¡g kst‚| |¡|gkst‚| |¡|gks2t‚tdddƒtt ddƒt ddƒt dtdt d ƒ tdt d ƒ dtdƒ tdt d ƒ tdt d ƒ ƒƒksªt‚tddƒ tddƒ¡t ddƒgksÒt‚tddƒ tddƒ¡t ddƒgksút‚tddƒ tddƒ¡t ddƒgks"t‚tddƒ tddƒ¡t ddƒgksJt‚tddƒ tddƒ¡d ksjt‚tddƒtddƒks„t‚| tdd!ƒ¡t ddƒgks¦t‚d S )"Nr   r3   r1   rF   r9   ç      à?g      Ð?r–   r}   r|   r4   r5   rJ   )r1   r   r¡   )r9   r   )rF   r   )r4   r   ©ru   r   r¢   éx   r’   é4   r6   é   éZ   é-   rP   rL   )r}   r}   rt   T)rF   rF   )r   r*   r+   r   r   r   r   rB   ri   r   r   r   Úasar   r   r   r   r
   rf   )ra   r‰   r“   Zp4r[   rŠ   rŒ   r   Zr4Zr6Zr7rŽ   r£   Zs3r<   r<   r=   Útest_intersection_2dß  s¸    






($8:.:&4,((,ÿ

ÿ
ÿ

ÿ
ÿ

ÿÿ

ÿ
ÿ

ÿ
ÿ

ÿ
ÿ
.4&"4&
$*ÿýÿ
(((( rµ   c                  C   s†   t ttddƒ ƒ} tdƒ}| d }d|  | |  d|  d| |  |d  g\}}ttddƒtdtdƒ ƒƒ t||ƒ¡d	ks‚t‚d S )
Né   r³   r1   r9   r’   é   r   r3   T)r   r   r   r
   r   r   rf   rB   )Zx0r*   Zx2r$   r'   r<   r<   r=   Útest_line_intersectionI  s
    0r¸   c                  C   s.  t dddƒ} t dddƒ}t| |ƒ}tt dddƒt dddƒƒ}tt dddƒt dddƒƒ}tt dddƒt dddƒƒ}tt dddƒt dddƒƒ}t|| ƒ| gksžt‚t|t tdt dƒƒg ks¼t‚t|| | ¡ƒtt dddƒt dddƒƒgksìt‚t||ƒ|gkst‚t||ƒ|gkst‚t||ƒ|gks.t‚t|tt dddƒt dddƒƒƒt dddƒgksbt‚t|tt dddƒt dddƒƒƒtt dddƒt dddƒƒgks¤t‚ttt dddƒt dddƒƒtt dddƒt dddƒƒƒt dddƒgksît‚t|tt dddƒt dddƒƒƒtt dddƒt dddƒƒgks0t‚t||ƒ|gksFt‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡t dddƒgkst‚tddƒ tdd	ƒ¡t dddƒgksºt‚td
ttfƒ tdttfƒ¡t ttƒgksêt‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡g ks*t‚d S )Nr   r3   r1   rF   r9   r5   )r   r3   r9   )r   r9   r1   )r   r3   r3   rJ   rz   )	r   r   r   r   r   rB   r*   ri   r,   )ra   r‰   r[   r\   rŒ   r   rŽ   r<   r<   r=   Útest_intersection_3dR  s@    
04ÿ4ÿ
ÿ
4ÿ
*
ÿ
r¹   c               	   C   sò  t dddƒ} t dddƒ}t tttƒ}ttttƒtttƒƒ}ttttƒttdt ƒƒ}t ttddƒtddƒƒ|¡svt‚t |ttttƒttdt ƒƒ¡dks t‚t || tt tƒ¡¡s¾t‚t || tddƒ¡¡sÚt‚t| |ƒ t| |ƒ¡sôt‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡dks4t‚t| |ƒ |¡tt tttƒt td td td ƒƒkspt‚t| |ƒ |j	¡tt tttƒt td td td ƒƒks®t‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡dksît‚d S )Nr   r3   FrF   )
r   r*   r   r   r+   Zis_parallelrB   ri   r   r©   )ra   r‰   r“   r\   Zl2_1r<   r<   r=   Útest_is_parallelv  s$    "*@ÿ$ÿ
rº   c               	   C   sL  t ddƒ} t ddƒ}t| |ƒ}tt ttƒt ttƒƒ}t| t t tƒƒ}t ||¡sVt‚t ||¡dksjt‚| ¡ }| |¡|ks„t‚t tt	dddƒt	dddƒƒtt	dddƒt	dddƒƒ¡dksÄt‚t tt	dddƒt	dddƒƒtt	dddƒt	dddƒƒ¡dkst‚t tt	dddƒt	dddƒƒtt	tttƒt	tttƒƒ¡dksHt‚d S r`   )
r   r   r*   r+   Zis_perpendicularrB   r~   rV   r   r   )ra   r‰   r[   r\   Zl1_1rn   r<   r<   r=   Útest_is_perpendicular‹  s0    


ÿÿÿÿ
ÿÿr»   c                  C   sÐ   t ddƒ} |  dd¡}ttdddƒtdddƒƒ}tt ddƒt ddƒƒ}tt ddƒ| ƒ}| t| |ƒ¡sjt‚| |¡dks|t‚| ttdddƒtdddƒƒ¡dks¤t‚| ttdddƒtdddƒƒ¡dksÌt‚d S )Nrq   r9   r3   r   FT)	r   r   r   r   r   r   Z
is_similarrB   r   )ra   r‰   rŒ   r   rŽ   r<   r<   r=   Útest_is_similar   s    
(r¼   c                  C   s„   t ttttƒttttƒƒ} ttddƒtddƒƒjtks:t‚| jt	dƒt	tt d ƒ ks\t‚t
tdddƒtdddƒƒjtks€t‚d S )Nr   r3   r1   r9   )r   r   r*   r+   r   r   rY   r   rB   r
   r   )r£   r<   r<   r=   Útest_length¯  s     "r½   c            	   	   C   s  t ddƒ} tdddƒ}t t tƒ}t| t ddƒƒ}ttdddƒtdddƒƒ}t|tdddƒƒ}tt ddƒt ddƒƒ}ttddƒtddƒƒ}ttddƒtddƒƒ}tt ttƒt ttƒƒ 	t ttƒ¡t ttƒksÐt
‚tt ttƒt tdt ƒƒ 	t ddƒ¡t tdƒkst
‚tt ddƒt ddƒƒ 	|¡tt ddƒt ddƒƒks>t
‚tt ddƒt ddƒƒ 	|¡tt ddƒt ddƒƒksvt
‚| 	|¡tksŠt
‚| 	|¡| ksžt
‚| 	t| t dd	ƒƒ¡tt ddƒt ddƒƒksÐt
‚| 	t| t ddƒƒ¡| ksðt
‚| 	tt ddƒt ddƒƒ¡t ddƒkst
‚| 	tt ddƒt dd
ƒƒ¡tt ddƒt ddƒƒksTt
‚| 	tt dd	ƒt d
dƒƒ¡tt ddƒt ddƒƒksŒt
‚| 	tt ddƒt ddƒƒ¡t ddƒks¸t
‚| 	tt ddƒt dd
ƒƒ¡tt ddƒt ddƒƒksðt
‚| 	tt dd	ƒt d
dƒƒ¡tt ddƒt ddƒƒks(t
‚| 	t|tdd	dƒƒ¡ttdddƒttddƒtddƒtddƒƒƒksrt
‚| 	t|tdddƒƒ¡ttdddƒttddƒtddƒtddƒƒƒks¼t
‚| 	td	d	dƒ¡td	dƒksÞt
‚| 	ttdddƒtdddƒƒ¡ |¡s
t
‚d S )Nr   r3   r9   r­   ru   rF   r5   r1   r4   r|   r–   )r   r   r*   r   r   r   r   r   r+   rk   rB   r   r   r   rh   )	ra   r‰   r“   r[   r\   rŠ   rŒ   rŽ   r£   r<   r<   r=   Útest_projection¶  s6    
06882 ,88,88JJ"r¾   c                  C   s¼   t dddƒt dddƒt dddƒ  } }}t| |ƒ}| |¡}|j|ksJt‚|j|ksXt‚t ddƒt ddƒt ddƒ  } }}t| |ƒ}| |¡}|j|ksœt‚|jj|| |¡ jks¸t‚d S )Nr   r9   r1   rF   ru   )	r   r   rj   ra   rB   r‰   Ú	directionÚunitrk   )ra   r‰   r“   r›   rn   r<   r<   r=   Útest_perpendicular_lineÙ  s    (

"

rÁ   c                  C   s®   t tddƒtddƒƒ} tttjtjƒttddƒtddƒƒƒ}t ttjtjƒttddƒtddƒƒƒj}|  ¡  |¡svt	‚|  |¡ t | j|ƒ¡s’t	‚|  |d ¡ |¡sªt	‚d S )Nr   r3   r1   r9   r5   r¡   )
r   r   r   r   rX   r   rW   Zperpendicular_bisectorrh   rB   )rŽ   ZalineZon_liner<   r<   r=   Útest_perpendicular_bisectoré  s    &(rÂ   c                     sª   t ddd\‰ } tˆ df| dfƒ‰ttdd„ ƒ ttdd„ ƒ tt‡ ‡fdd„ƒ ttd	d„ ƒ ttd
d„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ d S )Nr-   Tr%   r   c                   S   s
   t ddƒS ©NrP   r3   r;   r<   r<   r<   r=   r>   ÷  r?   ztest_raises.<locals>.<lambda>c                   S   s   t tddƒtddƒƒS ©Nr   )r   r   r<   r<   r<   r=   r>   ø  r?   c                      s   t dˆ  dƒˆkS )Nr9   r   )r   r<   ©ÚdÚsr<   r=   r>   ù  r?   c                   S   s   t tddƒƒS )Nr™   )r   r   r<   r<   r<   r=   r>   ú  r?   c                   S   s   t tdddƒtdddƒƒS rÄ   ©r   r   r<   r<   r<   r=   r>   û  r?   c                   S   s
   t ddƒS rÃ   )r   r<   r<   r<   r=   r>   ü  r?   c                   S   s   t tdddƒƒS rÄ   rÈ   r<   r<   r<   r=   r>   ý  r?   c                   S   s
   t ddƒS rÃ   )r   r<   r<   r<   r=   r>   þ  r?   c                   S   s(   t tddƒtddƒƒ ttddƒdƒ¡S )Nr   r3   )r   r   rk   r   r<   r<   r<   r=   r>   ÿ  s   ÿ)r	   r   r"   Ú	TypeErrorrC   r   r   )Úer<   rÅ   r=   Útest_raisesó  s    rË   c                
   C   sž  t dtd dt ddƒkst‚t dtd dt ddƒks<t‚t dt d dt ddƒks\t‚t ddt d dt ddƒks~t‚t dd	t d dt ddƒks t‚t dd
t d dt ddƒksÂt‚t dtdt ddƒksÜt‚t ddt dt ddƒksút‚t ddt dt ddƒkst‚t dddt ddƒks6t‚t ddt dt tddƒtdtd	ƒ tdtd	ƒ d ƒ d tdtd	ƒ d ƒd  d td	ƒ ƒƒks¤t‚t ddt dt tddƒtddtdt ƒ ƒƒksÜt‚t dd	dt dddtd	ƒ fƒkst‚tddddgdttdddƒtd	d	d	ƒƒks6t‚tddddgdttdddƒtdddƒƒksht‚tddddgdttdddƒtdddƒƒksšt‚d S )NrP   rF   rK   rt   r9   rL   r¡   r8   r4   g      @rz   g      @g      @)r9   r3   r   g333333@r3   r}   g®Gáz@rR   rS   r1   )r   r   rB   r   r
   r   r   r   r<   r<   r<   r=   Útest_ray_generation  s8     """ &ÿÿÿÿÿÿ(22rÌ   c                  C   sd   t ttdƒtƒ} ttttƒdd}ttt tt  ƒ}| | ¡t	t| tƒt	t| tƒgks`t
‚d S )Nr   rr   )r   r   r$   r'   r   r)   r(   r
   r   r   rB   )ÚcircleÚlineZ_sr<   r<   r=   Útest_issue_7814  s    rÏ   c                     s:   ‡ ‡‡‡fdd„} d\‰‰d\‰ ‰| ƒ  d\‰‰| ƒ  d S )Nc                     sN   t tttfgd Ž D ]4\} }| ˆ ˆƒ}|ˆˆƒ}| |¡| |¡kst‚qd S )Nr9   )r!   r   r   r   r   rB   )ÚfÚgr[   r\   ©r/   r0   ÚcrÆ   r<   r=   Ú_check"  s    

ztest_issue_2941.<locals>._check))ru   ru   r®   )rJ   rP   ))ru   r8   r®   r<   )rÔ   r<   rÒ   r=   Útest_issue_2941!  s    rÕ   c                     sX   t dƒ‰tddƒtddƒ } }t| |ƒ‰ ˆ  dˆ¡ˆdiks@t‚tt‡ ‡fdd„ƒ d S )	Nr,   r   r3   r4   rd   )r4   rd   c                      s   ˆ   dˆ¡S )NrJ   )Úparameter_valuer<   ©r›   r,   r<   r=   r>   5  r?   z&test_parameter_value.<locals>.<lambda>)r   r   r   rÖ   rB   r"   rC   )ra   r‰   r<   r×   r=   Útest_parameter_value0  s
    
rØ   c                  C   sð   t tdddƒtdddƒƒ} t tdddƒtdddƒƒ}|  |¡}|t tdddƒtdddƒƒt tdddƒtdddƒƒgkszt‚t tdddƒtdddƒƒt tdddƒtdddƒƒg}d}d}ttttfddD ]"\}}||Ž  ||Ž ¡|ksÈt‚qÈd S )Nr   r3   r5   )r—   )r   r   r3   )rJ   r¡   r9   )Úrepeat)r   r   Z	bisectorsrB   r!   r   r   r   )rŒ   r   Z
bisectionsZansr[   r\   r/   r0   r<   r<   r=   Útest_bisectors8  s    
ÿ
ÿrÚ   c                  C   sT   t tdddƒtdddƒƒ} t tdddƒtdddƒƒ}|  |¡tdddƒgksPt‚d S )Nrd   r4   r   iúÿÿÿr5   gffffffþ?)r   r   r   rB   rA   r<   r<   r=   Útest_issue_8615F  s    rÛ   c                  C   s¨   t tddƒtddƒ d¡ƒ} t tddƒtddƒ d¡ƒ}t|  |¡d ƒdksRt‚tdd	ƒ}td
dƒ d¡}t| |¡d ƒdks†t‚td
dƒ d¡}| |¡r¤t‚d S )Nr   r3   g\Âõ(\ï?gHáz®Gé?r9   g¸…ëQ¸æ?zPoint2D(0.82, 0.82)rJ   rP   ry   r{   zPoint2D(-0.33, -0.33))g      à¿r­   )r   r   ÚnÚstrr   rB   r   r   )rŒ   r   r[   r\   r<   r<   r=   Útest_issue_12598L  s    
rÞ   N)_Zsympy.core.numbersr   r   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r	   Z(sympy.functions.elementary.miscellaneousr
   Z(sympy.functions.elementary.trigonometricr   r   r   Z
sympy.setsr   Zsympy.simplify.simplifyr   r   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.geometry.liner   Zsympy.geometry.polygonr    r´   rl   r!   Zsympy.testing.pytestr"   r#   r$   r'   r(   r)   r*   r+   r,   r/   r0   r.   rD   rE   rI   rM   rN   rO   r]   r_   rb   rp   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<   r<   r<   r=   Ú<module>   sv   @	
%M-*'"j	$#
