U
    Ý@·fÑk  ã                   @   sÈ  d dl mZ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lmZ d dl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l.m/Z/ dd„ Z0e%d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<d(d)„ Z=d*d+„ Z>d,d-„ Z?d.d/„ Z@d0d1„ ZAd2d3„ ZBd4d5„ ZCd6d7„ ZDd8d9„ ZEd:d;„ ZFd<d=„ ZGd>d?„ ZHd@S )Aé    )ÚFloatÚRationalÚooÚpi)ÚS)ÚSymbolÚsymbols)ÚAbs)Úsqrt)ÚacosÚcosÚsin)Ú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)Ú	integrate)Úrotate_leftc                 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(   úE/tmp/pip-unpacked-wheel-6uje5nh9/sympy/geometry/tests/test_polygon.pyÚfeq   s    r*   c            )         sH  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s¤t‚t|tdd
ƒ||ƒ|	ksÀt‚ttdd
ƒ|||ƒ|	ksÜt‚t|||tdd
ƒƒ|	ksøt‚t|tdd
ƒ||ƒ|	kst‚t||tddƒ||ƒ|	ks6t‚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Ðt‚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ƒtd d!ƒtd
d!ƒƒ}tt|jdƒŽ }t	tddƒtdd"ƒƒ}|
|ksØt‚t
|
jƒdksìt‚t
|
jƒdks t‚|
jddtdƒ  td#ƒ tdƒ ks,t‚|
jd$ks<t‚|
 ¡ rJt‚td%d&d'd(d)ƒ ¡ d*ksht‚| ¡ svt‚| ¡ s„t‚|j}|td
d
ƒ td ks¦t‚|td
dƒ td ksÂt‚| tˆ ˆƒ¡d ksÜt‚| tddƒ¡sòt‚| td
d
ƒ¡d*kst‚| tdd
ƒ¡d*ks&t‚|
 ttd+d+ƒdƒ¡d*ksFt‚|
 ttd+dƒddƒ¡d*ksht‚| d¡ˆ d
dgks‚t‚| ttddƒtd,d,ƒtdd,ƒƒ¡dtdƒ ks¸t‚| ttddƒtddƒtdd-ƒtdd-ƒƒ¡dksît‚ttd.d/D ttd
d
ƒtdd
ƒtddƒƒ ttd
d
ƒtd
dƒtddƒƒ¡ W 5 Q R X t|ƒtttd
d
ƒtddƒtd
dƒƒƒkstt‚t|
ƒt|ƒksŠt‚t|ƒt|ƒks t‚t|ƒt|ƒks¶t‚|ttddƒtd
dƒtd
d
ƒƒksÞt‚ttddƒtd
dƒtd
d
ƒƒ|kst‚|td
dƒkst‚td
dƒ|ks.t‚| d0¡ t d0ddd
¡td
d
ƒksXt‚tt‡ ‡fd1d2„ƒ | |¡tdt d3d4ƒƒtdt d5dƒƒgksœt‚|jd
ks¬t‚|t!td
d
ƒddd
ƒksÊt‚||ksØt‚|j"d
 tdd
ƒksòt‚|jd
 td
d
ƒkst‚| #td ¡ |j"d
 td
dƒks4t‚t!td
d
ƒddƒ}
t!td
d
ƒddƒ}tt$d6d2„ ƒ tt$d7d2„ ƒ ttd8d2„ ƒ |
|kst‚|
j%tt ddƒ ksªt‚|
j&tt ddƒ ksÄt‚|j'dt(td ƒ ksàt‚|j)|
j)  k	rtd
d
ƒk	sn t‚|
j*|
j+  k	r$dk	s*n t‚|j,ttd
d
ƒdƒk	sFt‚|j-ttd
d
ƒ|j'ƒk	sdt‚|j.|j'  k	rddtdƒ  d k	s–n t‚| #td ¡ |j}|td
dƒ dt d k	sÊt‚|
 ¡ 	sØt‚|
