a
    {þd-’  ã                   @   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sFJ ‚tdˆ dˆ  d ƒttdtd	dƒƒtdtd
dƒƒƒks„J ‚tdˆ  ˆ d dddttddƒtddƒƒks¸J ‚tdˆ ˆ ƒttddƒtddƒƒksâJ ‚tˆˆ ƒttddƒtdd	ƒƒks
J ‚tt	dˆ  ˆ dƒdˆdttddƒtddƒƒksBJ ‚tˆd ƒttddƒtddƒƒksjJ ‚tdˆ d ˆdttddƒtddƒƒksšJ ‚tˆƒttddƒtddƒƒks¾J ‚tdˆ ˆdttddƒtddƒƒksêJ ‚tˆˆdttddƒtddƒƒksJ ‚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<   úg/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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   r   r   r"   Ú
ValueErrorr<   r<   )r/   r0   r$   r'   r=   Útest_object_from_equation   s.    .ÿ
ÿ
*(ÿ(0$,(rC   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    rD   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`J ‚t| |ƒ t||ƒ¡td ks‚J ‚tdddƒ}t	 t	|tdddƒƒt	|tdddƒƒ¡t
tdƒd ƒksÊJ ‚t	 t	|tdddƒƒt	tdddƒ|ƒ¡t
tdƒ d ƒks
J ‚d S )Nr3   r9   r1   é   r   r4   )r   Zorthogonal_directionÚoriginrD   r   Zangle_betweenZevalfr   r   r   r   r
   )r/   r0   Úor(   r<   r<   r=   Útest_angle_between<   s(    ÿ
ÿ"ÿÿÿÿrH   c                  C   s`   t ddd} t dtd d}|  |¡t d ks4J ‚| | ¡td ksJJ ‚|  | ¡dks\J ‚d S )N©r   r   r   ©Zangle©r3   r9   r9   )r   r   Zclosing_anglerA   r<   r<   r=   Útest_closing_angleK   s
    rL   c                  C   sR   t tddƒtddƒƒ} t tddƒtddƒƒ}|  |¡tdtdƒ d ƒksNJ ‚d S )Nr3   r9   r1   r4   )r   r   Zsmallest_angle_betweenr   r
   rA   r<   r<   r=   Útest_smallest_angleS   s    rM   c                  C   sv   t tddƒtddƒƒ} |  ¡ dks&J ‚ttddƒtddƒƒ} |  ¡ dksLJ ‚ttddƒtddƒƒ} |  ¡ dksrJ ‚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_svgr   r   )r/   r<   r<   r=   Útest_svgY   s    rN   c                  C   s˜  t tdddƒtdddƒƒ} ttttƒtttƒƒ}| ¡ |v s@J ‚tdtd d ¡ tt	d t	d ƒksjJ ‚t
ddƒ ¡ tdt	 ddt	  ƒks’J ‚|  |  ¡ ¡|  ¡ ks¬J ‚tdg d	¢d
 ¡ tt	d dt	 d dt	 d ƒksäJ ‚ttdddƒtdddƒƒjttjtjtjƒksJ ‚tttttƒttttƒƒjtdƒttt d ƒ ksRJ ‚tddƒ ¡ tt	d dt	 d dt	 d ƒks†J ‚ttdd„ ƒ d S )Nr   r3   ©r3   r3   rE   rJ   ©r9   r1   r9   ©r3   r3   r3   ©r3   r9   r1   ©Údirection_ratior1   ©r9   r1   rE   c                   S   s   t tdfdƒ t¡S )Nr3   rP   )r   r$   Úarbitrary_pointr<   r<   r<   r=   r>   q   r?   z&test_arbitrary_point.<locals>.<lambda>)r   r   r   r   r*   r+   rV   r   r   r,   r   Úperpendicular_segmentr   r   Úmidpointr   ÚHalfÚlengthr
   r"   rB   ©Ú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u sBJ ‚t  | |¡sRJ ‚t  | | | |¡sfJ ‚t  | |t tdtƒttddƒtƒƒ¡sJ ‚t  | t tddƒtt tƒƒ|¡du sºJ ‚d S )Nr   r3   Fr4   r8   )r   r   r*   Úare_concurrentr   r[   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u sdJ ‚t |tt tttƒt tttƒƒ¡du sŽJ ‚t |t| t tttƒƒtt tttƒt tdt dƒƒ¡du sÌJ ‚t ||¡du sàJ ‚d S ©Nr   r3   FT)r   r   r   r_   r*   r+   )Úp1r\   Z
