o
    à8VaBb  ã                   @   sL  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 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„ Z&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+edd„ ƒZ,dd „ Z-d!d"„ Z.d#d$„ Z/d%d&„ Z0d'd(„ Z1d)d*„ Z2d+d,„ Z3d-d.„ Z4d/S )0é    )ÚEqÚRationalÚSÚSymbolÚsymbolsÚpiÚsqrtÚooÚPoint2DÚ	Segment2DÚAbsÚsec)Ú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s4J ‚ttddƒd	dƒ}t|jddƒt|  | d d | | d d
  d ƒks\J ‚ttddƒddƒ}t|jddƒtd|  | d d d | d|  d d d  d ƒks‹J ‚d S )Nr   ©ÚxÚyé   é   é   )Z_slopeé   é   é   é    é   é   éþÿÿÿé   é   é´   )Ú	sympy.abcr   r    r   r   ÚstrÚequation)r   r    Úe1Úe2Úe3© r4   úC/usr/lib/python3/dist-packages/sympy/geometry/tests/test_ellipse.pyÚ!test_ellipse_equation_using_slope   s   F>Pr6   c                      sÜ  ddl m‰m‰m‰ m‰ tˆd ˆd  dˆ  dˆ  d ƒtttdƒd dƒtd	ƒd ƒks2J ‚tˆd ˆd  d
ˆ  dˆ  d ƒttddƒdƒksPJ ‚tˆ d ˆd  d
ˆ   dˆ  d dddttddƒdƒksqJ ‚tˆd ˆd  d ƒttddƒdƒks‡J ‚tˆd ˆd  ƒttddƒdƒks›J ‚tˆ d ˆd  dddttddƒdƒks²J ‚tˆd ˆd  d
ˆ  d ƒttddƒdƒksÌJ ‚tˆd ˆd  d
ˆ  d ƒttddƒdƒksæJ ‚td
ˆd  d
ˆd   d
ˆ  dˆ  d ƒttt	ddƒt	ddƒƒdtdƒ d
 ƒksJ ‚tt
ˆ d ˆd  dƒdˆdttddƒdƒks0J ‚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„ƒ d S )Nr   )r   r    ÚaÚbr#   r"   r&   r$   éýÿÿÿr*   é9   r)   é   éüÿÿÿr7   r8   r   r(   r!   éÿÿÿÿé%   c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr#   r"   r&   é   ©r   r4   r   r4   r5   Ú<lambda>%   ó   ( z+test_object_from_equation.<locals>.<lambda>c                      s   t ˆ d ˆd  d ƒS )Nr#   r;   r@   r4   r   r4   r5   rA   &   ó    c                      s   t ˆ d ˆd  d dddS )Nr#   r;   r7   r8   r   r@   r4   ©r7   r8   r4   r5   rA   '   ó    c                      s   t ˆ d dˆ  d ƒS )Nr#   r)   r$   r@   r4   r   r4   r5   rA   (   rC   c                      s0   t dˆ d  dˆd   dˆ   dˆ  d ƒS )Nr)   r#   r&   r$   r;   r@   r4   r   r4   r5   rA   )   s   0 c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr#   r"   r&   r$   r@   r4   rD   r4   r5   rA   *   rB   )r.   r   r    r7   r8   r   r
   r   r   r   r   r   r   Ú
ValueErrorr4   r4   )r7   r8   r   r    r5   Útest_object_from_equation   s&   8

