a
    kº”hg  ã                   @   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shJ ‚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© r5   úO/var/www/auris/lib/python3.9/site-packages/sympy/geometry/tests/test_ellipse.pyÚ!test_ellipse_equation_using_slope   s    F>r7   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spJ ‚tˆd ˆd  d
ˆ  dˆ  d ƒtt	ddƒdƒks¬J ‚tˆ d ˆd  d
ˆ   dˆ  d dddtt	ddƒdƒksîJ ‚tˆd ˆd  d ƒtt	ddƒdƒksJ ‚tˆd ˆd  ƒtt	ddƒdƒksFJ ‚tˆ d ˆd  dddtt	ddƒdƒksvJ ‚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 ƒ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srJ ‚ttˆ d ˆd  dƒdˆdtt	d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„ƒ tt‡ ‡fdd„ƒ tddd\‰‰ˆ ˆd  ˆ ˆd   | ˆ  |ˆ  | }tt|ƒ ¡ ˆ  ƒ|kszJ ‚d S )Nr   )r    r!   ÚaÚbÚcÚdÚer$   r#   r'   r%   éýÿÿÿr+   é9   r*   é   éüÿÿÿr8   r9   r   r)   r"   é	   éÿÿÿÿé   c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr$   r#   r'   é   ©r   r5   r   r5   r6   Ú<lambda>.   ó    z+test_object_from_equation.<locals>.<lambda>c                      s   t ˆ d ˆd  d ƒS )Nr$   r?   rE   r5   r   r5   r6   rF   /   rG   c                      s   t ˆ d ˆd  d dddS )Nr$   r?   r8   r9   r   rE   r5   ©r8   r9   r5   r6   rF   0   rG   c                      s   t ˆ d dˆ  d ƒS )Nr$   r*   r%   rE   r5   r   r5   r6   rF   1   rG   c                      s0   t dˆ d  dˆd   dˆ   dˆ  d ƒS )Nr*   r$   r'   r%   r?   rE   r5   r   r5   r6   rF   2   rG   c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr$   r#   r'   r%   rE   r5   rH   r5   r6   rF   3   rG   zx yT©Úreal)r/   r    r!   r8   r9   r:   r;   r<   r   r   r   r   r   r   r   r   Ú
ValueErrorr	   r   r1   )r:   r;   r<   Úeqr5   )r8   r9   r    r!   r6   Útest_object_from_equation!   s*    $L<B.*0662^6,rM   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òJ ‚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sJ ‚|ˆ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s2J ‚|j|jksDJ ‚|j|jksVJ ‚|jd	t | ksnJ ‚| ¡ ˆ ¡   kr–| t tgksœn J ‚| ˆ¡ˆ ˆ¡  krÈˆt tgksÎn J ‚|jdksÞJ ‚|jdksîJ ‚|jdksþJ ‚|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sRJ ‚tdddƒttddƒtdd	ƒƒkszJ ‚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 sXJ ‚| |¡du slJ ‚| ttddƒtddƒ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 ‚ˆ ¡ ˆv s J ‚t
t‡‡fdd„ƒ ttdƒdƒttdƒ dƒ }}ttddƒdd	ƒ}|j||f||ffv sbJ ‚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s8J ‚|  |¡g ksLJ ‚ˆ "t||t|dƒ ƒ¡slJ ‚ˆ "t||t|dƒ ƒ¡sŒJ ‚| "t|tdtd	ƒƒƒ¡s¬J ‚| "ttddƒtddƒƒ¡du sÒJ ‚| "|¡du sæJ ‚| "ttd	dƒddƒ¡du sJ ‚| "ttddƒtddƒtd	dƒƒ¡du s6J ‚| "ttddƒtddƒtd	dƒƒ¡du sdJ ‚ttddƒd
ƒ "ttddƒdƒ¡du sJ ‚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sHJ ‚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–J ‚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
sDJ ‚ˆ  #tddƒ¡ttddƒtddƒƒgk
srJ ‚ˆ  #d'¡ttddƒtddƒƒgk
sšJ ‚|ˆ  #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 s0J ‚|ˆ  #|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sPJ ‚t
t$‡ ‡fd@d„ƒ d
}d}t|||ƒ}|j%t|d	 |d	  ƒks˜J ‚|j%| }|j&|ks²J ‚|j'|d|  ksÊJ ‚|j(|d|  ksâJ ‚|j)|d|d	   ksþJ ‚t|||ƒ}|j%t|d	 |d	  ƒks*J ‚|j%| }|j&|ksDJ ‚|j'|d|  ks\J ‚|j(|d|  kstJ ‚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sVJ ‚t*||ƒtddƒgksrJ ‚t*||ƒ||d |d gfv s–J ‚t*||	ƒtddƒtddƒgksºJ ‚t*||
ƒttd	ƒd	 td	ƒd	 ƒgksæJ ‚| *|¡tddƒgksJ ‚ˆ *|¡g ksJ ‚| *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sDJ ‚t*ttddƒd	ƒttd!dƒdƒƒg kspJ ‚t*ttddƒdd+ƒttddƒddDƒƒtdEdddFgks¬J ‚t*ttddƒdd+ƒttddƒdGdDƒƒg ksÜJ ‚td:tjƒ *t+dHdId'ƒ¡tt!dd	ƒdƒttjdƒgksJ ‚t
t,‡fdJd„ƒ t
t,‡fdKd„ƒ t
t,‡fdLd„ƒ 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 s6J ‚t|d	 | d	 ƒ|#v sTJ ‚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v s®J ‚|%  tddƒ¡g ksÈJ ‚ttddƒd
d	ƒ}%|%  td
dƒ¡ttd
dƒtd
dNƒƒgksJ ‚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ŽJ ‚ttˆˆƒdd0ƒ‰tdPƒ}'t|' dQ |& |'t!d	d+ƒ |&d	  ƒt|'dQ |& |'t!dRd+ƒ |&d	  ƒg}(‡‡fdSdT„| *ˆ¡D ƒ|(ksJ ‚| "|  |t|dƒ ¡d ¡s:J ‚tdUd
d	ƒ‰ ˆ   tdCdƒ¡ttdCdƒtddƒƒttdCdƒtt!dVdƒt!dWdƒƒƒgk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 sPJ ‚td:d	dƒ‰ ˆ  .ˆ j¡snJ ‚ˆ  .ˆ 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dXdYƒ¡du s@J ‚ˆ  /d	d
¡td:dd
ƒks^J ‚ˆ  /d
d ¡td:d d ƒks|J ‚ˆ  0t¡ˆ ksJ ‚ˆ  0tdU¡ttd	dƒd	dƒks´J ‚t
t$‡ fdZd„ƒ ttddƒdƒ})|) 0td	 ¡ttddƒdƒksúJ ‚|) 0td
 ¡tttjtd