parallel_1Z
parallel_2r<   r<   r=   Útest_are_concurrent_3d~   s    *ÿÿrc   c                  C   sl  ddl m}  dddgtddƒf}| |dƒ}ttddƒtddƒƒ}dg d	¢tddd
ƒf}| |dƒ}ttdddƒtdddƒƒ}dg d¢tddddƒf}| |dƒ}ttddddƒtddddƒƒ}	g d¢}
|D ]}t|Ž  qÆ|
D ]}|D ]}t||ƒ|ƒ qàqØ|D ]}t|Ž  qú|
D ] }|D ]}t||ƒ|ƒ qq|D ]}t|Ž  q2|
D ] }|D ]}t|	|ƒ|ƒ qNqFdS )z”Functions accepting `Point` objects in `geometry`
    should also accept tuples, lists, and generators and
    automatically convert them to points.r   )ÚsubsetsrK   r3   r1   r4   r9   rR   )r3   r9   rE   é   )r3   r9   r1   rE   )r3   r9   r1   r4   é   rE   )ÚcontainsÚdistanceÚequalsÚparallel_lineÚperpendicular_linerW   Ú
projectionr   N)	Úsympy.utilities.iterablesrd   r   r   r   r   r   Úgetattrr   )rd   Z	singles2dZ	doubles2dZl2dZ	singles3dZ	doubles3dZl3dZ	singles4dZ	doubles4dZl4dZtest_singleÚpÚfuncr<   r<   r=   Útest_argumentsŠ   s4    




rq   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ºJ ‚tdtdtddƒksÔJ ‚tdtdjdksêJ ‚tdt dtddƒksJ ‚t| |ƒ d	d¡t| t d	dƒƒks0J ‚t| |ƒt| |ƒksJJ ‚t| |ƒt|| ƒksdJ ‚|tt ttƒt t	t	ƒƒks„J ‚||ks’J ‚t| |ƒt|| ƒks¬J ‚t| |ƒ| ksÀJ ‚| |v sÎJ ‚| |vsÜJ ‚|
t| |ƒv sðJ ‚tt ddƒt ddƒƒtt ddƒt dd	ƒƒv s"J ‚tt ddƒt dd	ƒƒtt ddƒt ddƒƒv sTJ ‚tt ddƒt dd	ƒƒj
tjksxJ ‚tt ddƒt dd	ƒƒj
tjksœJ ‚tt ddƒt d
d	ƒƒj
tjksÀJ ‚tt ddƒt d	dƒƒjtjksäJ ‚tt ddƒt d	d	ƒƒjtjksJ ‚tt ddƒt d	dƒƒjtjks,J ‚||
v du s>J ‚t| |ƒ|
v sRJ ‚tt ttƒt tdt ƒƒt| t d
dƒƒks‚J ‚t| |ƒjt tjtjƒks¢J ‚t| t t tƒƒjtd	td	  ƒksÌJ ‚|jdksÜJ ‚|jtu sìJ ‚|jdksüJ ‚t| t ddƒƒjtu sJ ‚t|j| ¡ ƒj|jks6J ‚t|	j|	 ¡ ƒj|	jksTJ ‚tt dd
ƒt| t ddƒƒ ¡ ƒjt| t ddƒƒjksŽJ ‚|jdksžJ ‚tt tft d td fƒjdksÈJ ‚t| t ddƒƒjdksäJ ‚tdtd}| tdt d ¡tddƒksJ ‚| tdt d ¡tddƒks8J ‚| tt d ¡tddƒksZJ ‚| ttd	 ¡tddƒkszJ ‚| tt d	 ¡tddƒksœJ ‚tddƒD ]}| ¡ |v s¦J ‚q¦|j| jkrÜ|j| jksàJ ‚|j|jkrü|j|jks J ‚| j|j  kr|jkrBn n | j|j  kr@|jksFn J ‚t|
ƒtt|| ƒƒksbJ ‚|
 ¡ tddgkszJ ‚t| |ƒ ¡ tddgks˜J ‚tdtd d ¡ tddgks¼J ‚d S )Nr   r3   éÐ  rO   ©Úslope©r9   r9   rK   )r3   r3   r3   r9   r9   r5   éþÿÿÿFr4   ©r   r3   r   ©r3   r3   r   ©r3   r   r   rI   rJ   r1   rE   ©r5   r3   )r5   r5   )r3   r5   ©r   r3   ©r   r5   éûÿÿÿé
   )r   r   Úrandom_pointr   r*   r   r   ZboundsÚscaler+   Ú
