U
    ZÊ¹j�g  ã                   @   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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mZmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dlm*Z* dd„ Z+dd„ Z,e%dd„ ƒZ-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2d d!„ Z3d"d#„ Z4d$d%„ Z5e%d&d'„ ƒZ6d(d)„ Z7d*d+„ Z8d,d-„ Z9d.d/„ Z:d0d1„ Z;d2d3„ Z<d4d5„ Z=d6d7„ Z>d8S )9é    )Úexpand)ÚRationalÚooÚpi)ÚEq)ÚS)ÚSymbolÚsymbols)ÚAbs)Úsqrt)Úsec)Ú	Segment2D)ÚPoint2D)ÚCircleÚEllipseÚGeometryErrorÚLineÚPointÚPolygonÚRayÚRegularPolygonÚSegmentÚTriangleÚintersection)ÚraisesÚslow)Ú	integrate)Ú
elliptic_e)ÚMaxc                  C   s  ddl m} m} ttddƒddƒ}t|jdd�ƒt|  | d d d | | d d d  d ƒksht‚ttddƒd	dƒ}t|jdd�ƒt|  | d d | | d d
  d ƒks¸t‚ttddƒddƒ}t|jdd�ƒtd|  | d d d | d|  d d d  d ƒk�st‚d S )Nr   ©ÚxÚyé   é   é   )Z_slopeé   é   é   é    é   é   éþÿÿÿé   é   é´   )Ú	sympy.abcr    r!   r   r   ÚstrÚequationÚAssertionError)r    r!   Úe1Úe2Úe3© r6   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/geometry/tests/test_ellipse.pyÚ!test_ellipse_equation_using_slope   s    F>r8   c                     s~  ddl m‰m‰m‰ m‰m} m}m} tˆd ˆd  dˆ  dˆ  d ƒtt	t
dƒd dƒtd	ƒd ƒkspt‚tˆd ˆd  d
ˆ  dˆ  d ƒtt	ddƒdƒks¬t‚tˆ d ˆd  d
ˆ   dˆ  d ddd�tt	ddƒdƒksît‚tˆd ˆd  d ƒtt	ddƒdƒk�st‚tˆd ˆd  ƒtt	ddƒdƒk�sFt‚tˆ d ˆd  ddd�tt	ddƒdƒk�svt‚tˆd ˆd  d
ˆ  d ƒtt	ddƒdƒk�s¬t‚tˆd ˆd  d
ˆ  d ƒtt	ddƒdƒk�sât‚tˆd d ˆd  d ƒtt	ddƒdƒk�st‚td
ˆd  d
ˆd   d
ˆ  dˆ  d ƒtt	tddƒtddƒƒdtdƒ d
 ƒk�srt‚ttˆ d ˆd  dƒdˆd�tt	d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„ƒ tt‡ ‡fdd„ƒ tddd�\‰‰ˆ ˆd  ˆ ˆd   | ˆ  |ˆ  | }tt|ƒ ¡ ˆ  ƒ|k�szt‚d S )Nr   )r    r!   ÚaÚbÚcÚdÚer$   r#   r'   r%   éýÿÿÿr+   é9   r*   é   éüÿÿÿr9   r:   r   r)   r"   é	   éÿÿÿÿé   c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr$   r#   r'   é   ©r   r6   r   r6   r7   Ú<lambda>.   ó    z+test_object_from_equation.<locals>.<lambda>c                      s   t ˆ d ˆd  d ƒS )Nr$   r@   rF   r6   r   r6   r7   rG   /   rH   c                      s   t ˆ d ˆd  d ddd�S )Nr$   r@   r9   r:   r   rF   r6   ©r9   r:   r6   r7   rG   0   rH   c                      s   t ˆ d dˆ  d ƒS )Nr$   r*   r%   rF   r6   r   r6   r7   rG   1   rH   c                      s0   t dˆ d  dˆd   dˆ   dˆ  d ƒS )Nr*   r$   r'   r%   r@   rF   r6   r   r6   r7   rG   2   rH   c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr$   r#   r'   r%   rF   r6   rI   r6   r7   rG   3   rH   zx yT©Úreal)r/   r    r!   r9   r:   r;   r<   r=   r   r   r   r   r2   r   r   r   r   Ú