ƒd	 ƒdƒks(J ‚|) 0td
 tddƒ¡ttddƒdƒksTJ ‚|) 0td
 tddƒ¡tttjtd
ƒd	  tjtd
ƒd	  ƒdƒksœJ ‚d S )[Nr    TrI   r!   ÚtÚy1r   r"   r$   r#   r)   r'   c                   S   s   t d d d dƒS ©Nr"   ©r   r5   r5   r5   r6   rF   R   rG   z#test_ellipse_geom.<locals>.<lambda>c                   S   s   t ƒ S ©NrQ   r5   r5   r5   r6   rF   S   rG   c                   S   s   t tddƒƒS ©Nr   ©r   r   r5   r5   r5   r6   rF   T   rG   c                   S   s   t tdƒtdƒ ƒS )Nr    r!   )r   r   r5   r5   r5   r6   rF   U   rG   ©r"   r"   rB   Fç      à¿g      à?c                      s   t tˆ ˆƒddƒjddS )Nr"   r    )Z	parameter)r   r   Úarbitrary_pointr5   r   r5   r6   rF   †   rG   é   éM   r?   é„   é!   é   é(   é   r*   rC   é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Úprecr5   r5   r6   Ú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 rR   r5   )Ú.0rd   re   )rg   rf   r5   r6   Ú	<genexpr>»   rG   z=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>)ÚallÚzip)Zll1Zll2rf   )rg   )rf   r6   Úline_list_closeº   s    z*test_ellipse_geom.<locals>.line_list_close©r   r"   iÍÿÿÿrD   içÿÿÿé   éS   é   é   éùÿÿÿr%   r>   é÷ÿÿÿi«þÿÿé«   iVÿÿÿé@   é   é)   iÕÿÿÿ©r   r   iÀÿÿÿéìÿÿÿéG   iáÿÿÿr@   c                      s   ˆ   ˆd df¡S rP   )Únormal_linesr5   )r<   r    r5   r6   rF   Õ   rG   éûÿÿÿéöÿÿÿr`   gš™™™™™É?g      @©Úevaluateg+‡ÙÎ÷ï?)rB   r   ©r"   r   c                      s   t ˆ tddƒƒS )N)r   r   r   )r   r   r"   )r   r   r5   ©r3   r5   r6   rF     rG   c                      s   t ˆ tdƒƒS )NrX   )r   r   r5   r   r5   r6   rF     rG   c                      s   t  ˆ d¡S rP   )r   r   r5   r   r5   r6   rF   	  rG   r,   éôÿÿÿé5   i—  éD   r+   c                    s   g | ]}|  ˆ d ˆdi¡‘qS ©r$   r"   )Úsubs)rh   Úpr   r5   r6   Ú
<listcomp>0  rG   z%test_ellipse_geom.<locals>.<listcomp>©r"   r$   é   r&   g333333Ó?gš™™™™™Ù?c                      s   ˆ   td ¡S )Nr#   )Úrotater   r5   )r<   r5   r6   rF   P  rG   )1r   r   ZHalfr   r   r   r   r   r   r   r   rK   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‹   )*rN   rO   Zhalfrb   rc   Zp4r2   r4   Ú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elipr8   r:   ZansZcirr5   )r<   r3   rg   r    r!   r6   Útest_ellipse_geom:   s0   





,:.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$J ‚t dd tdƒd d}|jdksHJ ‚t d dtdƒd d}|jdkslJ ‚t tddƒddd}|jdksŽJ ‚ttdd„ ƒ ttd	d„ ƒ ttd
d„ ƒ t d dd dƒjdksÐJ ‚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   r5   r5   r5   r6   rF   k  rG   z#test_construction.<locals>.<lambda>c                   S   s   t tddƒdtdƒdS )Nr#   r"   r)   r§   )r   r   r   r5   r5   r5   r6   rF   l  rG   c                   S   s   t tddƒdtjtdƒ dS r¨   )r   r   r   ÚPir5   r5   r5   r6   rF   m  rG   c                   S   s   t d d dddS )Nr"   )r—   rQ   r5   r5   r5   r6   rF   s  rG   c                   S   s   t tddƒdddS )Nr#   r"   r=   r§   ©r   r   r5   r5   r5   r6   rF   v  rG   c                   S   s   t tddƒdddS )Nr#   r"   rV   r§   rª   r5   r5   r5   r6   rF   w  rG   )	r   r—   r   r’   r‘   r   r   r   Úlength)r2   r3   r4   r¡   r5   r5   r6   Ú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:J ‚q:|jdd	}| ||¡ t||f|jƒ¡ 	d¡s¤J ‚d S )
NrO   TrI   r   ÚrxÚryr)   r"   )Úseed)
r   r   r   ÚrangeZrandom_pointr1   r†   rk   ÚargsÚequals)rO   r4   r­   r®   ÚindÚrr5   r5   r6   Útest_ellipse_random_pointy  s    *rµ   c                   C   s   t tddƒƒdksJ ‚d S )Nrm   r$   zCircle(Point2D(0, 1), 2))Úreprr   r5   r5   r5   r6   Ú	test_repr†  s    r·   c                  C   s€  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sVJ ‚td	dd
ƒ dd
d¡ttddƒddƒks‚J ‚t d	dƒ dd
d¡ttddƒddƒks¬J ‚td	dd
ƒ d
d
d¡ttddƒddƒksØJ ‚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s8J ‚t d	dƒ dd¡t ddƒksZJ ‚t d	dƒ d
d
¡t d	dƒks|J ‚d S )NrU   r$   rB   )rB   r"   )r!   )r"   rB   r…   r'   rx   r#   )r'   r)   r@   r}   rA   r*   iøÿÿÿr"   r)   )r   rš   r   r   r   Ú	translate)r:   r5   r5   r6   Ú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`J ‚|jdksnJ ‚|jdks|J ‚|jd	ksŠJ ‚d S )
Nr   r#   r)   r$   r+   rC   )r=   r|   r#   r)   )r|   rs   rA   r)   )r+   r+   r$   r$   )r   r   r   Zbounds)r2   r3   r›   rœ   r5   r5   r6   Útest_bounds   s    rº   c                     sÒ   t dƒ} t dƒ‰td| fˆd}tdddƒ}|j| |¡j ksDJ ‚tddd	ƒ‰ ˆ jˆ  tddd¡j kspJ ‚ˆ jˆ  tdtd¡j ksJ ‚tt‡ ‡fd
d„ƒ t	ddƒ tddƒ¡t	t
ddƒdƒksÎJ ‚d S )Nr9   Úmr   ©Zsloperx   r€   )r$   r#   r"   r$   c                      s   ˆ   tdˆd¡S )Nr€   r¼   )Úreflectr   r5   ©r<   r»   r5   r6   rF   ´  rG   ztest_reflect.<locals>.<lambda>rm   rU   rB   )r   r   r   r   r½   r   r   r   r–   r   r   )r9   Úlr¤   r5   r¾   r6   Ú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 sRJ ‚ˆ  ˆ ¡du sdJ ‚ˆ  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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 sHJ ‚|  tddƒ¡du sbJ ‚|  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 s2J ‚ˆ  tdd ƒ¡du sLJ ‚ˆ  td	d!ƒ¡du sfJ ‚ˆ  tdd"ƒ¡du s€J ‚ˆ  tdd#ƒ¡du sšJ ‚ˆ  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ddd*ƒ¡du s
J ‚ˆ  tdd+dd*ƒ¡du s(J ‚ˆ  td,ddd-ƒ¡du sFJ ‚|  td,ddd-ƒ¡du sdJ ‚ˆ  td	dd.d*ƒ¡du s‚J ‚ˆ  td/d0d1ƒ¡du sžJ ‚ˆ  td/d0d+d*ƒ¡du s¼J ‚ˆ  tdd2d3ƒ¡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 sBJ ‚ˆ  td&d'd(ƒ¡du s^J ‚ˆ  td,ddd-ƒ¡du s|J ‚|  td,ddd-ƒ¡du sšJ ‚ˆ  td/d0d+d*ƒ¡du s¸J ‚ˆ  tdd2d3ƒ¡du sÔJ ‚tt	‡ fd4d5„ƒ tt	‡ fd6d5„ƒ d S )7Nr   r#   r)   r$   r+   rC   FTrx   r"   )r$   r+   )r-   r+   )rC   r+   )r|   r+   )iñÿÿÿry   )r=   r+   )r=   iêÿÿÿ)rv   r,   )rA   r,   )rA   ry   )r$   r)   )rA   r)   ©r$   r$   )rr   rC   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|   )rC   rC   )r#   rX   )r#   r‚   )r*   r)   )r)   rC   )r*   r|   c                      s   ˆ   tdddƒ¡S rS   )r•   r   r5   ©r2   r5   r6   rF   è  rG   z!test_is_tangent.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )Nr)   )r•   r   r5   rÃ   r5   r6   rF   é  rG   )
r   r   r   r•   r   r   r   r   r   r˜   )r›   r5   rÃ   r6   Útest_is_tangent¸  sb    rÄ   c                      sJ   t dƒ‰ttddƒddƒ‰ ˆ  dˆ¡ˆdiks2J ‚tt‡ ‡fdd„ƒ d S )NrN   r   r#   r)   rÂ   c                      s   ˆ   dˆ¡S )N)r'   r   )Úparameter_valuer5   ©r<   rN   r5   r6   rF   ð  rG   z&test_parameter_value.<locals>.<lambda>)r   r   r   rÅ   r   rK   r5   r5   rÆ   r6   Ú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ÄJ ‚|| ¡ d ksØJ ‚|| ¡ d ksìJ ‚| tddƒ¡}dt dt dt f}||ks J ‚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¤   Út2r5   r5   r6   Ú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sFJ ‚td| d	 ƒ}| ¡ t| d
  t| ƒ d t|  t| ƒd
  d  ksJ ‚| ¡ t| d
  tdƒ t| d
  tdƒ fksÄJ ‚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sZJ ‚| t