xdirectionr   ÚZeroÚInfinityÚNegativeInfinityÚ
ydirectionrX   rY   rZ   r
   rt   ÚsourceZcoefficientsr$   Úsubsr   Úranger'   ÚhashZplot_intervalr,   )rb   Ú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   s&  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g d¢dtt dddƒt dd	dƒƒksœJ ‚tdg d
¢dtt dddƒt dddƒƒksÊJ ‚tdg d¢dtt dddƒt ddd	ƒƒksøJ ‚tt dddƒt dddƒƒjg d¢ks"J ‚tt| t dddƒƒƒt| t dddƒƒksPJ ‚ttt dddƒt dddƒƒƒt| t dddƒƒks†J ‚t| |ƒt|| ƒks J ‚||ks®J ‚|t|t tttƒƒksÊJ ‚||ksØJ ‚tt dddƒt dddƒƒtt dddƒt dddƒƒv sJ ‚tt dddƒt dddƒƒtt dddƒt dddƒƒv sLJ ‚tt dddƒt dddƒƒjtj	kstJ ‚tt dddƒt dddƒƒj
tj	ksœJ ‚tt dddƒt dddƒƒjtj	ksÄJ ‚tt dddƒt dddƒƒjtjksìJ ‚tt dddƒt dddƒƒj
tjksJ ‚tt dddƒt dddƒƒjtjks<J ‚tt dddƒt dddƒƒjtjksdJ ‚tt dddƒt dddƒƒj
tjksŒJ ‚tt dddƒt dddƒƒjtjks´J ‚| |v sÂJ ‚| |vsÐJ ‚|jg d¢ksäJ ‚|jt tjtjtjƒksJ ‚t| t dddƒƒjtju s"J ‚d S )Nr   r3   r5   r4   rQ   rU   rS   r1   rE   )r3   r4   rf   r9   re   é   rR   ry   rv   )r   r*   r   r   r   Zdirection_cosiner+   r   r   rƒ   r…   Z
zdirectionr„   r‚   rT   rX   rY   )	rb   rŠ   Úp3Zp5r\   r‹   r   Úr3r   r<   r<   r=   Útest_basic_properties_3dü   sF    