ValueErrorr	   r   r1   )r;   r<   r=   Úeqr6   )r9   r:   r    r!   r7   Útest_object_from_equation!   s*    $L<B.*0662^6,rN   c            *   
      s   t ddd�‰t ddd�‰t ddd�} t ddd�}tj}tddƒ}tddƒ}tddƒ}t|ddƒ}t||dƒ‰t|||ƒ}t|dƒ}t|dƒ}	tttd	ƒtd	ƒƒdƒ}
t||ƒ}td
| d	ƒd|  }}ttddƒtd
dƒtddƒƒt||ƒksòt‚ttddƒtddƒtd	d	ƒƒt	t
ddƒt
d	d	ƒƒk�s,t‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ td ddƒjtddƒk�s‚t‚||k�s�t‚|ˆk�sžt‚||k�s¬t‚||k�sºt‚||k�sÈt‚ˆˆk�sÖt‚dˆk�sät‚|ˆk�sòt‚|jtk�st‚ˆjtd	 k�st‚|jt| t|ƒ k�s2t‚|j|jk�sDt‚|j|jk�sVt‚|jd	t | k�snt‚| ¡ ˆ ¡   k�r–| t tgk�sœn t‚| ˆ¡ˆ ˆ¡  k�rÈˆt tgk�sÎn t‚|jdk�sÞt‚|jdk�sît‚|jdk�sþt‚|jdk�st‚tdddƒtddƒk�s*t‚tdddƒttddƒtd	dƒƒk�sRt‚tdddƒttddƒtdd	ƒƒk�szt‚t|ƒtttddƒtddƒtddƒƒƒk�sªt‚||k�s¸t‚t||ƒ|kdk�sÐt‚| |¡dk�sät‚| tddƒ¡dk�sþt‚| ttddƒtddƒƒ¡dk�s$t‚| t||ƒ¡dk�s>t‚| t||ƒ¡dk�sXt‚| |¡dk�slt‚| ttddƒtddƒ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‚ˆ ¡ ˆk�s t‚tt‡‡fdd„ƒ ttdƒdƒttdƒ dƒ }}ttddƒdd	ƒ}|j ||f||ffk�sbt‚td	ƒd	 }t||ƒ}|t|dƒ }|tddƒ }| !|¡| !|¡k�s®t‚ˆ !|¡ttt"d
d	ƒdƒtt"d
d	ƒtjƒƒgk�sät‚ˆ !|¡ttdd	ƒtt"ddƒd	ƒƒgk�st‚| !|¡t|tdtd	ƒƒƒgk�s8t‚| !|¡g k�sLt‚ˆ #t||t|dƒ ƒ¡�slt‚ˆ #t||t|dƒ ƒ¡�sŒt‚| #t|tdtd	ƒƒƒ¡�s¬t‚| #ttddƒtddƒƒ¡dk�sÒt‚| #|¡dk�sæt‚| #ttd	dƒddƒ¡dk�st‚| #ttddƒtddƒtd	dƒƒ¡dk�s6t‚| #ttddƒtddƒtd	dƒƒ¡dk�sdt‚ttddƒd
ƒ #ttddƒdƒ¡dk�s�t‚ttddƒd	dƒ !tddƒ¡ttddƒtt"ddƒt"ddƒƒƒttddƒtt"ddƒt"ddƒƒƒgk�søt‚ttddƒd	dƒ !td
dƒ¡ttd
dƒtddƒƒttd
dƒtd
dƒƒgk�sHt‚ttddƒd	ƒ !td
d
ƒ¡ttd
d
ƒtdd
ƒƒttd
d
ƒtd
dƒƒgk�s–t‚ttddƒd	ƒ !tdd	td	ƒ  dƒ¡ttdd	td	ƒ  dƒtdtd	ƒ dtd	ƒ ƒƒttdd	td	ƒ  dƒtdtd	ƒ dtd	ƒ ƒƒgk�	s(t‚ttddƒdƒ !tddƒ¡ttddƒtt"ddƒt"ddƒƒƒttddƒtddƒƒgk�	s‚t‚ttddƒdƒ !tdd ƒ¡ttdd ƒtdd!ƒƒttdd ƒtt"ddƒt"d"dƒƒƒgk�	sÜt‚d#d$„ ‰‡fd%d&„}ttddƒd	dƒ‰ ˆ  $tddƒ¡ttddƒtddƒƒttddƒtddƒƒgk�
sDt‚ˆ  $tddƒ¡ttddƒtddƒƒgk�
srt‚ˆ  $d'¡ttddƒtddƒƒgk�
sšt‚|ˆ  $tddƒd	¡ttt"d(d)ƒt"ddƒƒtt"d*d)ƒt"d+d,ƒƒƒttt"d-d.ƒt"d/d0ƒƒtt"d1d.ƒt"d2d	ƒƒƒgd	ƒ�st‚ttd
ƒtjƒ}|ˆ k�s0t‚|ˆ  $|d	¡ttt"d3d4ƒt"ddƒƒtt"d5d4ƒt"dd6ƒƒƒttt"d)d7ƒt"dd	ƒƒtt"d8d7ƒt"d9d)ƒƒƒgd	ƒ�s¢t‚td:d	d	td
ƒ d
 ƒ‰ |ˆ  $dd	¡ttt"d;dƒt"d<d=ƒƒtt"d>dƒt"d	dƒƒƒttddƒtd	d?ƒƒgd	ƒ�st‚td:ˆdƒ‰ ˆ  $ˆd df¡ttddƒtddƒƒgk�sPt‚tt%‡ ‡fd@d„ƒ d
}d}t|||ƒ}|j&t|d	 |d	  ƒk�s˜t‚|j&| }|j'|k�s²t‚|j(|d|  k�sÊt‚|j)|d|  k�sât‚|j*|d|d	   k�sþt‚t|||ƒ}|j&t|d	 |d	  ƒk�s*t‚|j&| }|j'|k�sDt‚|j(|d|  k�s\t‚|j)|d|  k�stt‚ttddAƒtddƒƒ}ttdAdƒtddƒƒ}ttddƒtddƒƒ}ttdBdƒtddCƒƒ}ttd	ƒd	 td	ƒd	 ƒttd	ƒ d	 td	ƒ d	 ƒg}t+ˆ|ƒg k�st‚t+|tddƒƒtddƒgk�s:t‚t+||ƒtddƒgk�sVt‚t+||ƒtddƒgk�srt‚t+||ƒ||d |d gfk�s–t‚t+||	ƒtddƒtddƒgk�sºt‚t+||
ƒttd	ƒd	 td	ƒd	 ƒgk�sæt‚| +|¡tddƒgk�st‚ˆ +|¡g k�st‚| +ttdd	ƒdƒ¡tddƒgk�s>t‚| +ttddƒdƒ¡g k�s^t‚| +ttd	dƒddƒ¡tddƒgk�sˆt‚| +ttddƒddƒ¡g k�sªt‚| +td	dƒ¡g k�sÄt‚| +|¡|k�sØt‚t+ttddƒd	dƒttd
dƒdd	ƒƒtd	dƒgk�st‚t+ttddƒd	ƒttd
dƒdƒƒtd	dƒgk�sDt‚t+ttddƒd	ƒttd!dƒdƒƒg k�spt‚t+ttddƒdd+ƒttddƒddDƒƒtdEdddF�gk�s¬t‚t+ttddƒdd+ƒttddƒdGdDƒƒg k�sÜt‚td:tjƒ +t,dHdId'ƒ¡tt"dd	ƒdƒttjdƒgk�st‚tt-‡fdJd„ƒ tt-‡fdKd„ƒ tt-‡fdLd„ƒ t|d
ƒ}t|dƒ} ttddƒdƒ}!| +| ¡g k�s†t‚| +|!¡g k�sšt‚| +|¡|k�s®t‚td	ƒ}t,td|ƒtd| ƒt|dƒƒ}"t+|"|ƒ}#t.|#ƒdk�sòt‚tddƒ|#k�st‚tddƒ|#k�st‚t|d	 |d	 ƒ|#k�s6t‚t|d	 | d	 ƒ|#k�sTt‚ttddƒdƒ}$ttddƒddMƒ}%t+|$|%ƒtddƒtdAdƒgtdAdƒtddƒgfk�s®t‚|% !tddƒ¡g k�sÈt‚ttddƒd
d	ƒ}%|% !td
dƒ¡ttd
dƒtd
dNƒƒgk�st‚ttddƒddCƒ}ttd	dƒdd0ƒ‰t"dOd+ƒ}&d	tdPƒ d+ }'t|&|'d0  |&d	 |' ƒt|&|'d0  |&d	 |' ƒg}(| +ˆ¡|(k�sŽt‚ttˆˆƒdd0ƒ‰tdPƒ}'t|' dQ |& |'t"d	d+ƒ |&d	  ƒt|'dQ |& |'t"dRd+ƒ |&d	  ƒg}(‡‡fdSdT„| +ˆ¡D ƒ|(k�st‚| #| !|t|dƒ ¡d ¡�s:t‚tdUd
d	ƒ‰ ˆ  !tdCdƒ¡ttdCdƒtddƒƒttdCdƒtt"dVdƒt"dWdƒƒƒgk�s”t‚td:dd	ƒ‰ ˆ  /ˆ j¡�s²t‚ˆ  /ˆ jtdˆ jt"ddCƒ ƒ ¡�sÚt‚ˆ  /ˆ jtˆ jt"ddCƒ dƒ ¡�st‚ˆ  /ˆ jtˆ jdƒ ¡dk�s$t‚ˆ  /ˆ jtˆ jt"ddCƒ dƒ ¡dk�sPt‚td:d	dƒ‰ ˆ  /ˆ j¡�snt‚ˆ  /ˆ jtdˆ jt"ddCƒ ƒ ¡�s–t‚ˆ  /ˆ jtˆ jt"ddCƒ dƒ ¡�s¾t‚ˆ  /ˆ jtˆ jdƒ ¡dk�sàt‚ˆ  /ˆ jtˆ jt"ddCƒ dƒ ¡dk�st‚| /tddƒ¡dk�s&t‚| /tdXdYƒ¡dk�s@t‚ˆ  0d	d
¡td:dd
ƒk�s^t‚ˆ  0d
d ¡td:d d ƒk�s|t‚ˆ  1t¡ˆ k�s�t‚ˆ  1tdU¡ttd	dƒd	dƒk�s´t‚tt%‡ fdZd„ƒ ttddƒdƒ})|) 1td	 ¡ttddƒdƒk�sút‚|) 1td
 ¡tttjtd