d	d	ƒ¡d	t d	t fks€J ‚| d¡d	t d	t fks J ‚d S )Nr;   T)Zpositive)r#   rC   r%   i   é€   )r$   rA   r$   r#   ru   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:   r8   r9   r<   r5   r5   r6   Ú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sLJ ‚ttddƒddƒjdttdƒd	 ƒ ksxJ ‚td d
d dƒjdt ks”J ‚ttd dddj d¡d ƒdk sºJ ‚d S )NÚMr»   r   r'   r$   r)   r,   rA   r?   r"   r#   )r‘   r’   rÈ   gûRÃeé†9@g»½×Ùß|Û=)	r   r   r   rŽ   r   r   r   ra   Zevalf)rÏ   r»   r5   r5   r6   Útest_circumference  s    <,rÐ   c                   C   s   t ddƒtddƒksJ ‚d S )Nr‰   r   r"   r$   rT   r5   r5   r5   r6   Útest_issue_15259-  s    rÑ   c                  C   sš   d} d}t ddƒ}t|| ƒ}| | |¡d ¡dks8J ‚|jjjsFJ ‚|jjjsTJ ‚|jjs`J ‚t|| dd}|jjj	s|J ‚|jjj	sŠJ ‚|jj	s–J ‚d S )Ng'‹FÌ´˜?)g–mi$¶?gTF\ý´?r   gÇ•¶Ÿ­?TFr~   )
r   r   r•   r”   rŒ   r    Zis_Rationalr!   ZradiusZis_Float)ZRiZCiÚAr:   Úur5   r5   r6   Útest_issue_15797_equals1  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!   r8   r9   r<   r5   r5   r6   Útest_auxiliary_circle@  s     rØ   c                  C   sr   t dƒ\} }}}t| |f||ƒ}| ¡ t| |ft|d |d  ƒƒksJJ ‚tddƒ ¡ tddtdƒ ƒksnJ ‚d S )NrÕ   r$   rÖ   r%   )r	   r   Zdirector_circler   r   r×   r5   r5   r6   Ú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 J ‚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 kTrI   za br$   r#   r"   r*   é   )
r	   r   r   r‘   rŒ   r    r   r’   r!   Zevolute)
r    r!   ÚhÚkr8   r9   r<   r¤   rÊ   ÚEr5   r5   r6   Útest_evoluteR  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Ã   r5   r5   r6   Ú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   r7   rM   r¦   r¬   rµ   r·   r¹   rº   rÀ   rÄ   rÇ   rË   rÎ   rÐ   rÑ   rÔ   rØ   rÙ   rÞ   rß   r5   r5   r5   r6   Ú<module>   sL   4
  "4
		