...*.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ƒv sŽJ ‚t tt d dƒttdftdfƒv s¶J ‚tdddƒtddƒv sÐJ ‚tdddƒtddƒv sêJ ‚ttdddƒtdddƒƒ 	g ¡d	u sJ ‚ttdddƒtdddƒƒ 	ttdddƒtdddƒƒ¡d
u sTJ ‚| 	t ddƒ¡d	u snJ ‚| 	d¡d	u s‚J ‚| 	d¡d
u s–J ‚| 	| ¡d	u sªJ ‚| 	d¡d	u s¾J ‚| 	d¡d
u sÒJ ‚| 	tddƒ¡d	u sìJ ‚| 	tddƒ¡d
u sJ ‚| 	tddƒ¡d	u s J ‚| 	tddƒ¡d
u s:J ‚| 	t| tdddƒƒ¡d	u s\J ‚| 	ttdddƒtdddƒƒ¡d
u s†J ‚| 	tdddƒ¡d	u s¢J ‚| 	tdddƒ¡d	u s¾J ‚ttdddƒtdddƒƒ 	g ¡d
u sèJ ‚t
dtttfƒ 	dt dt dt f¡sJ ‚ttd
d8 t
| tdddƒƒ 	t ddƒ¡d
u sLJ ‚W d   ƒ n1 sb0    Y  ttd
d* | 	t ddƒ¡d
u s”J ‚W d   ƒ n1 sª0    Y  d S )Nr   rE   r5   r3   r1   r9   rw   ry   TFr{   rI   rO   )r3   r1   ru   rK   )r9   r4   )r1   r1   )r1   r4   éöÿÿÿ©r   r   r   ©Ztest_stacklevelç      ð?)r   r   r   r   r   r/   r0   r   r   rg   r   r$   r'   r(   r#   ÚUserWarning)rb   r   r   rŽ   r•   Úlr<   r<   r=   Útest_contains)  sH    
((*ÿÿ
"**.Hr   c                  C   sf   t dƒ\} }}}tt| |ƒt||ƒƒ}t| tddƒ |d  |tddƒ |d  ƒ}| |¡sbJ ‚d S )Nz
u, v, w, zr9   r1   )r	   r   r   r   rg   )ÚuÚvÚwr(   rœ   ro   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shJ ‚| d¡dkszJ ‚| t ddƒ¡d| d ksšJ ‚| t tdƒd tdƒd ƒ¡d| ksÆJ ‚t| |ƒ t ddƒ¡tdƒksèJ ‚t| |ƒ t ddƒ¡tdƒksJ ‚t| |ƒ t ddƒ¡dks,J ‚t| |ƒ d¡tdƒksJJ ‚tddƒ | ¡dksdJ ‚tddƒ |¡dks~J ‚tdd	ƒ | ¡dks˜J ‚tdd	ƒ |¡dks²J ‚| t ddƒ¡tdƒksÐJ ‚| t ddƒ¡dksêJ ‚| t ddƒ¡tdƒksJ ‚td
dƒ t ddƒ¡dtdƒ d ks4J ‚| d
¡dksHJ ‚d S )Nr   r3   rI   r9   r1   r5   rz   r{   ©r3   r   rO   ru   ç      ø?rE   )	r   r   rY   r   r   rh   r   r   r
   )rb   rŠ   Zhalfr   Ús2r   r<   r<   r=   Útest_distance_2dZ  s.    


 ,"$ ,r¥   c                   C   sH   t tdd( tddƒtddƒks&J ‚W d   ƒ n1 s:0    Y  d S )NFr™   rO   )r9   r3   r9   rx   )r#   r›   r   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”J ‚| | ¡tdƒd ks®J ‚| |¡dtdƒ d ksÌJ ‚| d¡dksÞJ ‚| d¡tdƒd ksøJ ‚| | ¡dksJ ‚| | ¡tdƒd ks(J ‚| |¡dtdƒ d ksHJ ‚| d¡dks\J ‚| d¡tdƒd ksxJ ‚t| |ƒ t dddƒ¡dtdƒ d ks¦J ‚t| |ƒ t dddƒ¡dtdƒ d ksÔJ ‚t| |ƒ t dddƒ¡dksöJ ‚t| |ƒ d¡dksJ ‚t| |ƒ d	¡dtdƒ d ks6J ‚tdd
ƒ | ¡dksPJ ‚tdd
ƒ |¡tdƒksnJ ‚tddƒ | ¡dksˆJ ‚tddƒ |¡tdƒks¦J ‚| t dddƒ¡tdƒksÆJ ‚| t dddƒ¡dksâJ ‚| d¡tdƒksúJ ‚| d¡dksJ ‚tddƒ d¡dtdƒ d ks4J ‚tddƒ t dddƒ¡tdƒd ks^J ‚tddƒ t dddƒ¡tdƒd ksˆJ ‚d S )Nr   r3   r1   r9   re   r˜   r5   )r9   r9   r9   )r3   r5   r3   rw   ry   )r5   r5   r5   rQ   )r3   r3   r9   )r5   r5   r9   rE   r£   r8   é	   éN   )	r   r   r   r   rY   r   rh   r
   r   )rb   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ƒƒ¡slJ ‚| | ¡ tt ddƒt ddƒƒ¡s’J ‚tt ttƒt ttƒƒ t t tƒ¡ tt t tƒt t dt t ƒƒ¡sÞJ ‚| | j¡ tt ddƒt ddƒƒ¡sJ ‚| | ¡ tt ddƒt ddƒƒ¡s0J ‚| 	t ddƒ¡dt