ÿ<B,(.44^6rG   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syJ ‚ttddƒtddƒtd	d	ƒƒtt	ddƒt	d	d	ƒƒks•J ‚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¿J ‚||ksÅJ ‚|ˆksËJ ‚||ksÑJ ‚||v s×J ‚||v sÝJ ‚ˆˆv sãJ ‚dˆvséJ ‚|ˆvsïJ ‚|jtksöJ ‚ˆjtd	 ksÿJ ‚|jt| t|ƒ ksJ ‚|j|jksJ ‚|j|jksJ ‚|jd	t | ks+J ‚| ¡ ˆ ¡   kr@| t tgksCJ ‚ J ‚| ˆ¡ˆ ˆ¡  krZˆt tgks]J ‚ J ‚|jdkseJ ‚|jdksmJ ‚|jdksuJ ‚|jdks}J ‚tdddƒtddƒks‹J ‚tdddƒttddƒtd	dƒƒksŸJ ‚tdddƒttddƒtdd	ƒƒks³J ‚t|ƒtttddƒtddƒtddƒƒƒksËJ ‚||v sÒJ ‚t||ƒ|v du sÞJ ‚| |¡dksèJ ‚| tddƒ¡dksõJ ‚| ttddƒtddƒƒ¡du sJ ‚| t||ƒ¡du sJ ‚| t||ƒ¡du s"J ‚| |¡du s,J ‚| ttddƒtddƒtddƒƒ¡du sCJ ‚| t|dd
ƒ¡du sQJ ‚| t|dd
ƒ¡du s_J ‚| t|dd
ƒ¡du smJ ‚ˆ ¡ ˆv svJ ‚t
t‡‡fdd„ƒ ttdƒdƒttdƒ dƒ}}ttddƒdd	ƒ}|j||f||ffv s§J ‚td	ƒd	 }t||ƒ}|t|dƒ }|tddƒ }|  |¡|  |¡ksÍJ ‚ˆ  |¡ttt!d
d	ƒdƒtt!d
d	ƒtjƒƒgksèJ ‚ˆ  |¡ttdd	ƒtt!ddƒd	ƒƒgksÿJ ‚|  |¡t|tdtd	ƒƒƒgksJ ‚|  |¡g ksJ ‚ˆ "t||t|dƒ ƒ¡s,J ‚ˆ "t||t|dƒ ƒ¡s<J ‚| "t|tdtd	ƒƒƒ¡sLJ ‚| "ttddƒtddƒƒ¡du s_J ‚| "|¡du siJ ‚| "ttd	dƒddƒ¡du szJ ‚| "ttddƒtddƒtd	dƒƒ¡du s‘J ‚| "ttddƒtddƒtd	dƒƒ¡du s¨J ‚ttddƒd
ƒ "ttddƒdƒ¡du s¾J ‚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òJ ‚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sJ ‚ttddƒd	ƒ  td
d
ƒ¡ttd
d
ƒtdd
ƒƒttd
d
ƒtd
dƒƒgksAJ ‚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ŠJ ‚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·J ‚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äJ ‚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sJ ‚ˆ  #tddƒ¡ttddƒtddƒƒgks/J ‚ˆ  #d'¡ttddƒtddƒƒgksCJ ‚|ˆ  #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J ‚ttd
ƒtjƒ}|ˆ v sŽJ ‚|ˆ  #|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ÇJ ‚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 J ‚td:ˆdƒ‰ ˆ  #ˆd df¡ttddƒtddƒƒgksJ ‚t
t$‡ ‡fd@d„ƒ d
}d}t|||ƒ}|j%t|d	 |d	  ƒksBJ ‚|j%| }|j&|ksOJ ‚|j'|d|  ks[J ‚|j(|d|  ksgJ ‚|j)|d|d	   ksuJ ‚t|||ƒ}|j%t|d	 |d	  ƒks‹J ‚|j%| }|j&|ks˜J ‚|j'|d|  ks¤J ‚|j(|d|  ks°J ‚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J ‚t*|tddƒƒtddƒgksJ ‚t*||ƒtddƒgks!J ‚t*||ƒtddƒgks/J ‚t*||ƒ||d |d gfv sAJ ‚t*||	ƒtddƒtddƒgksSJ ‚t*||
ƒttd	ƒd	 td	ƒd	 ƒgksiJ ‚| *|¡tddƒgkswJ ‚ˆ *|¡g ksJ ‚| *ttdd	ƒdƒ¡tddƒgks•J ‚| *ttddƒdƒ¡g ks¥J ‚| *ttd	dƒddƒ¡tddƒgksºJ ‚| *ttddƒddƒ¡g ksËJ ‚| *td	dƒ¡g ksØJ ‚| *|¡|ksâJ ‚t*ttddƒd	dƒttd
dƒdd	ƒƒtd	dƒgksþJ ‚t*ttddƒd	ƒttd
dƒdƒƒtd	dƒgksJ ‚t*ttddƒd	ƒttd!dƒdƒƒg ks.J ‚t*ttddƒdd+ƒttddƒddDƒƒtddƒgksJJ ‚t*ttddƒdd+ƒttddƒdEdDƒƒg ksbJ ‚td:tjƒ *t+dFdGd'ƒ¡tt!dd	ƒdƒttjdƒgks€J ‚t
t,‡fdHd„ƒ t
t,‡fdId„ƒ t
t,‡fdJd„ƒ t|d
ƒ}t|dƒ} ttddƒdƒ}!| *| ¡g ks·J ‚| *|!¡g ksÁJ ‚| *|¡|ksËJ ‚td	ƒ}t+td|ƒtd| ƒt|dƒƒ}"t*|"|ƒ}#t-|#ƒdksíJ ‚tddƒ|#v s÷J ‚tddƒ|#v 	sJ ‚t|d	 |d	 ƒ|#v 	sJ ‚t|d	 | d	 ƒ|#v 	sJ ‚ttddƒdƒ}$ttddƒddKƒ}%t*|$|%ƒtddƒtdAdƒgtdAdƒtddƒgfv 	sKJ ‚|%  tddƒ¡g k	sXJ ‚ttddƒd
d	ƒ}%|%  td
dƒ¡ttd
dƒtd
dLƒƒgk	sxJ ‚ttddƒddCƒ}ttd	dƒdd0ƒ‰t!dMd+ƒ}&d	tdNƒ d+ }'t|&|'d0  |&d	 |' ƒt|&|'d0  |&d	 |' ƒg}(| *ˆ¡|(k	s»J ‚ttˆˆƒdd0ƒ‰tdNƒ}'t|' dO |& |'t!d	d+ƒ |&d	  ƒt|'dO |& |'t!dPd+ƒ |&d	  ƒg}(‡‡fdQdR„| *ˆ¡D ƒ|(k	sÿJ ‚| "|  |t|dƒ ¡d ¡
sJ ‚tdSd
d	ƒ‰ ˆ   tdCdƒ¡ttdCdƒtddƒƒttdCdƒtt!dTdƒt!dUdƒƒƒgk
s>J ‚td:dd	ƒ‰ ˆ  .ˆ j¡
sMJ ‚ˆ  .ˆ jtdˆ jt!ddCƒ ƒ ¡
saJ ‚ˆ  .ˆ jtˆ jt!ddCƒ dƒ ¡
suJ ‚ˆ  .ˆ jtˆ jdƒ ¡du 
s†J ‚ˆ  .ˆ jtˆ jt!ddCƒ dƒ ¡du 
sœJ ‚td:d	dƒ‰ ˆ  .ˆ j¡
s«J ‚ˆ  .ˆ jtdˆ jt!ddCƒ ƒ ¡
s¿J ‚ˆ  .ˆ jtˆ jt!ddCƒ dƒ ¡
sÓJ ‚ˆ  .ˆ jtˆ jdƒ ¡du 
säJ ‚ˆ  .ˆ jtˆ jt!ddCƒ dƒ ¡du 
súJ ‚| .tddƒ¡du sJ ‚| .tdVdWƒ¡du sJ ‚ˆ  /d	d
¡td:dd
ƒks#J ‚ˆ  /d
d ¡td:d d ƒks2J ‚ˆ  0t¡ˆ ks<J ‚ˆ  0tdS¡ttd	dƒd	dƒksNJ ‚t
t$‡ fdXd„ƒ ttddƒdƒ})|) 0td	 ¡ttddƒdƒksqJ ‚|) 0td
 ¡tttjtd