ƒd	 ƒdƒk�s(t‚|) 1td
 tddƒ¡ttddƒdƒk�sTt‚|) 1td
 tddƒ¡tttjtd
ƒd	  tjtd
ƒd	  ƒdƒk�sœt‚d S )[Nr    TrJ   r!   ÚtÚy1r   r"   r$   r#   r)   r'   c                   S   s   t d d d dƒS ©Nr"   ©r   r6   r6   r6   r7   rG   R   rH   z#test_ellipse_geom.<locals>.<lambda>c                   S   s   t ƒ S ©NrR   r6   r6   r6   r7   rG   S   rH   c                   S   s   t tddƒƒS ©Nr   )r   r   r6   r6   r6   r7   rG   T   rH   c                   S   s   t tdƒtdƒ ƒS )Nr    r!   )r   r   r6   r6   r6   r7   rG   U   rH   ©r"   r"   rC   Fç      à¿g      à?c                      s   t tˆ ˆƒddƒjdd�S )Nr"   r    )Z	parameter)r   r   Úarbitrary_pointr6   r   r6   r7   rG   †   rH   é   éM   r@   é„   é!   é   é(   é   r*   rD   éZ   c                 S   s4   t | j|j ƒd|  k o2t | j|j ƒd|  k S )zF tests whether l1 and 12 are within 10**(-prec)
        of each other é
   )ÚabsÚp1Úp2)Úl1Úl2Úprecr6   r6   r7   Úlines_close¶   s    z&test_ellipse_geom.<locals>.lines_closec                    s   t ‡‡ fdd„t| |ƒD ƒƒS )Nc                 3   s   | ]\}}ˆ ||ˆƒV  qd S rS   r6   )Ú.0rd   re   )rg   rf   r6   r7   Ú	<genexpr>»   s     z=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>)ÚallÚzip)Zll1Zll2rf   )rg   )rf   r7   Úline_list_closeº   s    z*test_ellipse_geom.<locals>.line_list_close©r   r"   iÍÿÿÿrE   içÿÿÿé   éS   é   é   éùÿÿÿr%   r?   é÷ÿÿÿi«þÿÿé«   iVÿÿÿé@   é   é)   iÕÿÿÿ©r   r   iÀÿÿÿéìÿÿÿéG   iáÿÿÿrA   c                      s   ˆ   ˆd df¡S rQ   )Únormal_linesr6   )r=   r    r6   r7   rG   Õ   rH   éûÿÿÿéöÿÿÿr`   gš™™™™™É?g      @©Úevaluateg+‡ÙÎ÷ï?)rC   r   ©r"   r   c                      s   t ˆ tddƒƒS )N)r   r   r   )r   r   r"   )r   r   r6   ©r4   r6   r7   rG     rH   c                      s   t ˆ tdƒƒS )NrX   )r   r   r6   r�   r6   r7   rG     rH   c                      s   t  ˆ d¡S rQ   )r   r   r6   r�   r6   r7   rG   	  rH   r,   éôÿÿÿé5   i—  éD   r+   c                    s   g | ]}|  ˆ d ˆdi¡‘qS ©r$   r"   )Úsubs)rh   Úpr   r6   r7   Ú