td ƒ ttd d ƒ   d¡slJ ‚t| tdddƒƒ t ddƒ¡d	u s”J ‚ttdddƒtdddƒƒ ttd
ddƒtdddƒƒ¡du sÔJ ‚ttdddƒtdddƒƒ t| tdddƒƒ¡d	u sJ ‚t| tdddƒƒ t ddƒ¡d	u s4J ‚t| tdddƒƒ t| tdddƒƒ¡du sdJ ‚tdttfƒ t dddƒ¡ ttdddƒttjtjdƒƒ¡s¦J ‚tdttfƒ t dddƒ¡ tdtjtjfƒ¡sÜJ ‚t| tdddƒƒ t ddƒ¡d	u sJ ‚d S )Nr   r3   )r   r4   rs   r5   r9   r1   rš   Fr}   TrI   r{   )r   r   r.   r*   rk   Úargsri   r+   rj   rh   Úabsr
   r   r   r   r,   r   rY   rW   r   )rb   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v sXJ ‚t| ¡ ƒtt tt fv sxJ ‚t| ¡ ƒtt tt fv s˜J ‚t| ¡ ƒtt tt fv s¸J ‚t| t ddƒƒjttdtksÚJ ‚t| t ddƒƒ ¡ tksöJ ‚tt ddƒt ddƒƒ ¡ td ksJ ‚t|t ddƒƒ ¡ td ks@J ‚tt tttƒt tttƒƒ ¡ t t t t	 fksxJ ‚tt dddƒt dddƒƒ ¡ t t d t t	 d fks¸J ‚tt dddƒt dddƒƒ ¡ td t t	 d fksòJ ‚tt dddƒt dddƒƒ ¡ td t t	 d fks,J ‚tt dddƒt dddƒƒ ¡ t t d t	d fksfJ ‚tt dddƒt dddƒƒ ¡ td td fksšJ ‚tt dddƒt dddƒƒ ¡ td t	d fksÎJ ‚tt dddƒt dddƒƒ ¡ td t	d fksJ ‚d S )Nr   r3   r7   r9   r1   rE   )
r   r   r*   r   Zequationr$   r'   r   r+   r(   )rb   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ôJ ‚t|t tdt ƒƒg ksJ ‚t|t||ƒƒ|gt||ƒgfv s:J ‚t|| t tdt ƒ¡ƒg ks^J ‚t||ƒ|gkstJ ‚t||ƒ|gksŠJ ‚t||ƒ|gks J ‚t||ƒ|gks¶J ‚ttt dd	ƒt d	d	ƒƒtt d
d
ƒt d
dƒƒƒg ksîJ ‚t||ƒ|gksJ ‚t|tt ddƒt ddƒƒƒtt ddƒt ddƒƒgks>J ‚t|tt ddƒt ddƒƒƒt ddƒgkslJ ‚t|tt ddƒt ddƒƒƒtt ddƒt ddƒƒgks¦J ‚| |¡|gks¼J ‚| tt ddƒt ddƒƒ¡g ksâJ ‚| tt ddƒt ddƒƒ¡t| t ddƒƒgksJ ‚| t|| ƒ¡|gks2J ‚t|| ƒ |	¡g ksLJ ‚| |
¡|
 |¡  krr|
gksxn J ‚tddƒ tddƒ¡tddƒgks J ‚tddƒ tddƒ¡tddƒgksÈJ ‚tt ddƒt ddƒƒ tt ddƒt ddƒƒ¡tt ddƒt ddƒƒgksJ ‚t	ddƒ t	ddƒ¡t	ddƒgks<J ‚t	ddƒ t	ddƒ¡t	ddƒgksdJ ‚t	ddƒ t	ddƒ¡t
dƒgksŠJ ‚t	ddƒ t	ddƒ¡t	ddƒgks²J ‚t	ddƒ t	ddƒ¡t	ddƒgksÚJ ‚t	ddƒ t	ddƒ¡t
ddƒgksJ ‚| tt ddƒt ddƒƒ¡t ddƒgks0J ‚| tt ddƒt ddƒƒ¡tt ddƒ|ƒgksdJ ‚| tt ddƒt ddƒƒ¡g ksŠJ ‚| tt ddƒ| ƒ¡| gks¬J ‚| tt ddƒt ddƒƒ¡t| t ddƒƒgksàJ ‚| tt ddƒt ddƒƒ¡g ksJ ‚| |¡|gksJ ‚| |¡|gks2J ‚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ªJ ‚tddƒ tddƒ¡t ddƒgksÒJ ‚tddƒ tddƒ¡t ddƒgksúJ ‚tddƒ tddƒ¡t ddƒgks"J ‚tddƒ tddƒ¡t ddƒgksJJ ‚tddƒ tddƒ¡d u sjJ ‚tddƒtddƒv s„J ‚| tdd!ƒ¡t ddƒgks¦J ‚d S )"Nr   r3   r1   rE   r9   ç      à?g      Ð?r—   r~   r}   r4   r5   rI   )r1   r   r¢   )r9   r   )rE   r   )r4   r   ©rv   r   r£   éx   r“   é4   r6   é   éZ   é-   rO   rK   )r~   r~   ru   T)rE   rE   )r   r*   r+   r   r   r   r   rj   r   r   r   Úasar   r   r   r   r
   rg   )rb   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	u s‚J ‚d S )