j/d
k	sèt‚|
 td
d
ƒ¡	sþt‚|
 td9d
ƒ¡d*k
st‚| td
d:ƒ¡
s.t‚|
 #td ¡ |
j/td k
sPt‚|
j"d
 tddtdƒ ƒk
srt‚|
jD ]@}t0|tƒ
rž|td
d
ƒk
s¶t‚n|ddtd fk
sxt‚
qx|
td
d
ƒk
sÎt‚|
|k
sÜt‚|
}|
 1td ¡t!td
d
ƒddtt ddƒ ƒkst‚|
|ks t‚|
jd;tdƒ d< dt2td ƒ  ksLt‚|
j3d!ttdƒ d t ddƒ ƒ ksxt‚|
 4dd¡t!|
j5|
j+d |
j6|
j/ƒks¤t‚t!d=ddƒ 4dd¡ttdd
ƒtd
dƒtdd
ƒtd
dƒƒksät‚t7|
ƒt8|
ƒksút‚|j}t9|td
d
ƒ  :¡ t;d>ƒƒs"t‚t9|tddƒ  :¡ t;d?ƒƒsDt‚t9|tddƒ  :¡ t;d@ƒƒsft‚t9|tdd
ƒ  :¡ t;dAƒƒsˆt‚|j}t9|td
d
ƒ  :¡ t;d>ƒƒs°t‚t9|tddƒ  :¡ t;d?ƒƒsÒt‚t9|tddƒ  :¡ t;d@ƒƒsôt‚t9|tdd
ƒ  :¡ t;dAƒƒst‚t<|j =¡ ƒ}t9|t
|jƒd t ƒsBt‚t<|j =¡ ƒ}t9|t
|jƒd t ƒsnt‚td
d
ƒ}
tdd
ƒ}td
dƒ}t|
||ƒ}t|
|tt ddƒtt dBdƒƒƒƒ} t|
t|d
ƒtd
|ƒƒ}!|j}"t|
||
ƒt|
||
ƒ  krt>|
|ƒksn t‚tt$dCd2„ ƒ t|
|
|
ƒ|
ks0t‚t||d |d ƒt>||d ƒksXt‚|jt dDdƒksnt‚| ?¡ s|t‚|  ?¡ d*ksŽt‚|! ?¡ sœt‚|
|ksªt‚|jd
 |ks¾t‚t>d=dEƒ|ksÒt‚tddƒ| ksæt‚| ¡ sôt‚t9|j|
  :¡ t :¡ d ƒst‚| @¡ d*ks(t‚|  @¡ s6t‚|! @¡ d*ksHt‚tA|| ƒd*ks\t‚tA||!ƒslt‚tA| |!ƒd*ks€t‚| Btd
d
ƒ¡d*ksšt‚| B| ¡d*ks®t‚| C¡ }#|#|
 t>|
tt ddƒt ddƒƒƒksàt‚|  C¡ | t>tdd
ƒtt ddƒdtdƒ d ƒƒkst‚td
|ƒ}|! C¡ | t>|t|tdƒd  d
ƒƒksRt‚dFdGtdƒ  dH }$|jDt|$|$ƒks|t‚|j.|j-j+  krªddtdƒ d  ks°n t‚| j.| j-j+  krÚdtdƒ d ksàn t‚|!j.|!j-j+  kr|d dtdƒ tE|ƒ  ksn t‚|jF|jd  dtdƒ d ksBt‚|jG|jd  tHdDtdƒ dItdƒ d ƒksvt‚|j,j5td+d+ƒksŽt‚|jI}%|jJtt ddƒt ddƒƒks¶t‚|%|
 t>|
tt ddƒt ddƒƒƒksàt‚|!jI|
 t>|
t|d |d ƒƒkst‚t|%|
 |%| |%| ƒ|jJgks.t‚|jKttd+d