ƒd	 ƒdƒksˆJ ‚|) 0td
 tddƒ¡ttddƒdƒksžJ ‚|) 0td
 tddƒ¡tttjtd
ƒd	  tjtd
ƒd	  ƒdƒksÂJ ‚d S )YNr   T©Úrealr    ÚtÚy1r   r!   r#   r"   r(   r&   c                   S   s   t d d d dƒS ©Nr!   ©r   r4   r4   r4   r5   rA   E   ó    z#test_ellipse_geom.<locals>.<lambda>c                   S   s   t ƒ S ©NrM   r4   r4   r4   r5   rA   F   s    c                   S   s   t tddƒƒS ©Nr   ©r   r   r4   r4   r4   r5   rA   G   rN   c                   S   s   t tdƒtdƒ ƒS )Nr   r    )r   r   r4   r4   r4   r5   rA   H   ó    ©r!   r!   r=   Fç      à¿g      à?c                      s   t tˆ ˆƒddƒjddS )Nr!   r   )Z	parameter)r   r   Úarbitrary_pointr4   r   r4   r5   rA   y   s    é   éM   r;   é„   é!   é   é(   é   r)   é   éZ   c                 S   s4   t | j|j ƒd|  k ot | j|j ƒd|  k S )zF tests whether l1 and 12 are within 10**(-prec)
        of each other é
   )ÚabsÚp1Úp2)Úl1Úl2Úprecr4   r4   r5   Úlines_close©   s   4z&test_ellipse_geom.<locals>.lines_closec                    s   t ‡‡ fdd„t| |ƒD ƒƒS )Nc                 3   s     | ]\}}ˆ ||ˆƒV  qd S rO   r4   )Ú.0rc   rd   )rf   re   r4   r5   Ú	<genexpr>®   s   € z=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>)ÚallÚzip)Zll1Zll2re   )rf   )re   r5   Úline_list_close­   s   z*test_ellipse_geom.<locals>.line_list_close©r   r!   iÍÿÿÿr?   içÿÿÿé   éS   é   é   éùÿÿÿr$   r:   é÷ÿÿÿi«þÿÿé«   iVÿÿÿé@   é   é)   iÕÿÿÿ©r   r   iÀÿÿÿéìÿÿÿéG   iáÿÿÿr<   c                      s   ˆ   ˆd df¡S rL   )Únormal_linesr4   )Úer   r4   r5   rA   È   ó    éûÿÿÿéöÿÿÿr_   gš™™™™™É?g+‡ÙÎ÷ï?)r=   r   ©r!   r   c                      s   t ˆ tddƒƒS )N)r   r   r   )r   r   r!   )r   r   r4   ©r2   r4   r5   rA   ù   ó    c                      s   t ˆ tdƒƒS )NrV   )r   r   r4   r€   r4   r5   rA   ú   rN   c                      s   t  ˆ d¡S rL   )r   r   r4   r€   r4   r5   rA   û   ó    r+   éôÿÿÿé5   i—  éD   r*   c                    s   g | ]}|  ˆ d ˆdi¡‘qS ©r#   r!   )Úsubs)rg   Úpr   r4   r5   Ú