Né   r´   r1   r9   r“   é   r   r3   T)r   r   r   r
   r   r   rg   )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žJ ‚t|t tdt dƒƒg ks¼J ‚t|| | ¡ƒtt dddƒt dddƒƒgksìJ ‚t||ƒ|gksJ ‚t||ƒ|gksJ ‚t||ƒ|gks.J ‚t|tt dddƒt dddƒƒƒt dddƒgksbJ ‚t|tt dddƒt dddƒƒƒtt dddƒt dddƒƒgks¤J ‚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îJ ‚t|tt dddƒt dddƒƒƒtt dddƒt dddƒƒgks0J ‚t||ƒ|gksFJ ‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡t dddƒgksJ ‚tddƒ tdd	ƒ¡t dddƒgksºJ ‚td
ttfƒ tdttfƒ¡t ttƒgksêJ ‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡g ks*J ‚d S )Nr   r3   r1   rE   r9   r5   )r   r3   r9   )r   r9   r1   )r   r3   r3   rI   r{   )r   r   r   r   r   r*   rj   r,   )rb   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ƒƒ|¡svJ ‚t |ttttƒttdt ƒƒ¡du s J ‚t || tt tƒ¡¡s¾J ‚t || tddƒ¡¡sÚJ ‚t| |ƒ t| |ƒ¡sôJ ‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡du s4J ‚t| |ƒ |¡tt tttƒt td td td ƒƒkspJ ‚t| |ƒ |j¡tt tttƒt td td td ƒƒks®J ‚tt dddƒt dddƒƒ tt dddƒt dddƒƒ¡du sîJ ‚d S )Nr   r3   FrE   )	r   r*   r   r   r+   Zis_parallelrj   r   rª   )rb   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 ||¡sVJ ‚t ||¡du sjJ ‚| ¡ }| |¡|ks„J ‚t ttdddƒtdddƒƒttdddƒtdddƒƒ¡du sÄJ ‚t ttdddƒtdddƒƒttdddƒtdddƒƒ¡du sJ ‚t ttdddƒtdddƒƒtttttƒttttƒƒ¡du sHJ ‚d S ra   )	r   r   r*   r+   Zis_perpendicularr   rW   r   r   )rb   rŠ   r\   r]   Zl1_1ro   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| |ƒ¡sjJ ‚| |¡du s|J ‚| ttdddƒtdddƒƒ¡du s¤J ‚| ttdddƒtdddƒƒ¡du sÌJ ‚d S )Nrr   r9   r3   r   FT)r   r€   r   r   r   r   Z
is_similarr   )rb   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u s:J ‚| jtdƒttt d ƒ ks\J ‚t	tdddƒtdddƒƒjtu s€J ‚d S )Nr   r3   r1   r9   )
r   r   r*   r+   r   r   rZ   r   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ÐJ ‚tt ttƒt tdt ƒƒ 	t ddƒ¡t tdƒksJ ‚tt ddƒt ddƒƒ 	|¡tt ddƒt ddƒƒks>J ‚tt ddƒt ddƒƒ 	|¡tt ddƒt ddƒƒksvJ ‚| 	|¡t
ksŠJ ‚| 	|¡| ksžJ ‚| 	t| t dd	ƒƒ¡tt ddƒt ddƒƒksÐJ ‚| 	t| t ddƒƒ¡| ksðJ ‚| 	tt ddƒt ddƒƒ¡t ddƒksJ ‚| 	tt ddƒt dd
ƒƒ¡tt ddƒt ddƒƒksTJ ‚| 	tt dd	ƒt d
dƒƒ¡tt ddƒt ddƒƒksŒJ ‚| 	tt ddƒt ddƒƒ¡t ddƒks¸J ‚| 	tt ddƒt dd
ƒƒ¡tt ddƒt ddƒƒksðJ ‚| 	tt dd	ƒt d
dƒƒ¡tt ddƒt ddƒƒks(J ‚| 	t|tdd	dƒƒ¡ttdddƒttddƒtddƒtddƒƒƒksrJ ‚| 	t|tdddƒƒ¡ttdddƒttddƒtddƒtddƒƒƒks¼J ‚| 	td	d	dƒ¡td	dƒksÞJ ‚| 	ttdddƒtdddƒƒ¡ |¡s
J ‚d S )Nr   r3   r9   r®   rv   rE   r5   r1   r4   r}   r—   )r   r   r*   r   r   r   r   r   r+   rl   r   r   r   ri   )	rb   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sJJ ‚|j|v sXJ ‚t ddƒt ddƒt ddƒ  } }}t| |ƒ}| |¡}|j|ksœJ ‚|jj|| |¡ jks¸J ‚d S )Nr   r9   r1   rE   rv   )r   r   rk   rb   rŠ   Ú	directionÚunitrl   )rb   rŠ   r”   rœ   ro   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}|  ¡  |¡svJ ‚|  |¡ t | j|ƒ¡s’J ‚|  |d ¡ |¡sªJ ‚d S )Nr   r3   r1   r9   r5   r¢   )	r   r   r   r   rY   r   rX   Zperpendicular_bisectorri   )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 ©NrO   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ƒˆv 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   rl   r   r<   r<   r<   r=   r>   ÿ  s   ÿ)r	   r   r"   Ú	TypeErrorrB   r   r   )Úer<   rÆ   r=   Útest_raisesó  s    rÌ   c                
   C   s˜  t dtd dt ddƒksJ ‚t dtd dt ddƒks<J ‚t dt d dt ddƒks\J ‚t ddt d dt ddƒks~J ‚t dd	t d dt ddƒks J ‚t dd
