a
    ¬<bœc  ã                   @   sŒ  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„ Z.dd„ Z/dd„ Z0dd „ Z1d!d"„ Z2d#d$„ Z3e#d%d&„ ƒZ4d'd(„ Z5d)d*„ Z6d+d,„ Z7d-d.„ Z8d/d0„ Z9d1d2„ Z:d3d4„ Z;d5d6„ Z<d7S )8é    )Ú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© r4   úq/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/geometry/tests/test_ellipse.pyÚ!test_ellipse_equation_using_slope   s    F>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sdJ ‚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s:J ‚tˆ d ˆd  dddttddƒdƒksjJ ‚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sjJ ‚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   .   rB   c                      s   t ˆ d ˆd  d dddS )Nr#   r;   r7   r8   r   r@   r4   ©r7   r8   r4   r5   rA   /   rB   c                      s   t ˆ d dˆ  d ƒS )Nr#   r)   r$   r@   r4   r   r4   r5   rA   0   rB   c                      s0   t dˆ d  dˆd   dˆ   dˆ  d ƒS )Nr)   r#   r&   r$   r;   r@   r4   r   r4   r5   rA   1   rB   c                      s(   t ˆ d ˆd  dˆ   dˆ  d ƒS )Nr#   r"   r&   r$   r@   r4   rC   r4   r5   rA   2   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.*066^6rE   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ddƒgks¨J ‚t*ttddƒdd+ƒttddƒdEdDƒƒg ksØJ ‚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 s2J ‚t|d	 | d	 ƒ|#v sPJ ‚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 sªJ ‚|%  tddƒ¡g ksÄJ ‚ttddƒd
d	ƒ}%|%  td
dƒ¡ttd
dƒtd
dLƒƒgksJ ‚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 ¡s6J ‚tdSd
d	ƒ‰ ˆ   tdCdƒ¡ttdCdƒtddƒƒttdCdƒtt!dTdƒt!dUdƒƒƒgksJ ‚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 sLJ ‚td:d	dƒ‰ ˆ  .ˆ j¡sjJ ‚ˆ  .ˆ 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sZJ ‚ˆ  /d
d ¡td:d d ƒksxJ ‚ˆ  0t¡ˆ ksŒJ ‚ˆ  0tdS¡ttd	dƒd	dƒks°J ‚t
t$‡ fdXd„ƒ 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sPJ ‚|) 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   M   rB   z#test_ellipse_geom.<locals>.<lambda>c                   S   s   t ƒ S ©NrK   r4   r4   r4   r5   rA   N   rB   c                   S   s   t tddƒƒS ©Nr   ©r   r   r4   r4   r4   r5   rA   O   rB   c                   S   s   t tdƒtdƒ ƒS )Nr   r    )r   r   r4   r4   r4   r5   rA   P   rB   ©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      rB   é   éM   r;   é„   é!   é   é(   é   r)   é   é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Úprecr4   r4   r5   Ú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 rL   r4   )Ú.0r_   r`   )rb   ra   r4   r5   Ú	<genexpr>¶   rB   z=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>)ÚallÚzip)Zll1Zll2ra   )rb   )ra   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 rJ   )Únormal_linesr4   )Úer   r4   r5   rA   Ð   rB   éûÿÿÿéöÿÿÿ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     rB   c                      s   t ˆ tdƒƒS )NrR   )r   r   r4   r{   r4   r5   rA     rB   c                      s   t  ˆ d¡S rJ   )r   r   r4   r{   r4   r5   rA     rB   r+   éôÿÿÿé5   i—  éD   r*   c                    s   g | ]}|  ˆ d ˆdi¡‘qS ©r#   r!   )Úsubs)rc   Úpr   r4   r5   Ú
<listcomp>*  rB   z%test_ellipse_geom.<locals>.<listcomp>©r!   r#   é   r%   g333333Ó?gš™™™™™Ù?c                      s   ˆ   td ¡S )Nr"   )Úrotater   r4   )rw   r4   r5   rA   J  rB   )1r   r   ZHalfr   r   r   r
   r   r   r   r   rD   r   ÚcenterÚarear   r\   ÚcircumferenceZplot_intervalÚminorÚmajorÚhradiusÚvradiusr   ÚhashZ__cmp__Zenclosesr   r   r   rQ   ZfociÚtangent_linesr   Ú