<listcomp>"  rE   z%test_ellipse_geom.<locals>.<listcomp>©r!   r#   é   r%   g333333Ó?gš™™™™™Ù?c                      s   ˆ   td ¡S )Nr"   )Úrotater   r4   )r{   r4   r5   rA   B  rN   )1r   r   ZHalfr   r   r   r   r   r   r
   r   rF   r   ÚcenterÚarear   r`   ÚcircumferenceZplot_intervalÚminorÚmajorÚhradiusÚvradiusr   ÚhashZ__cmp__Zenclosesr   r   r   rU   ZfociÚtangent_linesr   Ú
is_tangentrz   ÚNotImplementedErrorZfocus_distanceÚeccentricityZ	periapsisZapoapsisZsemilatus_rectumr   r   Ú	TypeErrorÚlenZencloses_pointÚscalerŒ   )*rJ   rK   Zhalfra   rb   Zp4r1   r3   Úc1Úc2Zc3rc   ZcenZradÚf1Úf2ZefÚvZp1_1Zp1_2Zp1_3rk   rˆ   r‘   r   Úe4Zeccrd   Úl3Úl4Z	pts_c1_l3ZcsmallZcbigZcoutÚt1ZpointsZcircZelipr7   ÚcZansZcirr4   )r{   r2   rf   r   r    r5   Útest_ellipse_geom-   s,  





,804((0&ÿ
ÿ 
6.&   &"ÿ
ÿÿ
ÿ,  ÿ
ÿ*
ÿ*
ÿ&00ÿ
ÿ ÿ
ÿ ÿ
ÿ*
ÿ
ÿ
ÿ,,þ
þ,,þ
þ,þ
þ0 
 
8"$$,( *"84,80
ÿÿ
ÿ

 
&
ÿ
ÿ
4J$$ ÿ
ÿ(("ÿ
ÿ(("ÿ
ÿ$$.,Lr¦   c                  C   sþ   t ddd d} | jtdƒd ksJ ‚t dd tdƒd d}|jdks$J ‚t d dtdƒd d}|jdks6J ‚t tddƒddd}|jdksGJ ‚ttdd„ ƒ ttd	d„ ƒ ttd
d„ ƒ t d dd dƒjdkshJ ‚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   r4   r4   r4   r5   rA   ]  s    z#test_construction.<locals>.<lambda>c                   S   s   t tddƒdtdƒdS )Nr"   r!   r(   r§   )r   r   r   r4   r4   r4   r5   rA   ^  rC   c                   S   s   t tddƒdtjtdƒ dS r¨   )r   r   r   ZPir4   r4   r4   r5   rA   _  rE   c                   S   s   t d d dddS )Nr!   )r˜   rM   r4   r4   r4   r5   rA   e  r   c                   S   ó   t tddƒdddS )Nr"   r!   r9   r§   ©r   r   r4   r4   r4   r5   rA   h  rR   c                   S   r©   )Nr"   r!   rT   r§   rª   r4   r4   r4   r5   rA   i  rR   )	r   r˜   r   r“   r’   r   r   r   Úlength)r1   r2   r3   r¡   r4   r4   r5   Útest_constructionM  s   r¬   c                  C   s¨   t ddd} ttddƒ| | ƒ}t dƒt dƒ}}tddƒD ]}| ¡ }| ||¡ t||f|jƒ¡ 	d¡s7J ‚q|jdd	}| ||¡ t||f|jƒ¡ 	d¡sRJ ‚d S )
NrK   TrH   r   ÚrxÚryr(   r!   )Zseed)
r   r   r   ÚrangeZrandom_pointr0   r‡   rj   ÚargsZequals)rK   r3   r­   r®   ZindÚrr4   r4   r5   Útest_ellipse_random_pointk  s   *,r²   c                   C   s   t tddƒƒdksJ ‚d S )Nrl   r#   zCircle(Point2D(0, 1), 2))Úreprr   r4   r4   r4   r5   Ú	test_reprx  s   r´   c                  C   sx  t ddƒ} |  d¡t ddƒksJ ‚| jddt ddƒksJ ‚|  d¡tdddƒks+J ‚td	dd
ƒ dd
d¡ttddƒddƒksAJ ‚t d	dƒ dd
d¡ttddƒddƒksVJ ‚td	dd
ƒ d
d
d¡ttddƒddƒkslJ ‚t d	dƒ d
d
d¡t tddƒdƒks€J ‚t tddƒdƒ tdd
ƒtdd
ƒd¡t d	dƒksšJ ‚t d	dƒ dd¡t ddƒksªJ ‚t d	dƒ d
d
¡t d	dƒksºJ ‚d S )NrS   r#   r=   )r=   r!   )r    )r!   r=   r†   r&   rw   r"   )r&   r(   r<   r~   é	   r)   iøÿÿÿr!   r(   )r   r›   r   r   r   Ú	translate)r¥   r4   r4   r5   Ú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s0J ‚|jdks7J ‚|jdks>J ‚|jd	ksEJ ‚d S )
Nr   r"   r(   r#   r*   r]   )r9   r}   r"   r(   )r}   rr   rµ   r(   )r*   r*   r#   r#   )r   r   r   Zbounds)r1   r2   rœ   r   r4   r4   r5   Útest_bounds’  s   r¸   c                     sÒ   t dƒ} t dƒ‰td| fˆd}tdddƒ}|j| |¡j ks"J ‚tddd	ƒ‰ ˆ jˆ  tddd¡j ks8J ‚ˆ jˆ  tdtd¡j ksHJ ‚tt‡ ‡fd
d„ƒ t	ddƒ tddƒ¡t	t
ddƒdƒksgJ ‚d S )Nr8   Úmr   ©Zsloperw   r   )r#   r"   r!   r#   c                      s   ˆ   tdˆd¡S )Nr   rº   )Úreflectr   r4   ©r{   r¹   r4   r5   rA   ¦  r|   ztest_reflect.<locals>.<lambda>rl   rS   r=   )r   r   r   rŽ   r»   r   r	   r   r—   r   r
   )r8   Úlr¤   r4   r¼   r5   Útest_reflect  s     .r¾   c                     s¸  t tddƒddƒ‰ ttddƒdƒ} ˆ  tddƒ¡du sJ ‚ˆ  tddƒ¡du s)J ‚ˆ  ˆ ¡du s2J ‚ˆ  t d	d
dƒ¡du s?J ‚ˆ  t d	ddƒ¡du sLJ ‚|  t ddd
ƒ¡du sYJ ‚|  tddƒ¡du seJ ‚|  tddƒ¡du sqJ ‚|  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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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d	dƒ¡du sJ ‚ˆ  tdd ƒ¡du sJ ‚ˆ  tdd!ƒ¡du s)J ‚ˆ  td	d"d#ƒ¡du s7J ‚ˆ  td$d%d&ƒ¡du sEJ ‚ˆ  tddd'ƒ¡du sSJ ‚ˆ  tddd(ƒ¡du saJ ‚ˆ  tdd)dd(ƒ¡du spJ ‚ˆ  td*ddd+ƒ¡du sJ ‚|  td*ddd+ƒ¡du sŽJ ‚ˆ  td	dd,d(ƒ¡du sJ ‚ˆ  td-d.d/ƒ¡du s«J ‚ˆ  td-d.d)d(ƒ¡du sºJ ‚ˆ  tdd0d1ƒ¡du sÈJ ‚tt	‡ fd2d3„ƒ tt	‡ fd4d3„ƒ d S )5Nr   r"   r(   r#   r*   r]   FTrw   r!   )r#   r*   )r,   r*   )r]   r*   )r}   r*   )iñÿÿÿrx   )r9   r*   )r9   iêÿÿÿ)ru   r+   )rµ   r+   )rµ   rx   ©r#   r#   )rq   r]   rŠ   ©r"   r   )rV   rV   )r9   r   )r9   r(   )r"   r(   )r_   r   )r_   r_   rS   )gìQ¸…ëÀgü©ñÒMbP¿)r9   r!   )r(   r(   )r(   r}   )iœÿÿÿiÎÿÿÿ)iØÿÿÿi²þÿÿ)iºÿÿÿiÌÿÿÿrl   )r   r(   )r   r}   )r9   r}   )r"   r}   )r]   r]   )r"   rV   )r"   rƒ   )r)   r(   )r(   r]   )r)   r}   c                      s   ˆ   tdddƒ¡S rP   )r–   r   r4   ©r1   r4   r5   rA   Ï  r|   z!test_is_tangent.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )Nr(   )r–   r   r4   rÁ   r4   r5   rA   Ð  rN   )
r   r   r   r–   r   r   r   r   r   r™   )rœ   r4   rÁ   r5   Útest_is_tangentª  sL   rÂ   c                      sJ   t dƒ‰ttddƒddƒ‰ ˆ  dˆ¡ˆdiksJ ‚tt‡ ‡fdd„ƒ d S )NrJ   r   r"   r(   rÀ   c                      s   ˆ   dˆ¡S )N)r&   r   )Úparameter_valuer4   ©r{   rJ   r4   r5   rA   ×  r‚   z&test_parameter_value.<locals>.<lambda>)r   r   r   rÃ   r   rF   r4   r4   rÄ   r5   Ú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sbJ ‚|| ¡ d kslJ ‚|| ¡ d ksvJ ‚| tddƒ¡}dt dt dt f}||ksJ ‚d S )Nzx, yr   r(   r&   r$   r;   r#   r}   r_   é   r<   r"   r!   r)   iD  iM  iX  )r   r   r   r   r   Zsecond_moment_of_arear   )	r   r    r{   ZI_yyZI_xxÚYZI_xyr¤   Út2r4   r4   r5   Útest_second_moment_of_areaÚ  s   ,,"rÉ   c                  C   sœ  t ddd} tddƒ}| ¡ dt ksJ ‚| ¡ dt dt fks#J ‚td| d	 ƒ}| ¡ t| d
  t| ƒ d t|  t| ƒd
  d  ksHJ ‚| ¡ t| d
  tdƒ t| d
  tdƒ fksbJ ‚tddd\}}td||ƒ}| ¡ t| |d	  tdƒ t|d	  | tdƒ fksŽJ ‚| ¡ t|d
  | tdƒ t| |d
  tdƒ  ks¬J ‚| 	td	 ¡}| ¡ t|d	  | tdƒ t| |d	  tdƒ fksÑJ ‚| ¡ t|d
  | tdƒ t| |d
  tdƒ  ksïJ ‚t||fd	dƒ}| ¡ dt dt fksJ ‚| ¡ dt ksJ ‚tt
ddƒd	d	ƒ}| ¡ d	t d	t fks)J ‚| t
d	d	ƒ¡d	t d	t fks<J ‚| d¡d	t d	t fksLJ ‚d S )NÚdT)Zpositive)r"   r]   r$   i   é€   )r#   rµ   r#   r"   rt   r'   za, b)r&   r)   r&   r)   r%   éx   r   r¿   )r   r   Zpolar_second_moment_of_arear   Zsection_modulusr   r   r   r   rŒ   r   )rÊ   r¥   r7   r8   r{   r4   r4   r5   Ú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s&J ‚ttddƒddƒjdttdƒd	 ƒ ks<J ‚td d
d dƒjdt ksJJ ‚ttd dddj d¡d ƒdk s]J ‚d S )NÚMr¹   r   r&   r#   r(   r+   rµ   r;   r!   r"   )r’   r“   rÆ   gûRÃeé†9@g»½×Ùß|Û=)	r   r   r   r   r   r   r   r`   Zevalf)rÎ   r¹   r4   r4   r5   Útest_circumference  s   <,*rÏ   c                   C   s   t ddƒtddƒksJ ‚d S )NrŠ   r   r!   r#   rQ   r4   r4   r4   r5   Útest_issue_15259  s   rÐ   c                  C   sš   d} d}t ddƒ}t|| ƒ}| | |¡d ¡dksJ ‚|jjjs#J ‚|jjjs*J ‚|jjs0J ‚t|| dd}|jjj	s>J ‚|jjj	sEJ ‚|jj	sKJ ‚d S )Ng'‹FÌ´˜?)g–mi$¶?gTF\ý´?r   gÇ•¶Ÿ­?TF)Zevaluate)
r   r   r–   r•   r   r   Zis_Rationalr    ZradiusZis_Float)ZRiZCiÚAr¥   Úur4   r4   r5   Útest_issue_15797_equals  s   