t d dt ddƒksÂJ ‚t dtdt ddƒksÜJ ‚t ddt dt ddƒksúJ ‚t ddt dt ddƒksJ ‚t dddt ddƒks6J ‚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¤J ‚t ddt dt tddƒtddtdt ƒ ƒƒksÜJ ‚t dd	dt dddtd	ƒ fƒksJ ‚tdg d¢dttdddƒtd	d	d	ƒƒks4J ‚tdg d¢dttdddƒtdddƒƒksdJ ‚tdg d¢dttdddƒtdddƒƒks”J ‚d S )NrO   rE   rJ   ru   r9   rK   r¢   r8   r4   g      @r{   g      @g      @)r9   r3   r   g333333@r3   r~   g®Gáz@rQ   )rE   rE   rE   rS   rR   r1   )r   r   r   r
   r   r   r   r<   r<   r<   r=   Útest_ray_generation  s8     """ &ÿÿÿÿÿÿ(00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`J ‚d S )Nr   rs   )
r   r   r$   r'   r   r)   r(   r
   r   r   )Z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J ‚qd S )Nr9   )r!   r   r   r   r   )ÚfÚgr\   r]   ©r/   r0   ÚcrÇ   r<   r=   Ú_check"  s    

ztest_issue_2941.<locals>._check))rv   rv   r¯   )rI   rO   ))rv   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@J ‚tt‡ ‡fdd„ƒ d S )	Nr,   r   r3   r4   re   )r4   re   c                      s   ˆ   dˆ¡S )NrI   )Úparameter_valuer<   ©rœ   r,   r<   r=   r>   5  r?   z&test_parameter_value.<locals>.<lambda>)r   r   r   rÖ   r"   rB   )rb   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szJ ‚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ÈJ ‚qÈd S )Nr   r3   r5   )r˜   )r   r   r3   )rI   r¢   r9   )Úrepeat)r   r   Z	bisectorsr!   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sPJ ‚d S )Nre   r4   r   iúÿÿÿr5   gffffffþ?)r   r   r   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sRJ ‚tdd	ƒ}td
dƒ d¡}t| |¡d ƒdks†J ‚td
dƒ d¡}| |¡r¤J ‚d S )Nr   r3   g\Âõ(\ï?gHáz®Gé?r9   g¸…ëQ¸æ?zPoint2D(0.82, 0.82)rI   rO   rz   r|   zPoint2D(-0.33, -0.33))g      à¿r®   )r   r   ÚnÚstrr   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µ   rm   r!   Zsympy.testing.pytestr"   r#   r$   r'   r(   r)   r*   r+   r,   r/   r0   r.   rC   rD   rH   rL   rM   rN   r^   r`   rc   rq   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	$#