ƒtd
d+ƒtd+d+ƒƒksXt‚|jLttd+d
ƒtd
d+ƒtd+d+ƒƒks‚t‚|jLttd
d
ƒtd
d+ƒtd+d+ƒƒks¬t‚|jM}&|&|
 t>|
tt ddƒt ddƒƒƒksÜt‚|&|  N|"d
 ¡sôt‚|&| |"d ks
t‚|jO|
kst‚tdJƒ}	|	jOtdKƒks6t‚t
t|# =¡ Ž ƒdksPt‚t
t|& =¡ Ž ƒdksjt‚t
t|% =¡ Ž ƒdks„t‚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 dLƒd ƒtd
t dLƒ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sdt‚|
 |(¡d
ksxt‚| |'¡t dƒd ks”t‚| |(¡tdƒd ks°t‚ttd.d/ |
 |¡|d ksÖt‚W 5 Q R X |
 |¡tdƒd ksüt‚ttd.d/6 | |¡tdƒd tt dƒdD ƒd  ks:t‚W 5 Q R X d S )MNÚxT©ÚrealÚyÚqÚuÚvÚwÚx1r   é   é   é   éÿÿÿÿéüÿÿÿé   iõÿÿÿéñÿÿÿgffffff@gffffff!ÀgÍÌÌÌÌÌ Àéþÿÿÿé   éýÿÿÿé
   é   é   é   é÷ÿÿÿ)Úné   é   é   g      @é   é   )r7   r6   )r4   r7   ©r4   r6   ©r7   r7   ©r5   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>„   s     ÿÿztest_polygon.<locals>.<lambda>i¬ÿÿÿé   é!   c                   S   s   t tddƒtddƒtddƒƒS ©Nr   r6   ©r   r   r(   r(   r(   r)   rT   “   s   ÿÿc                   S   s   t tddƒddƒS ©Nr   r6   r4   rX   r(   r(   r(   r)   rT   •   ó    c                   S   s   t tddƒddƒS )Nr   r6   rL   rX   r(   r(   r(   r)   rT   –   rZ   é   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)   rT   ã   rZ   é   ©r6   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)é	   )Pr   r   ÚHalfr   r   r   ÚAssertionErrorr%   Úargsr   ÚlenÚsidesÚ	perimeterr
   ÚareaZ	is_convexÚanglesr   Zencloses_pointÚenclosesr   r   Zplot_intervalZdistancer    ÚUserWarningÚhashrR   Úsubsr   Ú
ValueErrorr   r   r   ZverticesÚ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   ÚsumÚvaluesr   Zis_rightÚis_equilateralr   Z
is_similarÚ	bisectorsÚincenterr	   ÚexradiiZ	excentersr   ÚmediansZcentroidÚmedialÚnine_point_circleÚ	altitudesÚequalsZorthocenter))r/   r0   r1   r2   r3   Zhalfr&   r'   ÚcrQ   Úp1Úp2Úp3Úp4Zp5Zp6Zp7Zp8Zp9Zp10Zp11Zp12Zp13Zp14ÚrZdict5Zdict1ÚvarZp1_oldrl   Zinterior_angles_sumÚt1Út2Út3Ús1r   ZicÚmr…   Zpt1Zpt2r(   rS   r)   Útest_polygon   sˆ   "        ý$ü
   ý   ý  þ  þ þ  þ þ þ  þ  þ  þ,ÿ
 "ÿ