is_tangentrv   ÚNotImplementedErrorZfocus_distanceÚeccentricityZ	periapsisZapoapsisZsemilatus_rectumr   r   Ú	TypeErrorÚlenZencloses_pointÚscaler…   )*rH   rI   Zhalfr]   r^   Zp4r1   r3   Úc1Úc2Úc3r_   ZcenZradÚf1Úf2ZefÚvZp1_1Zp1_2Zp1_3rg   r   rŠ   r‰   Úe4Zeccr`   Úl3Úl4Z	pts_c1_l3ZcsmallZcbigZcoutÚt1ZpointsÚcircZelipr7   ÚcZansZcirr4   )rw   r2   rb   r   r    r5   Útest_ellipse_geom5   s,   





,:.2((0&ÿÿ
 
6.&   &"ÿÿ
ÿÿ
,  ÿÿ
*ÿ
*ÿ
&00ÿÿ
 ÿÿ
 ÿÿ
*ÿ
ÿ
ÿ
,,þþ
,,þþ
,þþ
0 
 
8"$$,( *"84,8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   r4   r4   r4   r5   rA   e  rB   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   f  rB   c                   S   s   t tddƒdtjtdƒ dS r£   )r   r   r   ÚPir4   r4   r4   r5   rA   g  rB   c                   S   s   t d d dddS )Nr!   )r‘   rK   r4   r4   r4   r5   rA   m  rB   c                   S   s   t tddƒdddS )Nr"   r!   r9   r¢   ©r   r   r4   r4   r4   r5   rA   p  rB   c                   S   s   t tddƒdddS )Nr"   r!   rP   r¢   r¥   r4   r4   r4   r5   rA   q  rB   )	r   r‘   r
   rŒ   r‹   r   r   r   Úlength)r1   r2   r3   r›   r4   r4   r5   Útest_constructionU  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 )
NrI   TrF   r   ÚrxÚryr(   r!   )Úseed)
r   r   r   ÚrangeZrandom_pointr0   r€   rf   ÚargsÚequals)rI   r3   r¨   r©   ÚindÚrr4   r4   r5   Útest_ellipse_random_points  s    *r°   c                   C   s   t tddƒƒdksJ ‚d S )Nrh   r#   zCircle(Point2D(0, 1), 2))Úreprr   r4   r4   r4   r5   Ú	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 )NrO   r#   r=   )r=   r!   )r    )r!   r=   r   r&   rs   r"   )r&   r(   r<   ry   é	   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s`J ‚|jdksnJ ‚|jdks|J ‚|jd	ksŠJ ‚d S )
Nr   r"   r(   r#   r*   rY   )r9   rx   r"   r(   )rx   rn   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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 )Nr8   Úmr   ©Zslopers   rz   )r#   r"   r!   r#   c                      s   ˆ   tdˆd¡S )Nrz   r¸   )Úreflectr   r4   ©rw   r·   r4   r5   rA   ®  rB   ztest_reflect.<locals>.<lambda>rh   rO   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 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#ƒ¡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 sJ ‚|  td*ddd+ƒ¡du s0J ‚ˆ  td	dd,d(ƒ¡du sNJ ‚ˆ  td-d.d/ƒ¡du sjJ ‚ˆ  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*   rY   FTrs   r!   )r#   r*   )r,   r*   )rY   r*   )rx   r*   )iñÿÿÿrt   )r9   r*   )r9   iêÿÿÿ)rq   r+   )r³   r+   )r³   rt   ©r#   r#   )rm   rY   rƒ   ©r"   r   )rR   rR   )r9   r   )r9   r(   )r"   r(   )r[   r   )r[   r[   rO   )gìQ¸…ëÀgü©ñÒMbP¿)r9   r!   )r(   r(   )r(   rx   )iœÿÿÿiÎÿÿÿ)iØÿÿÿi²þÿÿ)iºÿÿÿiÌÿÿÿrh   )r   r(   )r   rx   )r9   rx   )r"   rx   )rY   rY   )r"   rR   )r"   r|   )r)   r(   )r(   rY   )r)   rx   c                      s   ˆ   tdddƒ¡S rM   )r   r   r4   ©r1   r4   r5   rA   ×  rB   z!test_is_tangent.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )Nr(   )r   r   r4   r¿   r4   r5   rA   Ø  rB   )
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s2J ‚tt‡ ‡fdd„ƒ d S )NrH   r   r"   r(   r¾   c                      s   ˆ   dˆ¡S )N)r&   r   )Úparameter_valuer4   ©rw   rH   r4   r5   rA   ß  rB   z&test_parameter_value.<locals>.<lambda>)r   r   r   rÁ   r   rD   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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#   rx   r[   é   r<   r"   r!   r)   iD  iM  iX  )r   r   r   r   r
   Zsecond_moment_of_arear   )	r   r    rw   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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 )NÚdT)Zpositive)r"   rY   r$   i   é€   )r#   r³   r#   r"   rp   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   rw   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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+   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#   rN   r4   r4   r4   r5   Ú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Ç•¶Ÿ­?TF)Ú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   rw   r4   r4   r5   Ú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Õ   r4   r4   r5   Útest_director_circle8  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 kTrF   za br#   r"   r!   r)   é   )
r   r   r   r‹   r†   r   r   rŒ   r    Zevolute)
r   r    ÚhÚkr7   r8   rw   rž   rÆ   ÚEr4   r4   r5   Útest_evoluteA  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_svgR  s    rÝ   N)=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   r6   rE   r¡   r§   r°   r²   rµ   r¶   r¼   rÀ   rÃ   rÇ   rË   rÍ   rÎ   rÒ   rÖ   r×   rÜ   rÝ   r4   r4   r4   r5   Ú<module>   sJ   4
  !)
		