<listcomp>0  s     z%test_ellipse_geom.<locals>.<listcomp>©r"   r$   é   r&   g333333Ó?gš™™™™™Ù?c                      s   ˆ   td ¡S )Nr#   )Úrotater   r6   )r=   r6   r7   rG   P  rH   )2r   r   ZHalfr   r   r   r   r   r2   r   r   r   rL   r   ÚcenterÚarear   ra   ÚcircumferenceZplot_intervalÚminorÚmajorÚhradiusÚvradiusr   ÚhashZ__cmp__Zenclosesr   r   r   rW   ZfociÚtangent_linesr   Ú
is_tangentr{   ÚNotImplementedErrorZfocus_distanceÚeccentricityZ	periapsisZapoapsisZsemilatus_rectumr   r   Ú	TypeErrorÚlenZencloses_pointÚscaler‹   )*rO   rP   Zhalfrb   rc   Zp4r3   r5   Úc1Úc2Úc3rd   ZcenZradÚf1Úf2ZefÚvZp1_1Zp1_2Zp1_3rl   r‡   r�   r�   Úe4Zeccre   Úl3Úl4Z	pts_c1_l3ZcsmallZcbigZcoutÚt1ZpointsÚcircZelipr9   r;   ZansZcirr6   )r=   r4   rg   r    r!   r7   Útest_ellipse_geom:   s2   