ÿ
$ÿÿ
ÿÿ0((ÿ
0("2 "
2,,
ÿ
$ÿ
""""""""


"4(" ÿ ÿ
.40<&4"*(&* ÿ ÿ*  þ  þ þ þ

ÿ"ÿ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sÚt‚t| Ž |ksêt‚t| d ƒ| d kst‚t| d | d ƒt| d | d ƒks.t‚t| d gd Ž | d ksNt‚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®t‚d S )Nrc   r7   r;   r6   r=   r   r4   r5   r@   r?   rd   r>   iÓÿÿÿi«ÿÿÿéU   é   ièÿÿÿ)r   r   Úappendr   r   rf   r   )ÚpÚchZ	another_pZch2r(   r(   r)   Útest_convex_hull[  s4          þ*ÿ* 
þ$ý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ksLt‚|  ttjtjƒ¡dksht‚|  ttddƒtjƒ¡dksˆt‚d S )Nr   r6   Fr5   r@   T)r   r   r   re   rm   rf   r   )Úsr(   r(   r)   Útest_enclosesw  s    "ÿr›   c                   C   sÆ   t ddt tddƒtddƒtddƒƒks,t‚t ddt tddƒtddƒtd	tdƒd ƒƒks`t‚t d
dt tddƒtddƒttdƒd tdƒd ƒƒksœt‚t ddd ks®t‚ttdƒƒdksÂt‚d S )N)r5   r@   rA   )Zsssr   r5   r@   )é   r4   rœ   )Zasar4   r6   )r6   é-   r4   )Zsas)r6   r4   rA   é´   )r   r   rf   r
   r#   r"   r(   r(   r(   r)   Útest_triangle_kwargs  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sdt‚tdddƒ d
dd¡tt ddƒt dd	ƒt ddƒt ddƒƒks¤t‚tdddƒ d
d
¡tt	ddƒd
ddƒksÐt‚d S )Nr   r6   r@   r8   iöÿÿÿr=   iÛÿÿÿr;   éùÿÿÿr4   r5   )r@   rA   r\   éúÿÿÿióÿÿÿ)
r   r   re   r   r   rx   rf   r   r   r   )ZptsZpts_outr(   r(   r)   Útest_transformŒ  s    $"$ÿÿr¢   c            	      C   sj  t ddd} t ddd}t dƒ}t dƒ}td|f|d}t| |ƒ}| |¡}| |¡j}| |¡j}t||ƒsrt‚td	d
dƒ tdt	d¡t
tddƒtddƒtddƒƒks®t‚td	d
dƒ tdt	d¡t
tddƒtddƒtddƒƒksêt‚td	d
dƒ tddd¡t
tddƒtddƒtddƒƒks(t‚td	d
dƒ tddd¡t
tddƒtddƒtddƒƒksft‚d S )Nr+   Tr,   r.   r'   r’   r   ©Zsloper_   )r4   r   )r4   r4   rK   rA   r@   r4   )r   r5   r7   r;   r6   r?   )r   r   r   ZreflectZperpendicular_segmentrw   r!   rf   r   r   r   )	r+   r.   r'   r’   Úlr—   rŒ   ZdpZdrr(   r(   r)   Útest_reflect–  s,    

ÿÿÿ
ÿr¥   c                  C   sr  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sÖt‚| ¡ tddƒ ttddƒtt	t
dtdƒ d ƒd ƒdtt
dtdƒ d ƒd ƒ ƒƒks8t‚| ¡ 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þt‚| ¡ 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snt‚d S )Nr   r6   r4   r5   r7   rA   r@   rD   r<   é   iíÿÿÿrG   rd   é‘   rc   r•   )r   r   r   r   r   r
   rf   r   r   r   r   r   r   )rˆ   r‰   rŠ   r—   r/   ÚpolyrQ   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sFt‚d S rY   )r   r   r€   r
   rf   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(t‚d S )Nr   r@   r5   r6   )r   r   rt   rf   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sLt‚d S )Nr   r4   )r   r   rs   r   r
   rf   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>t‚d S )Nr   r?   r4   r;   r>   )r   r   r   ri   r
   rf   ©rQ   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sLt‚d S rW   )r   r   r‚   r   r   re   rf   r­   r(   r(   r)   Útest_mediansË  s    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sJt‚d S rW   )r   r   rƒ   r   re   rf   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sHt‚d S )Nr   r6   r@   r4   )r   r   r„   r   r   r   r
   rf   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>t‚t tddƒtddƒtddtdƒ ƒƒjtddtdƒ d ƒks€t‚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sÌt‚d S )Nr   r6   r>   rA   r5   r@   r¡   r7   r=   é@   r<   iãÿÿÿrM   r    r4   )
