o
    à8Vaõh  ã                   @   s”  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 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mZmZmZ d dlm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl m(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„ Z0dd„ Z1dd„ Z2dd„ Z3dd„ Z4d d!„ Z5d"d#„ Z6d$d%„ Z7d&d'„ Z8d(d)„ Z9d*d+„ Z:d,d-„ Z;d.d/„ Z<d0d1„ Z=d2d3„ Z>d4d5„ Z?d6d7„ Z@d8d9„ ZAd:S );é    )ÚAbsÚRationalÚFloatÚSÚSymbolÚsymbolsÚcosÚsinÚpiÚsqrtÚooÚacos)Útan)ÚCircleÚEllipseÚGeometryErrorÚPointÚPoint2DÚPolygonÚRayÚRegularPolygonÚSegmentÚTriangleÚare_similarÚconvex_hullÚintersectionÚLineÚRay2D)ÚraisesÚslowÚwarns)Úverify_numerically)ÚradÚdeg)Ú	integratec                 C   s&   t dƒ}| | |   k o|k S   S )z.Test if two floating point values are 'equal'.z1.0E-10)r   )ÚaÚbZt_float© r'   úC/usr/lib/python3/dist-packages/sympy/geometry/tests/test_polygon.pyÚfeq   s   r)   c            &         s  t ddd‰ t ddd‰t ddd} 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|||ƒ}	ttd
d
ƒƒtd
d
ƒksRJ ‚t|tdd
ƒ||ƒ|	ks`J ‚ttdd
ƒ|||ƒ|	ksnJ ‚t|||tdd
ƒƒ|	ks|J ‚t|tdd
ƒ||ƒ|	ksŠJ ‚t||tddƒ||ƒ|	ks™J ‚ttddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒƒttddƒtddƒtddƒtddƒƒksåJ ‚ttd
d
ƒtddƒtdd
ƒtddƒtddƒtd
dƒƒ}
ttdd
ƒtddƒtd
d
ƒtd
dƒtddƒtddƒƒ}ttd
d
ƒtdd
ƒtddƒtddƒƒ}ttd
d
ƒtddƒtddƒtdd
ƒƒ}ttd
d
ƒtddƒtd
dƒƒ}ttddƒtddƒtddƒtddƒƒ}ttˆ ˆƒt| |ƒt||ƒƒ}ttˆ ˆƒt||ƒt| |ƒƒ}ttd
d
ƒtddƒtdd
ƒtddƒƒ}ttd
dƒtddƒtd
d
ƒtdd
ƒƒ}ttd
d
ƒddd}ttd
d
ƒdd
dd}ttddƒtddƒƒ}|
|ksÎJ ‚t|
jƒdksØJ ‚t|
j	ƒdksâJ ‚|
j
ddtdƒ  td ƒ td!ƒ ksøJ ‚|
jd"ks J ‚|
 ¡ rJ ‚td#d$d%d&d'ƒ ¡ d(u sJ ‚| ¡ sJ ‚| ¡ s$J ‚|j}|td
d
ƒ td ks5J ‚|td
dƒ td ksCJ ‚| tˆ ˆƒ¡d u sPJ ‚| tddƒ¡s[J ‚| td
d
ƒ¡d(u shJ ‚| tdd
ƒ¡d(u suJ ‚|
 ttd)d)ƒdƒ¡d(u s…J ‚|
 ttd)dƒddƒ¡d(u s–J ‚| d¡ˆ d
dgk | ttddƒtd*d*ƒtdd*ƒƒ¡dtdƒ ks»J ‚| ttdd!ƒtdd!ƒtd!d+ƒtdd+ƒƒ¡dksÖJ ‚ttd,d-' ttd
d
ƒtdd
ƒtddƒƒ ttd
d
ƒtd
dƒtddƒƒ¡ W d   ƒ n	1 sw   Y  t|ƒtttd
d
ƒtddƒtd
dƒƒƒks$J ‚t|
ƒt|ƒks/J ‚t|ƒt|ƒks:J ‚t|ƒt|ƒksEJ ‚|ttddƒtd
dƒtd
d
ƒƒksYJ ‚ttddƒtd
dƒtd
d
ƒƒ|v smJ ‚|td
dƒkswJ ‚td
dƒ|v sJ ‚| d.¡ t d.ddd
¡td
d
ƒks–J ‚tt‡ ‡fd/d0„ƒ | |¡tdtd1d2ƒƒtdtd3dƒƒgks¸J ‚|jd
ksÀJ ‚|ttd
d
ƒddd
ƒksÏJ ‚||ksÖJ ‚|j d
 tdd
ƒksãJ ‚|jd
 td
d
ƒksðJ ‚| !td ¡ |j d
 td
dƒksJ ‚ttd
d
ƒddƒ}
ttd
d
ƒddƒ}tt"d4d0„ ƒ tt"d5d0„ ƒ ttd6d0„ ƒ |
|ks2J ‚|
j#ttddƒ ks?J ‚|
j$ttddƒ ksLJ ‚|j%dt&td ƒ ksZJ ‚|j'|
j'  krltd
d
ƒksoJ ‚ J ‚|
j(|
j)  kr~dksJ ‚ J ‚|j*ttd
d
ƒdƒksJ ‚|j+ttd
d
ƒ|j%ƒksžJ ‚|j,|j%  krµddtdƒ  d ks¸J ‚ J ‚| !td ¡ |j}|td
dƒ dt d ksÒJ ‚|
 ¡ sÙJ ‚|
j-d
ksáJ ‚|
 td
d
ƒ¡sìJ ‚|
 td7d
ƒ¡d(u sùJ ‚| td
d8ƒ¡sJ ‚|
 !td ¡ |
j-td ksJ ‚|
j d
 tddtdƒ ƒks&J ‚|
jD ](}t.|tƒr=|td
d
ƒks;J ‚q)|dksP|dksP|td ksPJ ‚q)|
td
d
ƒks\J ‚|
|kscJ ‚|
}|
 /td ¡ttd
d
ƒddttddƒ ƒks~J ‚|
|ks…J ‚|
jd9tdƒ d: dt0td ƒ  ks›J ‚|
j1d;ttdƒ d! tdd!ƒ ƒ ks±J ‚|
 2dd¡t|
j3|
j)d |
j4|
j-ƒksÇJ ‚td<ddƒ 2dd¡ttdd
ƒtd
dƒtdd
ƒtd
dƒƒksçJ ‚t5|
ƒt6|
ƒksòJ ‚|j}t7|td
d
ƒ  8¡ t9d=ƒƒsJ ‚t7|tddƒ  8¡ t9d>ƒƒsJ ‚t7|tddƒ  8¡ t9d?ƒƒs(J ‚t7|tdd
ƒ  8¡ t9d@ƒƒs9J ‚|j}t7|td
d
ƒ  8¡ t9d=ƒƒsMJ ‚t7|tddƒ  8¡ t9d>ƒƒs^J ‚t7|tddƒ  8¡ t9d?ƒƒsoJ ‚t7|tdd
ƒ  8¡ t9d@ƒƒs€J ‚td
d
ƒ}
tdd
ƒ}td
dƒ}t|
||ƒ}t|
|ttddƒttdAdƒƒƒƒ}t|
t|d
ƒtd
|ƒƒ}|j	}t|
||
ƒt|
||
ƒ  krÍt:|
|ƒksÐJ ‚ J ‚tt"dBd0„ ƒ t|
|
|
ƒ|
ksâJ ‚t||d |d ƒt:||d ƒksöJ ‚|jtdCdƒksJ ‚| ;¡ sJ ‚| ;¡ d(u sJ ‚| ;¡ sJ ‚|
|v sJ ‚|j	d
 |v s)J ‚t:d<dDƒ|v s3J ‚tddƒ|vs=J ‚| ¡ sDJ ‚t7|j|
  8¡ t 8¡ d ƒsUJ ‚| <¡ d(u s^J ‚| <¡ seJ ‚| <¡ d(u snJ ‚t=||ƒd(u sxJ ‚t=||ƒs€J ‚t=||ƒd(u sŠJ ‚| >td
d
ƒ¡d(u s—J ‚| >|¡d(u s¡J ‚| ?¡ } | |
 t:|
ttddƒtddƒƒƒksºJ ‚| ?¡ | t:tdd
ƒttddƒdtdƒ d ƒƒks×J ‚td
|ƒ}| ?¡ | t:|t|tdƒd  d
ƒƒksóJ ‚dEdFtdƒ  dG }!|j@t|!|!ƒksJ ‚|j,|j+j)  kr ddtdƒ d  ks#J ‚ J ‚|j,|j+j)  kr9dtdƒ d ks<J ‚ J ‚|j,|j+j)  krX|d dtdƒ tA|ƒ  ks[J ‚ J ‚|jB|j	d  dtdƒ d ksnJ ‚|jC|j	d  tDdCtdƒ dHtdƒ d ƒksˆJ ‚|j*j3td)d)ƒks”J ‚|jE}"|jFttddƒtddƒƒks¨J ‚|"|
 t:|
ttddƒtddƒƒƒks½J ‚|jE|
 t:|
t|d |d ƒƒksÑJ ‚t|"|
 |"| |"| ƒ|jFgksäJ ‚|jGttd)d
ƒtd
d)ƒtd)d)ƒƒksùJ ‚|jHttd)d
ƒtd
d)ƒtd)d)ƒƒk	sJ ‚|jHttd
d
ƒtd
d)ƒtd)d)ƒƒk	s#J ‚|jI}#|#|
 t:|
ttddƒtddƒƒƒk	s;J ‚|#|  J|d
 ¡	sGJ ‚|#| |d k	sRJ ‚|jK|
k	sZJ ‚tdIƒ}	|	jKtdJƒk	shJ ‚tt|  L¡ Ž ƒdk	suJ ‚tt|# L¡ Ž ƒdk	s‚J ‚tt|" L¡ Ž ƒdk	sJ ‚ttd
d
ƒtdd
ƒtddƒtd
dƒƒ}
ttd
tdƒd ƒtdtdƒd ƒtdtdKƒd ƒtd
tdKƒd ƒƒ}ttddƒtddƒtddƒƒ}ttddƒttdƒd dƒtdtdƒd ƒƒ}t||ƒ}$tddƒ}%	 |
 |$¡|k
s J ‚|
 |%¡d
k
s
J ‚| |$¡tdƒd k
sJ ‚| |%¡tdƒd k
s&J ‚	 ttd,d- |
 |¡|d k
s:J ‚W d   ƒ n	1 
sEw   Y  |
 |¡tdƒd k
sXJ ‚ttd,d-! | |¡tdƒd ttdƒdC ƒd  k
swJ ‚W d   ƒ d S 1 
sƒw   Y  d S )LNÚxT©ÚrealÚyÚqÚuÚvÚwÚx1r   é   é   é   éÿÿÿÿéüÿÿÿé   iõÿÿÿéñÿÿÿgffffff@gffffff!ÀgÍÌÌÌÌÌ Àéþÿÿÿé   éýÿÿÿé
   é   é   é   é÷ÿÿÿ)Úng      @é   é   é   )r6   r5   )r3   r6   ©r3   r5   ©r6   r6   ©r4   r   Fç      @é   é   ú1Polygons may intersect producing erroneous output©ÚmatchÚtc                      s$   t tˆ dƒtdˆƒtˆ ˆƒƒ d¡S )Nr   r*   )r   r   Úarbitrary_pointr'   ©r*   r-   r'   r(   Ú<lambda>z   s    ÿztest_polygon.<locals>.<lambda>i¬ÿÿÿé   é!   c                   S   s   t tddƒtddƒtddƒƒS ©Nr   r5   ©r   r   r'   r'   r'   r(   rR   ‰   s
    ÿÿc                   S   ó   t tddƒddƒS ©Nr   r5   r3   rV   r'   r'   r'   r(   rR   ‹   ó    c                   S   rW   )Nr   r5   rI   rV   r'   r'   r'   r(   rR   Œ   rY   é   gš™™™™™@iÿÿÿiâ  é   ©r   r   z0.7853981633974483z1.2490457723982544z1.8925468811915388z2.3561944901923449éK   c                   S   s   t tddƒƒS )Nr   )r   r   r'   r'   r'   r(   rR   Ó   s    é   ©r5   r   éú   é}   é2   éûÿÿÿzãTriangle(
    Point(100080156402737/5000000000000, 79782624633431/500000000000),
    Point(39223884078253/2000000000000, 156345163124289/1000000000000),
    Point(31241359188437/1250000000000, 338338270939941/1000000000000000))z¼Point(-78066086905059984021699779471538701955848721853/80368430960602242240789074233100000000000000,20151573611150265741278060334545897615974257/160736861921204484481578148466200000000000)é	   )Mr   r   ÚHalfr   r   r   r   ÚlenÚargsÚsidesÚ	perimeterr   ZareaZ	is_convexÚanglesr
   Zencloses_pointÚenclosesr   r   Zplot_intervalZdistancer    ÚUserWarningÚhashrP   Úsubsr   Ú
ValueErrorr   r   r   ZverticesZspinr   Zinterior_angleZexterior_angleZapothemr   ZcircumcenterZcircumradiusZradiusZcircumcircleÚincircleÚinradiusZrotationÚ
isinstanceÚrotater   ÚlengthÚscaleÚcenterZ_nÚreprÚstrr)   Zevalfr   r   Zis_rightÚis_equilateralr   Z
is_similarÚ	bisectorsÚincenterr   ÚexradiiZ	excentersr   ÚmediansZcentroidÚmedialÚnine_point_circleÚ	altitudesZequalsZorthocenterÚvalues)&r.   r/   r0   r1   r2   Zhalfr%   r&   ÚcrO   Úp1Úp2Úp3Úp4Zp5Zp6Zp7Zp8Zp9Zp10Zp11Zp12ÚrZdict5Zdict1ÚvarZp1_oldrj   Út1Út2Út3Ús1rz   ZicÚmr€   Zpt1Zpt2r'   rQ   r(   Útest_polygon   s6  " ý$üýýþþþþþþþþ,
ÿ "ÿ

ÿ$ÿ
ÿÿÿþ0((
ÿ0*$4 "
&€2,,

ÿ$
ÿ""""""""


"6("ÿ"ÿ
.62>&4"*(&*ÿÿ*þ  þþþ

ÿþÿ2$þrŽ   c                  C   sª  t ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt d	dƒt d
dƒg} t| d | d | d | d | d
 | d ƒ}|  | d ¡ t ddƒt ddƒt ddƒt ddƒg}t|d |d ƒ}t|Ž |ksmJ ‚t| Ž |ksuJ ‚t| d ƒ| d ksJ ‚t| d | d ƒt| d | d ƒks•J ‚t| d gd Ž | d ks¤J ‚tt ddƒtt ddƒt ddƒƒtt ddƒdd	ƒgŽ tt ddƒt ddƒt d	dƒt ddƒƒksÓJ ‚d S )Nrc   r6   r:   r5   r<   r   r3   r4   r?   r>   rd   r=   iÓÿÿÿi«ÿÿÿéU   é   ièÿÿÿ)r   r   Úappendr   r   r   )ÚpZchZ	another_pZch2r'   r'   r(   Útest_convex_hullK  s*    (þ*ÿ(
þ$ýr“   c                  C   sŒ   t tddƒtddƒtddƒtddƒttjtjƒƒ} |  tdtjƒ¡du s&J ‚|  ttjtjƒ¡du s4J ‚|  ttddƒtjƒ¡du sDJ ‚d S )Nr   r5   Fr4   r?   T)r   r   r   re   rk   r   )Úsr'   r'   r(   Útest_enclosesg  s   "ÿ$r•   c                   C   sÆ   t ddt tddƒtddƒtddƒƒksJ ‚t ddt tddƒtddƒtd	tdƒd ƒƒks0J ‚t d
dt tddƒtddƒttdƒd tdƒd ƒƒksNJ ‚t ddd u sWJ ‚ttdƒƒdksaJ ‚d S )N)r4   r?   r@   )Zsssr   r4   r?   )é   r3   r–   )Zasar3   r5   )r5   é-   r3   )Zsas)r5   r3   r@   é´   )r   r   r   r#   r"   r'   r'   r'   r(   Útest_triangle_kwargsq  s   ÿ$ÿ,ÿr™   c                  C   sÔ   t ddƒt tjtddƒƒt ddƒg} t ddƒt dtddƒƒt dd	ƒg}t| Ž  d
dd¡t|Ž ks2J ‚tdddƒ d
dd¡tt ddƒt dd	ƒt ddƒt ddƒƒksRJ ‚tdddƒ d
d
¡ttddƒd
ddƒkshJ ‚d S )Nr   r5   r?   r7   iöÿÿÿr<   iÛÿÿÿr:   éùÿÿÿr3   r4   )r?   r@   r\   éúÿÿÿióÿÿÿ)	r   r   re   r   r   ru   r   r   r   )ZptsZpts_outr'   r'   r(   Útest_transform|  s   $"$ÿÿrœ   c            	      C   sf  t ddd} t ddd}t dƒ}t dƒ}td|f|d}t| |ƒ}| |¡}| |¡j}| |¡j}t||ƒs9J ‚td	d
dƒ tdtd¡t	tddƒtddƒtddƒƒksWJ ‚td	d
dƒ tdtd¡t	tddƒtddƒtddƒƒksuJ ‚td	d
dƒ tddd¡t	tddƒtddƒtddƒƒks“J ‚td	d
dƒ tddd¡t	tddƒtddƒtddƒƒks±J ‚d S )Nr*   Tr+   r-   r&   r   r   ©Zsloper_   )r3   r   )r3   r3   rH   r@   r?   r3   )r   r4   r6   r:   r5   r>   )
r   r   r   ZreflectZperpendicular_segmentrt   r!   r   r   r   )	r*   r-   r&   r   Úlr’   r‡   ZdpZdrr'   r'   r(   Útest_reflect†  s,   

ÿÿÿÿrŸ   c                  C   sn  t ddƒt ddƒt ddƒ} }}tt ddƒt ddƒt ddƒt ddƒƒ}tt ddƒt ddƒt ddƒt ddƒƒ}tt ddƒt ddƒt dd	ƒt ddƒt d
dƒƒ}t| ||ƒ}| ¡ | tt ddƒt dtdƒd ƒƒkskJ ‚| ¡ tddƒ ttddƒttt	dtdƒ d ƒd ƒdt
t	dtdƒ d ƒd ƒ ƒƒks›J ‚| ¡ tddƒ ttddƒtdtdƒdtt	dtdƒ d ƒd ƒ dt
t	dtdƒ d ƒd ƒ   d  tdƒdt
t	dtdƒ d ƒd ƒ dtt	dtdƒ d ƒd ƒ   d d ƒƒksýJ ‚| ¡ tddƒ ttddƒtdtt	tdƒd ƒd td  ƒ dtt	tdƒd ƒ d td  ƒ ƒƒks5J ‚d S )Nr   r5   r3   r4   r6   r@   r?   rD   r;   é   iíÿÿÿrC   rd   é‘   rc   r   )r   r   r   rz   r   r   r   r   r	   r   r   r
   )rƒ   r„   r…   r’   r.   ÚpolyrO   r'   r'   r(   Útest_bisectorsœ  s6   "&&..<
ÿ2ÿÿ$ÿÿÿÿÿJÿr£   c                   C   sJ   t tddƒtddƒtddƒƒjtdtdƒd  dtdƒd  ƒks#J ‚d S rX   )r   r   r{   r   r'   r'   r'   r(   Útest_incenter¬  s    ÿr¤   c                   C   s,   t tddƒtddƒtddƒƒjdksJ ‚d S )Nr   r?   r4   r5   )r   r   rq   r'   r'   r'   r(   Útest_inradius°  s   ,r¥   c                   C   sP   t tddƒtddƒtddƒƒjttdtdƒ dtdƒ ƒdtdƒ ƒks&J ‚d S )Nr   r3   )r   r   rp   r   r   r'   r'   r'   r(   Útest_incircle³  s   &ÿr¦   c                  C   sB   t tddƒtddƒtddƒƒ} | j| jd  dtdƒ ksJ ‚d S )Nr   r>   r3   r:   r=   )r   r   r|   rh   r   ©rO   r'   r'   r(   Útest_exradii·  s   $r¨   c                  C   sP   t tddƒtddƒtddƒƒ} | jtddƒ ttddƒttjtjƒƒks&J ‚d S rU   )r   r   r}   r   r   re   r§   r'   r'   r(   Útest_medians»  s   2r©   c                   C   sN   t tddƒtddƒtddƒƒjt ttjdƒttjtjƒtdtjƒƒks%J ‚d S rU   )r   r   r~   r   re   r'   r'   r'   r(   Útest_medial¿  s   $ÿrª   c                   C   sL   t tddƒtddƒtddƒƒjtttddƒtddƒƒtdƒd ƒks$J ‚d S )Nr   r5   r?   r3   )r   r   r   r   r   r   r   r'   r'   r'   r(   Útest_nine_point_circleÃ  s   "ÿr«   c                   C   sÐ   t tddƒtddƒtddƒƒjttddƒttjtjƒƒksJ ‚t tddƒtddƒtddtdƒ ƒƒjtddtdƒ d ƒks@J ‚t tddƒtddƒtd	dƒƒjtttd
dƒdƒttddƒtddƒƒƒksfJ ‚d S )Nr   r5   r=   r@   r4   r?   r›   r6   r<   é@   r;   iãÿÿÿrJ   rš   r3   )	r   r   Z	eulerliner   r   r   re   r   r   r'   r'   r'   r(   Útest_eulerlineÇ  s   ÿ&ÿ&ÿr­   c                  C   sP  t tddƒtddƒtddƒƒ} ttddƒtddƒtddƒtdtddƒƒttjdƒtddƒtddƒƒ}|  |¡ttddƒdƒttdtddƒƒtddƒƒttddƒtddƒƒgksYJ ‚| | ¡ttddƒdƒttddƒtdtddƒƒƒttddƒtddƒƒgks€J ‚|  tddƒ¡tddƒgksJ ‚|  tdd	ƒ¡g ksœJ ‚| t	d
dƒ¡tddƒtddƒttddƒdƒtddƒgks»J ‚| t	ddƒ¡g ksÇJ ‚| t
ddƒ¡ttddƒtddƒƒgksÝJ ‚| tddƒ¡tddƒtddƒgksñJ ‚|  | ¡tt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ƒtddƒƒttddƒtdtddƒƒƒttdtddƒƒttjtddƒƒƒttddƒtddƒƒtttjtddƒƒtddƒƒttddƒtddƒƒgksmJ ‚| t tddƒt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dƒ¡g ks¦J ‚d S )Nr   r5   rc   r7   r@   gš™™™™™¹¿r4   éôÿÿÿiÕÿÿÿ)r®   r   ©rK   r   )r®   rK   )rK   rK   )r<   r?   r_   )r   r6   r:   r6   r=   r;   r>   )r®   r9   )r   r   r   r   r   re   r   r   r   r   r   r   r   )Zpoly1Zpoly2r'   r'   r(   Útest_intersectionÏ  sN   þ
þ
þ 
ÿÿ
ÿ(ÿ"û"*
ÿ r°   c                     s’   t dƒ‰tddddƒ‰ ˆ  dˆ¡ˆtddƒiksJ ‚tdd	d
dƒ} |  dˆ¡ˆddtdƒ  iks3J ‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )NrO   r\   )r   r5   )r5   r5   r_   )g      à?r5   r4   rD   rF   )r3   r?   ©r?   r   r›   r@   c                      s   ˆ   dˆ¡S )N)r@   r>   )Úparameter_valuer'   ©ÚsqrO   r'   r(   rR   ø  s    z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒdƒˆ¡S rU   )r²   r   r   r'   r³   r'   r(   rR   ù  s    )r   r   r²   r   r   r   ro   )r.   r'   r³   r(   Útest_parameter_valueñ  s   $rµ   c                     sÀ   t tddƒtddƒtddƒtddƒtddƒtddƒƒ} tdƒ‰|  ˆ¡‰d| j ‰ ‡ ‡‡fdd„ttdˆ  ƒƒD ƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒgks^J ‚d S )Nr   r=   r@   rO   c                    s   g | ]
}ˆ  ˆˆ | ¡‘qS r'   )rn   )Ú.0Úi©ZDELTAÚptrO   r'   r(   Ú
<listcomp>  s    z$test_issue_12966.<locals>.<listcomp>r5   )r   r   r   rP   ri   ÚrangeÚint)r¢   r'   r¸   r(   Útest_issue_12966ü  s   "ÿ

   þr½   c                  C   s  t dƒ\} }g d¢\}}}d}d| d  d }t| d td|d|fƒ | ddfƒ}tdt|d |d|fƒ | ddfƒ}t| t||d|fƒ | ddfƒ}	t|||ƒ}
||
 |¡d  dks^J ‚||
 |¡d  dkskJ ‚|	|
 |¡d  dksxJ ‚g d¢\}}}}t| d td|ddfƒ | ddfƒ}tdt|d |ddfƒ | ddfƒ}t| t||ddfƒ | ddfƒ}	t||||ƒ}|| |¡d  dksÈJ ‚|| |¡d  dksÕJ ‚|	| |¡d  dksâJ ‚ttddƒd	d
ƒ}| ¡ dtd
ƒ tdƒ dtd
ƒ tdƒ dfksJ ‚d S )Núx, y)r\   r±   ©r   r3   r\   r5   r?   r3   r   )r\   r±   ©r?   r3   r¿   r@   r4   iS  é    )r   r$   r   Zsecond_moment_of_arear   r   r   r   )r*   r-   rƒ   r„   r…   r’   Zeq_yZI_yyZI_xxZI_xyZtriangler†   Ú	rectangler‡   r'   r'   r(   Útest_second_moment_of_area  s*   $$ $$ <rÃ   c                  C   sZ  t ddd\} }td| df| |fd|fƒ}| ¡ | |d  d | d | d fks+J ‚| | d |d	 f¡d
|  |d  d | d  | d fksKJ ‚tddddƒ}| ¡ dksZJ ‚td| df| d |fƒ}| ¡ d	|  |d  d | d | d fks~J ‚| | d |d f¡d|  |d  d d| d  | d fksŸJ ‚tdddƒ}| ¡ dk d S )Núa, bT©Zpositiver\   r   r3   rD   r4   r?   r<   rÁ   rd   )é(   r   )rÆ   r–   )r   r–   )i”  ip  éQ   é   r>   içÿÿÿiˆ  rc   i   r¯   )rK   r–   )g«ªªªªª€@g«ªªªªªjÀ)r   r   Zfirst_moment_of_area)r%   r&   rƒ   r„   r'   r'   r(   Útest_first_moment)  s   ,@0BrÉ   c                  C   sP  t ddd\} }t dƒ\}}td|fd| df| |fƒ}| t||ƒ¡| |d  d | d	 |  | d | d |  d	 |  fksCJ ‚| ¡ | d | d | |d  d  ksYJ ‚tdd
dƒ}| ¡ tddƒtdƒtddƒ fkssJ ‚| ¡ dtdƒ tdƒ ksƒJ ‚tdddddƒ}| ¡ tddƒtddƒfks›J ‚| ¡ tddƒks¦J ‚d S )NrÄ   TrÅ   r¾   r   r\   r4   rK   r3   r5   r>   r@   rD   é   )r5   rD   )r4   r?   )r?   r>   )r;   r5   içÿÿi­  iÎÙÿÿi  ióhÿÿéü   )	r   r   Zsection_modulusr   Zpolar_second_moment_of_arear   r   r   r   )r%   r&   r*   r-   rÂ   ZconvexZconcaver'   r'   r(   Ú4test_section_modulus_and_polar_second_moment_of_area<  s   P,(  rÌ   c                     s¦  t ddtddƒfddtddƒfddd	ƒ‰td
tddƒdfƒ} ˆ | ¡d }ˆ | ¡d }|t ttddƒtddƒƒtdtddƒƒttddƒtddƒƒttddƒtddƒƒtdtddƒƒttddƒtddƒƒttddƒdƒtddƒtdtddƒƒƒ	ks{J ‚|t tddƒttddƒtddƒƒttddƒtddƒƒtddƒttddƒtddƒƒttddƒtddƒƒtddƒtddƒttddƒdƒtdtddƒƒƒ
ksÈJ ‚ttddƒddƒ‰ˆ td
dd¡}|d t tdtdƒ d dtdƒ d ƒtddtdƒ ƒtddtdƒ ƒtddƒtddtdƒ  ddtdƒ  ƒƒksJ ‚|d t tddƒtdtdƒ d dtdƒ d ƒtddtdƒ  ddtdƒ  ƒtddtdƒ ƒtddtdƒ ƒƒksVJ ‚d\‰ }d|fd
ˆ dfˆ |fg\}}}}t ||||ƒ‰ˆ td|fdd¡\}}|d ks…J ‚|t tddƒtddƒtddƒtddƒƒksJ ‚ˆ td
dd¡\}	}
|	t tddƒtddƒtddƒtddƒƒksÀJ ‚|
d ksÇJ ‚tt‡ ‡fdd„ƒ d S ) NrG   r5   r@   r3   rF   r4   rÀ   )r@   r4   )r6   r4   r\   rd   r   rA   rS   r›   rÈ   rÊ   rK   rD   r;   r6   r:   r?   r>   r   r<   )r[   r=   r=   r[   c                      s   ˆ  tdˆ fdd¡S )Nr   r   )Úcut_sectionr   r'   ©r%   r’   r'   r(   rR   o  s    z"test_cut_section.<locals>.<lambda>)	r   r   r   rÍ   r   r   r   r   ro   )rž   rƒ   r„   r”   r&   r‰   rŠ   r‹   Zt4r…   r†   r'   rÎ   r(   Útest_cut_sectionL  s>   (66$
ý4@
þ88ÿ0@ÿ 00rÏ   c                  C   sò   t tddƒtddƒtddƒƒ} |  ¡ dksJ ‚|  ¡ dksJ ‚|  ¡ dks'J ‚t tddƒtddƒtddƒƒ}| ¡ dks>J ‚| ¡ dksFJ ‚| ¡ dksNJ ‚t tddƒtddƒtdtd	ƒƒƒ}| ¡ dksgJ ‚| ¡ dksoJ ‚| ¡ dkswJ ‚d S )
Nr   r@   r3   r?   TFr>   r4   é   )r   r   Zis_isoscelesZ
is_scalenery   r   )rƒ   r„   r…   r'   r'   r(   Útest_type_of_triangleq  s   "rÑ   c                  C   s(  t tddƒtddƒtddƒtddƒƒ} t tddƒtddƒtddƒƒ}|  |¡tdƒd ks/J ‚t tddƒtddƒtddƒtddƒƒ}ttdd |  |¡dksRJ ‚W d   ƒ n1 s\w   Y  t tddƒtddƒttjtjƒƒ}ttdd | | ¡dks‚J ‚W d   ƒ d S 1 sw   Y  d S )Nr   r5   r3   rL   rM   r6   )r   r   Z_do_poly_distancer   r    rl   r   re   )Zsquare1Z	triangle1Zsquare2Z	triangle2r'   r'   r(   Útest_do_poly_distance„  s   &&ÿþ"ÿ"þrÒ   N)BZsympyr   r   r   r   r   r   r   r	   r
   r   r   r   Z(sympy.functions.elementary.trigonometricr   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r    Zsympy.testing.randtestr!   Zsympy.geometry.polygonr"   r#   r$   r)   rŽ   r“   r•   r™   rœ   rŸ   r£   r¤   r¥   r¦   r¨   r©   rª   r«   r­   r°   rµ   r½   rÃ   rÉ   rÌ   rÏ   rÑ   rÒ   r'   r'   r'   r(   Ú<module>   sF   8 D
  :

""%