,:.2((0&ÿÿ
 
6.&   &"ÿÿ
ÿÿ
,  ÿÿ
*ÿ
*ÿ
&00ÿÿ
 ÿÿ
 ÿÿ
*ÿ
ÿ
ÿ
,,þþ
,,þþ
,þþ
0 
 
8"$$,( *"84,$ÿ
0
ÿ 
ÿÿ


 
&ÿ
ÿ

4J$$ ÿÿ
(("ÿÿ
(("ÿÿ
$$.,r¦   c                  C   sþ   t ddd d�} | jtdƒd ks$t‚t dd tdƒd d�}|jdksHt‚t d dtdƒd d�}|jdkslt‚t tddƒddd�}|jdksŽt‚ttdd„ ƒ ttd	d„ ƒ ttd
d„ ƒ t d dd dƒj	dksÐt‚ttdd„ ƒ ttdd„ ƒ ttd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 ©Nr#   r"   r$   r§   )r   r   r   r6   r6   r6   r7   rG   k  rH   z#test_construction.<locals>.<lambda>c                   S   s   t tddƒdtdƒd�S )Nr#   r"   r)   r§   )r   r   r   r6   r6   r6   r7   rG   l  rH   c                   S   s   t tddƒdtjtdƒ d�S r¨   )r   r   r   ÚPir6   r6   r6   r7   rG   m  rH   c                   S   s   t d d ddd�S )Nr"   )r—   rR   r6   r6   r6   r7   rG   s  rH   c                   S   s   t tddƒddd�S )Nr#   r"   r>   r§   ©r   r   r6   r6   r6   r7   rG   v  rH   c                   S   s   t tddƒddd�S )Nr#   r"   rV   r§   rª   r6   r6   r6   r7   rG   w  rH   )
r   r—   r   r2   r’   r‘   r   r   r   Úlength)r3   r4   r5   r¡   r6   r6   r7   Útest_construction[  s    r¬   c                  C   s¨   t ddd�} ttddƒ| | ƒ}t dƒt dƒ }}tddƒD ]4}| ¡ }| ||¡ t||f|jƒ¡ 	d¡s:t
‚q:|jdd	�}| ||¡ t||f|jƒ¡ 	d¡s¤t
‚d S )
NrP   TrJ   r   ÚrxÚryr)   r"   )Úseed)r   r   r   ÚrangeZrandom_pointr1   r†   rk   ÚargsÚequalsr2   )rP   r5   r­   r®   ÚindÚrr6   r6   r7   Útest_ellipse_random_pointy  s    *rµ   c                   C   s   t tddƒƒdkst‚d S )Nrm   r$   zCircle(Point2D(0, 1), 2))Úreprr   r2   r6   r6   r6   r7   Ú	test_repr†  s    r·   c                  C   s€  t ddƒ} |  d¡t ddƒks"t‚| jdd�t ddƒks<t‚|  d¡tdddƒksVt‚td	dd
ƒ dd
d¡ttddƒddƒks‚t‚t d	dƒ dd
d¡ttddƒddƒks¬t‚td	dd
ƒ d
d
d¡ttddƒddƒksØt‚t d	dƒ d
d
d¡t tddƒdƒk�st‚t tddƒdƒ tdd
ƒtdd
ƒd¡t d	dƒk�s8t‚t d	dƒ dd¡t ddƒk�sZt‚t d	dƒ d
d
¡t d	dƒk�s|t‚d S )NrU   r$   rC   )rC   r"   )r!   )r"   rC   r…   r'   rx   r#   )r'   r)   rA   r}   rB   r*   iøÿÿÿr"   r)   )r   rš   r2   r   r   r   Ú	translate)r;   r6   r6   r7   Útest_transformŠ  s2    
ÿÿÿÿ
$ÿ
ÿ
ÿr¹   c                  C   sŽ   t tddƒddƒ} t tddƒddƒ}ttddƒdƒ}ttddƒtddƒtddƒƒ}| jdks`t‚|jdksnt‚|jdks|t‚|jd	ksŠt‚d S )
Nr   r#   r)   r$   r+   rD   )r>   r|   r#   r)   )r|   rs   rB   r)   )r+   r+   r$   r$   )r   r   r   Zboundsr2   )r3   r4   r›   rœ   r6   r6   r7   Útest_bounds   s    rº   c                     sÒ   t dƒ} t dƒ‰td| fˆd�}tdddƒ}|j| |¡j ksDt‚tddd	ƒ‰ ˆ jˆ  tddd�¡j kspt‚ˆ jˆ  tdtd�¡j ks�t‚tt	‡ ‡fd
d„ƒ t
ddƒ tddƒ¡t
tddƒdƒksÎt‚d S )Nr:   Úmr   ©Zsloperx   r€   )r$   r#   r"   r$   c                      s   ˆ   tdˆd�¡S )Nr€   r¼   )Úreflectr   r6   ©r=   r»   r6   r7   rG   ´  rH   ztest_reflect.<locals>.<lambda>rm   rU   rC   )r   r   r   r�   r½   r2   r   r   r   r–   r   r   )r:   Úlr¤   r6   r¾   r7   Útest_reflect«  s      rÀ   c                     sü  t tddƒddƒ‰ ttddƒdƒ} ˆ  tddƒ¡dks:t‚ˆ  tddƒ¡dksRt‚ˆ  ˆ ¡dksdt‚ˆ  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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ddƒ¡dk�s.t‚|  tddƒ¡dk�sHt‚|  tddƒ¡dk�sbt‚|  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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�s2t‚ˆ  tdd ƒ¡dk�sLt‚ˆ  td	d!ƒ¡dk�sft‚ˆ  tdd"ƒ¡dk�s€t‚ˆ  tdd#ƒ¡dk�sšt‚ˆ  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ddd*ƒ¡dk�s
t‚ˆ  tdd+dd*ƒ¡dk�s(t‚ˆ  td,ddd-ƒ¡dk�sFt‚|  td,ddd-ƒ¡dk�sdt‚ˆ  td	dd.d*ƒ¡dk�s‚t‚ˆ  td/d0d1ƒ¡dk�sžt‚ˆ  td/d0d+d*ƒ¡dk�s¼t‚ˆ  tdd2d3ƒ¡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%ƒ¡dk�sBt‚ˆ  td&d'd(ƒ¡dk�s^t‚ˆ  td,ddd-ƒ¡dk�s|t‚|  td,ddd-ƒ¡dk�sšt‚ˆ  td/d0d+d*ƒ¡dk�s¸t‚ˆ  tdd2d3ƒ¡dk�sÔt‚t	t
‡ fd4d5„ƒ t	t
‡ fd6d5„ƒ d S )7Nr   r#   r)   r$   r+   rD   FTrx   r"   )r$   r+   )r-   r+   )rD   r+   )r|   r+   )iñÿÿÿry   )r>   r+   )r>   iêÿÿÿ)rv   r,   )rB   r,   )rB   ry   )r$   r)   )rB   r)   ©r$   r$   )rr   rD   r‰   ©r#   r   )rX   rX   )r>   r   )r>   r)   )r#   r)   )r`   r   )r`   r`   rU   )gìQ¸…ëÀgü©ñÒMbP¿)r>   r"   )r)   r)   )r)   r|   )iœÿÿÿiÎÿÿÿ)iØÿÿÿi²þÿÿ)iºÿÿÿiÌÿÿÿrm   )r   r)   )r   r|   )r>   r|   )r#   r|   )rD   rD   )r#   rX   )r#   r‚   )r*   r)   )r)   rD   )r*   r|   c                      s   ˆ   tdddƒ¡S rT   )r•   r   r6   ©r3   r6   r7   rG   è  rH   z!test_is_tangent.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )Nr)   )r•   r   r6   rÃ   r6   r7   rG   é  rH   )r   r   r   r•   r2   r   r   r   r   r   r˜   )r›   r6   rÃ   r7   Útest_is_tangent¸  sb    rÄ   c                      sJ   t dƒ‰ttddƒddƒ‰ ˆ  dˆ¡ˆdiks2t‚tt‡ ‡fdd„ƒ d S )NrO   r   r#   r)   rÂ   c                      s   ˆ   dˆ¡S )N)r'   r   )Úparameter_valuer6   ©r=   rO   r6   r7   rG   ð  rH   z&test_parameter_value.<locals>.<lambda>)r   r   r   rÅ   r2   r   rL   r6   r6   rÆ   r7   Útest_parameter_valueì  s    rÇ   c            	      C   s$  t dƒ\} }ttddƒddƒ}dttd| d  ƒ| d  | ddfƒ d }d	ttd
|d  ƒ|d  |ddfƒ d }dtd| d d  ƒ }tt||| |fƒ|  | ddfƒ}|| ¡ d ksÄt‚|| ¡ d ksØt‚|| ¡ d ksìt‚| tddƒ¡}dt dt dt f}||k�s t‚d S )Nzx, yr   r)   r'   r%   r@   r$   r|   r`   é   rA   r#   r"   r*   iD  iM  iX  )r	   r   r   r   r   Zsecond_moment_of_arear2   r   )	r    r!   r=   ZI_yyZI_xxÚYZI_xyr¤   Út2r6   r6   r7   Útest_second_moment_of_areaó  s    ,,"rË   c                  C   s¤  t ddd�} tddƒ}| ¡ dt ks*t‚| ¡ dt dt fksFt‚td| d	 ƒ}| ¡ t| d
  t| ƒ d t|  t| ƒd
  d  ks�t‚| ¡ t| d
  tdƒ t| d
  tdƒ fksÄt‚tddd�\}}t	d||ƒ}| ¡ t| |d	  tdƒ t|d	  | tdƒ fk�st‚| ¡ t|d
  | tdƒ t| |d
  tdƒ  k�s\t‚| 