r   r   Z	eulerliner   r   r   re   rf   r
   r   r(   r(   r(   r)   Útest_eulerline×  s    ÿ&ÿ&ÿr³   c                  C   s^  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s²t	‚| | ¡ttddƒdƒttddƒtdtddƒƒƒttddƒtddƒƒgkst	‚|  tddƒ¡tddƒgks$t	‚|  tdd	ƒ¡g ks>t	‚| t
d
dƒ¡tddƒtddƒttddƒdƒtddƒgks~t	‚| t
ddƒ¡g ks˜t	‚| tddƒ¡ttddƒtddƒƒgksÆt	‚| tddƒ¡tddƒtddƒgksðt	‚|  | ¡ttddƒtddƒƒttddƒtddƒƒttddƒtddƒƒgks@t	‚| |¡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sèt	‚| 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>t	‚|  tdddƒ¡g ksZt	‚d S )Nr   r6   rc   r8   rA   gš™™™™™¹¿r5   éôÿÿÿiÕÿÿÿ)r´   r   ©rN   r   )r´   rN   )rN   rN   )r=   r@   r_   )r   r7   r;   r7   r>   r<   r?   )r´   r:   )r   r   r   r   r   re   r   r   r   rf   r   r   r   r   )Zpoly1Zpoly2r(   r(   r)   Útest_intersectionß  sZ     
  þþ
þ"  ÿÿÿ ÿ"û"*ÿ
r¶   c                     s’   t dƒ‰tddddƒ‰ ˆ  dˆ¡ˆtddƒiks4t‚tdd	d
dƒ} |  dˆ¡ˆddtdƒ  iksft‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )NrQ   r\   )r   r6   )r6   r6   r_   )g      à?r6   r5   rD   rI   )r4   r@   ©r@   r   r¡   rA   c                      s   ˆ   dˆ¡S )N)rA   r?   )Úparameter_valuer(   ©ÚsqrQ   r(   r)   rT     rZ   z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒdƒˆ¡S rW   )r¸   r   r   r(   r¹   r(   r)   rT   	  rZ   )r   r   r¸   r   rf   r
   r   rq   )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¼t‚d S )Nr   r>   rA   rQ   c                    s   g | ]}ˆ  ˆˆ | ¡‘qS r(   )rp   )Ú.0Úi©ZDELTAÚptrQ   r(   r)   Ú
<listcomp>  s     z$test_issue_12966.<locals>.<listcomp>r6   )r   r   r   rR   rj   ÚrangeÚintrf   )r¨   r(   r¾   r)   Útest_issue_12966  s"    " ÿ

       þrÃ   c                  C   s  t dƒ\} }dddg\}}}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¾t‚||
 |¡d  dksØt‚|	|
 |¡d  dksòt‚ddd	dg\}}}}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˜t‚|| |¡d  dks´t‚|	| |¡d  dksÐt‚ttddƒd