rÓ   c                  C   s`   t dƒ\} }}}t| |f||ƒ}| ¡ t| |ft||ƒƒks J ‚tddƒ ¡ tddƒks.J ‚d S )Núx y a b©r"   r&   r$   )r   r   Zauxiliary_circler   r   ©r   r    r7   r8   r{   r4   r4   r5   Útest_auxiliary_circle'  s     r×   c                  C   sr   t dƒ\} }}}t| |f||ƒ}| ¡ t| |ft|d |d  ƒƒks%J ‚tddƒ ¡ tddtdƒ ƒks7J ‚d S )NrÔ   r#   rÕ   r$   )r   r   Zdirector_circler   r   rÖ   r4   r4   r5   Útest_director_circle0  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sPJ ‚ttddƒddƒ}d| d  tddƒ }d|d  tddƒ }|| d	tddƒ  }	| 	¡ |	ks‚J ‚d S )
Nzx y h kTrH   za br#   r"   r!   r)   é   )
r   r   r   r’   r   r   r   r“   r    Zevolute)
r   r    ÚhÚkr7   r8   r{   r¤   rÈ   ÚEr4   r4   r5   Útest_evolute9  s   &rÝ   c                  C   s*   t tddƒddƒ} |  dd¡dksJ ‚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_svgrÁ   r4   r4   r5   Útest_svgJ  s   rÞ   N)5Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r   Z*sympy.functions.special.elliptic_integralsr   Z(sympy.functions.elementary.miscellaneousr   r6   rG   r¦   r¬   r²   r´   r·   r¸   r¾   rÂ   rÅ   rÉ   rÍ   rÏ   rÐ   rÓ   r×   rØ   rÝ   rÞ   r4   r4   r4   r5   Ú<module>   s<   8 4
  !)
		