U
    Ý@·fg  ã                   @   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   úE/tmp/pip-unpacked-wheel-6uje5nh9/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st‚|ˆ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st‚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st‚ˆ  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st‚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st‚| ¡ 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
		