dƒ}| ¡ dtdƒ tdƒ dtdƒ tdƒ dfkst‚d S )Núx, yr\   r·   )r   r4   r6   r@   r4   r   ©r@   r4   rA   r5   iS  é    )	r   r$   r   Zsecond_moment_of_arearf   r   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   sx  t ddd\} }td| df| |fd|fƒ}| ¡ | |d  d | d | d fksVt‚| | d |d	 f¡d
|  |d  d | d  | d fks–t‚tddddƒ}| ¡ dks´t‚td| df| d |fƒ}| ¡ d	|  |d  d | d | d fksüt‚| | d |d f¡d|  |d  d d| d  | d fks@t‚tdddƒ}| ¡ tdƒd tdƒ d fkstt‚d S )Núa, bT©Zpositiver\   r   r4   rD   r5   r@   r=   rÆ   rd   )é(   r   )rË   rœ   )r   rœ   )i”  ip  éQ   é   r?   içÿÿÿiˆ  rc   i   rµ   )rN   rœ   i@  i€  )r   r   Zfirst_moment_of_arearf   r   )r&   r'   rˆ   r‰   r(   r(   r)   Útest_first_moment9  s    ,@0DrÎ   c                  C   sV  t ddd\} }t dƒ\}}td|fd| df| |fƒ}| t||ƒ¡| |d  d | d	 |  | d | d |  d	 |  fks†t‚| ¡ | d | d | |d  d  ks²t‚tdd
dƒ}| ¡ tddƒtdƒtddƒ fksæt‚| ¡ dtdƒ t	dƒ kst‚tdddddƒ}| ¡ tddƒtddƒfks:t‚| ¡ tddƒksRt‚d S )NrÉ   TrÊ   rÄ   r   r\   r5   rN   r4   r6   r?   rA   rD   é   )r6   rD   )r5   r@   )r@   r?   )r<   r6   içÿÿi­  iÎÙÿÿi  ióhÿÿéü   )
r   r   Zsection_modulusr   rf   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_areaL  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öt‚|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’t‚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s2t‚|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s®t‚d\‰ }d|fd
ˆ dfˆ |fg\}}}}t ||||ƒ‰ˆ td|fdd¡\}}|d kst‚|t tddƒtddƒtddƒtddƒƒks<t‚ˆ td
dd¡\}	}
|	t tddƒtddƒtddƒtddƒƒks‚t‚|
d kst‚tt	‡ ‡fdd„ƒ d S ) NrJ   r6   rA   r4   rI   r5   rÅ   )rA   r5   )r7   r5   r\   rd   r   rB   rU   r¡   rÍ   rÏ   rN   rD   r<   r7   r;   r@   r?   r£   r=   )rF   r>   r>   rF   c                      s   ˆ  tdˆ fdd¡S )Nr   r£   )Úcut_sectionr   r(   ©r&   r—   r(   r)   rT     rZ   z"test_cut_section.<locals>.<lambda>)
r   r   r   rÒ   r   rf   r   r
   r   rq   )r¤   rˆ   r‰   rš   r'   rŽ   r   r   Zt4rŠ   r‹   r(   rÓ   r)   Útest_cut_section\  s\    (      ý
4     þ8   ÿ0   ÿ 00rÔ   c                  C   sò   t tddƒtddƒtddƒƒ} |  ¡ dks.t‚|  ¡ dks>t‚|  ¡ dksNt‚t tddƒtddƒtddƒƒ}| ¡ dks|t‚| ¡ dksŒt‚| ¡ dksœt‚t tddƒtddƒtdtd	ƒƒƒ}| ¡ dksÎt‚| ¡ dksÞt‚| ¡ dksît‚d S )
Nr   rA   r4   r@   TFr?   r5   é   )r   r   Zis_isoscelesrf   Z
is_scalener~   r
   )rˆ   r‰   rŠ   r(   r(   r)   Útest_type_of_triangle  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^t‚t tddƒtddƒtddƒtddƒƒ}ttddd |  |¡dks¦t‚W 5 Q R X t tddƒtddƒttjtjƒƒ}ttddd | | ¡dksôt‚W 5 Q R X d S )Nr   r6   r4   rO   F)rP   Ztest_stacklevelr7   )	r   r   Z_do_poly_distancer
   rf   r    rn   r   re   )Zsquare1Z	triangle1Zsquare2Z	triangle2r(   r(   r)   Útest_do_poly_distance”  s    && ÿ" ÿr×   N)IZsympy.core.numbersr   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr	   Z(sympy.functions.elementary.miscellaneousr
   Z(sympy.functions.elementary.trigonometricr   r   r   r   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.core.randomr!   Zsympy.geometry.polygonr"   r#   Zsympy.integrals.integralsr$   Zsympy.utilities.iterablesr%   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>   sP   D
  E

""%