o
    oÇ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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é   é   é   )Ú_slopeé   é   é   é    é   é   éþÿÿÿé   é   é´   )Ú	sympy.abcr    r!   r   r   ÚstrÚequation)r    r!   Úe1Úe2Úe3© r6   úu/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/geometry/tests/test_ellipse.pyÚ!test_ellipse_equation_using_slope   s   F>Pr8   c                     st  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s8J ‚tˆd ˆd  d
ˆ  dˆ  d ƒtt	ddƒdƒksVJ ‚tˆ d ˆd  d
ˆ   dˆ  d dddtt	ddƒdƒkswJ ‚tˆd ˆd  d ƒtt	ddƒdƒksJ ‚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 ƒ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s4J ‚ttˆ d ˆd  dƒdˆdtt	ddƒdƒksOJ ‚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s¸J ‚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   /   ó    c                      s   t ˆ d ˆd  d dddS )Nr$   r@   r9   r:   r   rF   r6   ©r9   r:   r6   r7   rG   0   ó    c                      s   t ˆ d dˆ  d ƒS )Nr$   r+   r&   rF   r6   r   r6   r7   rG   1   rI   c                      s0   t dˆ d  dˆd   dˆ   dˆ  d ƒS )Nr+   r$   r(   r&   r@   rF   r6   r   r6   r7   rG   2   s   0 c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr$   r#   r(   r&   rF   r6   rJ   r6   r7   rG   3   rH   zx yT©Úreal)r0   r    r!   r9   r:   r;   r<   r=   r   r   r   r   r   r   r   r   Ú
ValueErrorr	   r   r2   )r;   r<   r=   Úeqr6   )r9   r:   r    r!   r7   Útest_object_from_equation!   s*   $L<B,(.442^6,"rP   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dEdddFgksLJ ‚t*ttddƒdd+ƒttddƒdGdDƒƒg ksdJ ‚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 	sJ ‚t|d	 | d	 ƒ|#v 	s J ‚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 	sMJ ‚|%  tddƒ¡g k	sZJ ‚ttddƒd
d	ƒ}%|%  td
dƒ¡ttd
dƒtd
dNƒƒgk	szJ ‚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¡
sOJ ‚ˆ  .ˆ jtdˆ jt!ddCƒ ƒ ¡
scJ ‚ˆ  .ˆ jtˆ jt!ddCƒ dƒ ¡
swJ ‚ˆ  .ˆ 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dXdYƒ¡du sJ ‚ˆ  /d	d
¡td:dd
ƒks%J ‚ˆ  /d
d ¡td:d d ƒks4J ‚ˆ  0t¡ˆ ks>J ‚ˆ  0tdU¡ttd	dƒd	dƒksPJ ‚t
t$‡ fdZd„ƒ ttddƒdƒ})|) 0td	 ¡ttddƒdƒkssJ ‚|) 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 )[Nr    TrL   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   ó    z#test_ellipse_geom.<locals>.<lambda>c                   S   s   t ƒ S ©NrT   r6   r6   r6   r7   rG   S   s    c                   S   s   t tddƒƒS ©Nr   ©r   r   r6   r6   r6   r7   rG   T   rU   c                   S   s   t tdƒtdƒ ƒS )Nr    r!   )r   r   r6   r6   r6   r7   rG   U   ó    ©r"   r"   rC   Fç      à¿g      à?c                      s   t tˆ ˆƒddƒjddS )Nr"   r    )Ú	parameter)r   r   Úarbitrary_pointr6   r   r6   r7   rG   †   s    é   éM   r@   é„   é!   é   é(   é   r+   rD   é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Úprecr6   r6   r7   Ú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 rV   r6   )Ú.0rj   rk   )rm   rl   r6   r7   Ú	<genexpr>»   s   € z=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>)ÚallÚzip)Úll1Úll2rl   )rm   )rl   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 rS   )Únormal_linesr6   )r=   r    r6   r7   rG   Õ   ó    éûÿÿÿéöÿÿÿrf   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     ó    c                      s   t ˆ tdƒƒS )Nr^   )r   r   r6   rŠ   r6   r7   rG     rU   c                      s   t  ˆ d¡S rS   )r   r   r6   rŠ   r6   r7   rG   	  ó    r-   éôÿÿÿé5   i—  éD   r,   c                    s   g | ]}|  ˆ d ˆdi¡‘qS ©r$   r"   )Úsubs)rn   Úpr   r6   r7   Ú
<listcomp>0  rK   z%test_ellipse_geom.<locals>.<listcomp>©r"   r$   é   r'   g333333Ó?gš™™™™™Ù?c                      s   ˆ   td ¡S )Nr#   )Úrotater   r6   )r=   r6   r7   rG   P  rU   )1r   r   ÚHalfr   r   r   r   r   r   r   r   rN   r   ÚcenterÚarear   rg   ÚcircumferenceÚplot_intervalÚminorÚmajorÚhradiusÚvradiusr   ÚhashÚ__cmp__Úenclosesr   r   r   r]   ÚfociÚtangent_linesr   Ú
is_tangentrƒ   ÚNotImplementedErrorÚfocus_distanceÚeccentricityÚ	periapsisÚapoapsisÚsemilatus_rectumr   r   Ú	TypeErrorÚlenÚencloses_pointÚscaler–   )*rQ   rR   Úhalfrh   ri   Úp4r3   r5   Úc1Úc2Úc3rj   ÚcenÚradÚf1Úf2ÚefÚvÚp1_1Úp1_2Úp1_3rt   r’   r   rœ   Úe4Úeccrk   Úl3Úl4Ú	pts_c1_l3ÚcsmallÚcbigÚcoutÚt1ÚpointsÚcircÚelipr9   r;   ÚansÚcirr6   )r=   r4   rm   r    r!   r7   Útest_ellipse_geom:   s0  





