U
    ZÊ¹jÑ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(   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/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�s�t‚|
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�	r�d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
   Z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_oldrk   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   rl   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   )Ú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   rw   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_segmentrv   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   rs   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   rr   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   rp   )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(   )ro   )Ú.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_xyÚ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�s�t‚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   rp   )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    rm   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

""%