td	 ¡}| ¡ t|d	  | tdƒ t| |d	  tdƒ fk�s¨t‚| ¡ t|d
  | tdƒ t| |d
  tdƒ  k�sæt‚t	||fd	dƒ}| ¡ dt dt fk�st‚| ¡ dt k�s*t‚t	tddƒd	d	ƒ}| ¡ d	t d	t fk�sZt‚| td	d	ƒ¡d	t d	t fk�s€t‚| d¡d	t d	t fk�s t‚d S )Nr<   T)Zpositive)r#   rD   r%   i   é€   )r$   rB   r$   r#   ru   r(   za, b)r'   r*   r'   r*   r&   éx   r   rÁ   )r   r   Zpolar_second_moment_of_arear   r2   Zsection_modulusr
   r   r	   r   r‹   r   )r<   r;   r9   r:   r=   r6   r6   r7   Ú4test_section_modulus_and_polar_second_moment_of_area  s*    
<4>>>>&rÎ   c                  C   s¾   t dƒ} t dƒ}ttddƒ| |ƒjd|  t| d |d  | d  ƒ ksLt‚ttddƒddƒjdttdƒd	 ƒ ksxt‚td d
d dƒjdt ks”t‚ttd ddd�j 	d¡d ƒdk sºt‚d S )NÚMr»   r   r'   r$   r)   r,   rB   r@   r"   r#   )r‘   r’   rÈ   gûRÃeé†9@g»½×Ùß|Û=)
r   r   r   rŽ   r   r2   r   r   ra   Zevalf)rÏ   r»   r6   r6   r7   Útest_circumference  s    <,rÐ   c                   C   s   t ddƒtddƒkst‚d S )Nr‰   r   r"   r$   )r   r   r2   r6   r6   r6   r7   Útest_issue_15259-  s    rÑ   c                  C   sš   d} d}t ddƒ}t|| ƒ}| | |¡d ¡dks8t‚|jjjsFt‚|jjjsTt‚|j	js`t‚t|| dd�}|jjj
s|t‚|jjj
sŠt‚|j	j
s–t‚d S )Ng'‹FÌ´˜?)g–mi$¶?gTF\ý´?r   gÇ•¶Ÿ­?TFr~   )r   r   r•   r”   r2   rŒ   r    Zis_Rationalr!   ZradiusZis_Float)ZRiZCiÚAr;   Úur6   r6   r7   Útest_issue_15797_equals1  s    