,804((0&ÿ
ÿ 
6.&   &"ÿ
ÿÿ
ÿ,  ÿ
ÿ*
ÿ*
ÿ&00ÿ
ÿ ÿ
ÿ ÿ
ÿ*
ÿ
ÿ
ÿ,,þ
þ,,þ
þ,þ
þ0 
 
8"$$,( *"84,$
ÿ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   r6   r6   r6   r7   rG   k  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   r6   r6   r6   r7   rG   l  rI   c                   S   s   t tddƒdtjtdƒ dS rÎ   )r   r   r   ÚPir6   r6   r6   r7   rG   m  rK   c                   S   s   t d d dddS )Nr"   )r¨   rT   r6   r6   r6   r7   rG   s  r‹   c                   S   ó   t tddƒdddS )Nr#   r"   r>   rÍ   ©r   r   r6   r6   r6   r7   rG   v  rY   c                   S   rÐ   )Nr#   r"   r[   rÍ   rÑ   r6   r6   r6   r7   rG   w  rY   )	r   r¨   r   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 ]}| ¡ }| ||¡ t||f|jƒ¡ 	d¡s7J ‚q|jdd	}| ||¡ t||f|jƒ¡ 	d¡sRJ ‚d S )
NrR   TrL   r   ÚrxÚryr*   r"   )Úseed)
r   r   r   ÚrangeÚrandom_pointr2   r‘   rq   ÚargsÚequals)rR   r5   rÔ   rÕ   ÚindÚrr6   r6   r7   Útest_ellipse_random_pointy  s   *,rÝ   c                   C   s   t tddƒƒdksJ ‚d S )Nru   r$   zCircle(Point2D(0, 1), 2))Úreprr   r6   r6   r6   r7   Ú	test_repr†  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 )NrZ   r$   rC   )rC   r"   )r!   )r"   rC   r   r(   r€   r#   )r(   r*   rA   r†   rB   r+   iøÿÿÿr"   r*   )r   r¯   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s0J ‚|jdks7J ‚|jdks>J ‚|jd	ksEJ ‚d S )
Nr   r#   r*   r$   r,   rD   )r>   r…   r#   r*   )r…   r{   rB   r*   )r,   r,   r$   r$   )r   r   r   Úbounds)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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 )Nr:   Úmr   ©Úsloper€   r‰   )r$   r#   r"   r$   c                      s   ˆ   tdˆd¡S )Nr‰   rå   )Úreflectr   r6   ©r=   rä   r6   r7   rG   ´  r„   ztest_reflect.<locals>.<lambda>ru   rZ   rC   )r   r   r   r™   rç   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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u s6J ‚ˆ  tdd#ƒ¡du sCJ ‚ˆ  td	d$d%ƒ¡du sQJ ‚ˆ  td&d'd(ƒ¡du s_J ‚ˆ  tddd)ƒ¡du smJ ‚ˆ  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,ddd-ƒ¡du s¨J ‚ˆ  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 sJ ‚ˆ  td&d'd(ƒ¡du s%J ‚ˆ  td,ddd-ƒ¡du s4J ‚|  td,ddd-ƒ¡du sCJ ‚ˆ  td/d0d+d*ƒ¡du sRJ ‚ˆ  tdd2d3ƒ¡du s`J ‚tt	‡ fd4d5„ƒ tt	‡ fd6d5„ƒ d S )7Nr   r#   r*   r$   r,   rD   FTr€   r"   )r$   r,   )r.   r,   )rD   r,   )r…   r,   )iñÿÿÿr   )r>   r,   )r>   iêÿÿÿ)r~   r-   )rB   r-   )rB   r   )r$   r*   )rB   r*   ©r$   r$   )rz   rD   r”   ©r#   r   )r^   r^   )r>   r   )r>   r*   )r#   r*   )rf   r   )rf   rf   rZ   )gìQ¸…ëÀgü©ñÒMbP¿)r>   r"   )r*   r*   )r*   r…   )iœÿÿÿiÎÿÿÿ)iØÿÿÿi²þÿÿ)iºÿÿÿiÌÿÿÿru   )r   r*   )r   r…   )r>   r…   )r#   r…   )rD   rD   )r#   r^   )r#   r   )r+   r*   )r*   rD   )r+   r…   c                      s   ˆ   tdddƒ¡S rW   )r¥   r   r6   ©r3   r6   r7   rG   è  r„   z!test_is_tangent.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )Nr*   )r¥   r   r6   rí   r6   r7   rG   é  rU   )
r   r   r   r¥   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sJ ‚tt‡ ‡fdd„ƒ d S )NrQ   r   r#   r*   rì   c                      s   ˆ   dˆ¡S )N)r(   r   )Úparameter_valuer6   ©r=   rQ   r6   r7   rG   ð  rŒ   z&test_parameter_value.<locals>.<lambda>)r   r   r   rï   r   rN   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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…   rf   é   rA   r#   r"   r+   iD  iM  iX  )r	   r   r   r   r   Úsecond_moment_of_arear   )	r    r!   r=   ÚI_yyÚI_xxÚYÚ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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 )Nr<   T)Úpositive)r#   rD   r&   i   é€   )r$   rB   r$   r#   r}   r)   za, b)r(   r+   r(   r+   r'   éx   r   rë   )r   r   Úpolar_second_moment_of_arear   Ú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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-   rB   r@   r"   r#   )rž   rŸ   rò   gûRÃeé†9@g»½×Ùß|Û=)	r   r   r   rš   r   r   r   rg   Úevalf)r   rä   r6   r6   r7   Útest_circumference  s   <,*r  c                   C   s   t ddƒtddƒksJ ‚d S )Nr”   r   r"   r$   rX   r6   r6   r6   r7   Ú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Ç•¶Ÿ­?TFr‡   )
r   r   r¥   r¤   r˜   r    Úis_Rationalr!   ÚradiusÚis_Float)ÚRiÚCiÚAr;   Úur6   r6   r7   Ú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   Úauxiliary_circler   r   ©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s%J ‚tddƒ ¡ tddtdƒ ƒks7J ‚d S )Nr  r$   r  r&   )r	   r   Údirector_circler   r   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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 kTrL   za br$   r#   r"   r+   é   )
r	   r   r   rž   r˜   r    r   rŸ   r!   Úevolute)
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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   Ú_svgrí   r6   r6   r7   Útest_svgc  s   r  N)?Ú
sympy.corer   Úsympy.core.numbersr   r   r   Úsympy.core.relationalr   Úsympy.core.singletonr   Úsympy.core.symbolr   r	   Ú$sympy.functions.elementary.complexesr
   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   Úsympy.geometry.liner   Úsympy.geometry.pointr   Úsympy.geometryr   r   r   r   r   r   r   r   r   r   r   Úsympy.testing.pytestr   r   Úsympy.integrals.integralsr   Ú*sympy.functions.special.elliptic_integralsr   r   r8   rP   rÌ   rÓ   rÝ   rß   rá   rã   rê   rî   rñ   rù   rÿ   r  r  r  r  r  r  r  r6   r6   r6   r7   Ú<module>   sN    4
  "4
		