rÔ   c                  C   s`   t dƒ\} }}}t| |f||ƒ}| ¡ t| |ft||ƒƒks@t‚tddƒ ¡ tddƒks\t‚d S )Núx y a b©r#   r'   r%   )r	   r   Zauxiliary_circler   r   r2   ©r    r!   r9   r:   r=   r6   r6   r7   Útest_auxiliary_circle@  s     rØ   c                  C   sr   t dƒ\} }}}t| |f||ƒ}| ¡ t| |ft|d |d  ƒƒksJt‚tddƒ ¡ tddtdƒ ƒksnt‚d S )NrÕ   r$   rÖ   r%   )r	   r   Zdirector_circler   r   r2   r×   r6   r6   r7   Útest_director_circleI  s    *rÙ   c            
      C   s
  t ddd�\} }}}t dƒ\}}tt||ƒ||ƒ}|j| |jj  tddƒ }|j||jj  tddƒ }|| |jd |jd  tddƒ  }	| 	¡ |	ks t
‚ttddƒddƒ}d| d  tddƒ }d|d  tddƒ }|| d	tddƒ  }	| 	¡ |	k�st
‚d S )
Nzx y h kTrJ   za br$   r#   r"   r*   é   )r	   r   r   r‘   rŒ   r    r   r’   r!   Zevoluter2   )
r    r!   ÚhÚkr9   r:   r=   r¤   rÊ   ÚEr6   r6   r7   Útest_evoluteR  s    &rÞ   c                  C   s*   t tddƒddƒ} |  dd¡dks&t‚d S )Nr"   r   r#   r$   z#FFAAFFz”<ellipse fill="#FFAAFF" stroke="#555555" stroke-width="4.0" opacity="0.6" cx="1.00000000000000" cy="0" rx="3.00000000000000" ry="2.00000000000000"/>)r   r   Z_svgr2   rÃ   r6   r6   r7   Útest_svgc  s    rß   N)?Z
sympy.corer   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r	   Z$sympy.functions.elementary.complexesr
   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.geometry.liner   Zsympy.geometry.pointr   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   Zsympy.integrals.integralsr   Z*sympy.functions.special.elliptic_integralsr   r   r8   rN   r¦   r¬   rµ   r·   r¹   rº   rÀ   rÄ   rÇ   rË   rÎ   rÐ   rÑ   rÔ   rØ   rÙ   rÞ   rß   r6   r6   r6   r7   Ú<module>   sL   4
  "4
		