a
    kº”hÒ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(   úO/var/www/auris/lib/python3.9/site-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s¤J ‚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
ƒ||ƒ|	ksJ ‚t||tddƒ||ƒ|	ks6J ‚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ƒtd d!ƒtd
d!ƒƒ}tt|j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 ‚|
 ¡ rJJ ‚td%d&d'd(d)ƒ ¡ d*u shJ ‚| ¡ svJ ‚| ¡ s„J ‚|j}|td
d
ƒ td ks¦J ‚|td
dƒ td ksÂJ ‚| tˆ ˆƒ¡d u sÜJ ‚| tddƒ¡sòJ ‚| td
d
ƒ¡d*u sJ ‚| tdd
ƒ¡d*u s&J ‚|
 ttd+d+ƒdƒ¡d*u sFJ ‚|
 ttd+dƒddƒ¡d*u shJ ‚| d¡ˆ d
dgks‚J ‚| 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/N ttd
d
ƒtdd
ƒtddƒƒ ttd
d
ƒtd
dƒtddƒƒ¡ W d   ƒ n1 sP0    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sÌJ ‚|ttddƒtd
dƒtd
d
ƒƒksôJ ‚ttddƒtd
dƒtd
d
ƒƒ|v sJ ‚|td
dƒks0J ‚td
dƒ|v sDJ ‚| d0¡ t d0ddd
¡td
d
ƒksnJ ‚tt‡ ‡fd1d2„ƒ | |¡tdtd3d4ƒƒtdtd5dƒƒ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sJJ ‚t td
d
ƒddƒ}
t td
d
ƒddƒ}tt#d6d2„ ƒ tt#d7d2„ ƒ ttd8d2„ ƒ |
|ks¦J ‚|
j$ttddƒ ksÀJ ‚|
j%ttddƒ ksÚJ ‚|j&dt'td ƒ ksöJ ‚|j(|
j(  k	rtd
d
ƒk	sn J ‚|
j)|
j*  k	r:dk	s@n J ‚|j+ttd
d
ƒdƒk	s\J ‚|j,ttd
d
ƒ|j&ƒk	szJ ‚|j-|j&  k	r¦ddtdƒ  d k	s¬n 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d9d
ƒ¡d*u 
s.J ‚| td
d:ƒ¡
sDJ ‚|
 "td ¡ |
j.td k
sfJ ‚|
j!d
 tddtdƒ ƒk
sˆJ ‚|
jD ]@}t/|tƒ
r´|td
d
ƒk
sÌJ ‚n|ddtd fv 
sŽJ ‚
qŽ|
td
d
ƒk
säJ ‚|
|k
sòJ ‚|
}|
 0td ¡t td
d
ƒddttddƒ ƒks(J ‚|
|ks6J ‚|
jd;tdƒ d< dt1td ƒ  ksbJ ‚|
j2d!ttdƒ d tddƒ ƒ ksŽJ ‚|
 3dd¡t |
j4|
j*d |
j5|
j.ƒksºJ ‚t d=ddƒ 3dd¡ttdd
ƒtd
dƒtdd
ƒtd
dƒƒksúJ ‚t6|
ƒt7|
ƒksJ ‚|j}t8|td
d
ƒ  9¡ t:d>ƒƒs8J ‚t8|tddƒ  9¡ t:d?ƒƒsZJ ‚t8|tddƒ  9¡ t:d@ƒƒs|J ‚t8|tdd
ƒ  9¡ t:dAƒƒsžJ ‚|j}t8|td
d
ƒ  9¡ t:d>ƒƒsÆJ ‚t8|tddƒ  9¡ t:d?ƒƒsèJ ‚t8|tddƒ  9¡ t:d@ƒƒs
J ‚t8|tdd
ƒ  9¡ t:dAƒƒs,J ‚t;|j <¡ ƒ}t8|t	|jƒd t ƒsXJ ‚t;|j <¡ ƒ}t8|t	|jƒd t ƒs„J ‚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 J ‚tt#dCd2„ ƒ t|
|
|
ƒ|
ksFJ ‚t||d |d ƒt=||d ƒksnJ ‚|jtdDdƒks„J ‚| >¡ s’J ‚|  >¡ d*u s¤J ‚|! >¡ s²J ‚|
|v sÀJ ‚|j
d
 |v sÔJ ‚t=d=dEƒ|v sèJ ‚tddƒ| vsüJ ‚| ¡ s
J ‚t8|j|
  9¡ t 9¡ d ƒs,J ‚| ?¡ d*u s>J ‚|  ?¡ sLJ ‚|! ?¡ d*u s^J ‚t@|| ƒd*u srJ ‚t@||!ƒs‚J ‚t@| |!ƒd*u s–J ‚| Atd
d
ƒ¡d*u s°J ‚| A| ¡d*u sÄJ ‚| B¡ }#|#|
 t=|
ttddƒtddƒƒƒksöJ ‚|  B¡ | t=tdd
ƒttddƒdtdƒ d ƒƒks0J ‚td
|ƒ}|! B¡ | t=|t|tdƒd  d
ƒƒkshJ ‚dFdGtdƒ  dH }$|jCt|$|$ƒks’J ‚|j-|j,j*  krÀddtdƒ d  ksÆn J ‚| j-| j,j*  krðdtdƒ d ksön J ‚|!j-|!j,j*  kr,|d dtdƒ tD|ƒ  ks2n J ‚|jE|j
d  dtdƒ d ksXJ ‚|jF|j
d  tGdDtdƒ dItdƒ d ƒksŒJ ‚|j+j4td+d+ƒks¤J ‚|jH}%|jIttddƒtddƒƒksÌJ ‚|%|
 t=|
ttddƒtddƒƒƒksöJ ‚|!jH|
 t=|
t|d |d ƒƒksJ ‚t|%|
 |%| |%| ƒ|jIgksDJ ‚|jJttd+d
ƒtd
d+ƒtd+d+ƒƒksnJ ‚|jKttd+d
ƒtd
d+ƒtd+d+ƒƒks˜J ‚|jKttd
d
ƒtd
d+ƒtd+d+ƒƒksÂJ ‚|jL}&|&|
 t=|
ttddƒtddƒƒƒksòJ ‚|&|  M|"d
 ¡s
J ‚|&| |"d ks J ‚|jN|
ks0J ‚tdJƒ}	|	jNtdKƒksLJ ‚t	t|# <¡ Ž ƒdksfJ ‚t	t|& <¡ Ž ƒdks€J ‚t	t|% <¡ Ž ƒdksšJ ‚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szJ ‚|
 |(¡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 s0    Y  |
 |¡tdƒd ks(J ‚ttd.d/@ | |¡tdƒd ttdƒdD ƒd  ksfJ ‚W d   ƒ n1 s|0    Y  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)é	   )Or   r   ÚHalfr   r   r   r%   Ú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_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"*(&*ÿÿ*þ  þþþ

ÿ8ÿ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ÚJ ‚t| Ž |ksêJ ‚t| d ƒ| d ksJ ‚t| d | d ƒt| d | d ƒks.J ‚t| d gd Ž | d ksNJ ‚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   r7   r;   r6   r=   r   r4   r5   r@   r?   rd   r>   iÓÿÿÿi«ÿÿÿéU   é   ièÿÿÿ)r   r   Úappendr   r   r   )ÚpÚchZ	another_pZch2r(   r(   r)   Útest_convex_hull[  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 sLJ ‚|  ttjtjƒ¡du shJ ‚|  ttddƒtjƒ¡du sˆJ ‚d S )Nr   r6   Fr5   r@   T)r   r   r   re   rl   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,J ‚t ddt tddƒtddƒtd	tdƒd ƒƒks`J ‚t d
dt tddƒtddƒttdƒd tdƒd ƒƒksœJ ‚t ddd u s®J ‚ttdƒƒdksÂJ ‚d S )N)r5   r@   rA   )Zsssr   r5   r@   )é   r4   r›   )Zasar4   r6   )r6   é-   r4   )Zsas)r6   r4   rA   é´   )r   r   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sdJ ‚tdddƒ d
dd¡tt ddƒt dd	ƒt ddƒt ddƒƒks¤J ‚tdddƒ d
d
¡ttddƒd
ddƒksÐJ ‚d S )Nr   r6   r@   r8   iöÿÿÿr=   iÛÿÿÿr;   éùÿÿÿr4   r5   )r@   rA   r\   éúÿÿÿióÿÿÿ)	r   r   re   r   r   rw   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||ƒsrJ ‚td	d
dƒ tdtd¡t	tddƒtddƒtddƒƒks®J ‚td	d
dƒ tdt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 ‚td	d
dƒ tddd¡t	tddƒtddƒtddƒƒksfJ ‚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!   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ÖJ ‚| ¡ tddƒ ttddƒttt	dtdƒ d ƒd ƒdt
t	dtdƒ d ƒd ƒ ƒƒks8J ‚| ¡ 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snJ ‚d S )Nr   r6   r4   r5   r7   rA   r@   rD   r<   é   iíÿÿÿrG   rd   é‘   rc   r”   )r   r   r   r~   r   r
   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sFJ ‚d S rY   )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@   r5   r6   )r   r   rs   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sLJ ‚d S )Nr   r4   )r   r   rr   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?   r4   r;   r>   )r   r   r€   rh   r
   ©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sLJ ‚d S rW   )r   r   r   r   r   re   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sJJ ‚d S rW   )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sHJ ‚d S )Nr   r6   r@   r4   )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sÌJ ‚d S )Nr   r6   r>   rA   r5   r@   r    r7   r=   é@   r<   iãÿÿÿrM   rŸ   r4   )	r   r   Z	eulerliner   r   r   re   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²J ‚| | ¡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s$J ‚|  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sèJ ‚| 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sZJ ‚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   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s4J ‚tdd	d
dƒ} |  dˆ¡ˆddtdƒ  iksfJ ‚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   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¼J ‚d S )Nr   r>   rA   rQ   c                    s   g | ]}ˆ  ˆˆ | ¡‘qS r(   )ro   )Ú.0Úi©ZDELTAÚptrQ   r(   r)   Ú
<listcomp>  rZ   z$test_issue_12966.<locals>.<listcomp>r6   )r   r   r   rR   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sÖJ ‚|	|
 |¡d  dksðJ ‚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   r4   r\   r6   r@   r4   r   )r\   r¶   ©r@   r4   rÄ   rA   r5   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   sx  t ddd\} }td| df| |fd|fƒ}| ¡ | |d  d | d | d fksVJ ‚| | d |d	 f¡d
|  |d  d | d  | d fks–J ‚tddddƒ}| ¡ dks´J ‚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ƒ}| ¡ tdƒd tdƒ d fkstJ ‚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_arear   )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†J ‚| ¡ | d | d | |d  d  ks²J ‚tdd
dƒ}| ¡ tddƒtdƒtddƒ fksæJ ‚| ¡ 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sRJ ‚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   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ö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s2J ‚|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®J ‚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s<J ‚ˆ td
dd¡\}	}
|	t tddƒtddƒtddƒtddƒƒks‚J ‚|
d ksJ ‚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   r   r
   r   rp   )r£   r‡   rˆ   r™   r'   r   rŽ   r   Zt4r‰   rŠ   r(   rÓ   r)   Útest_cut_section\  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sNJ ‚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td	ƒƒƒ}| ¡ dksÎJ ‚| ¡ dksÞJ ‚| ¡ dksîJ ‚d S )
Nr   rA   r4   r@   TFr?   r5   é   )r   r   Zis_isoscelesZ
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^J ‚t tddƒtddƒtddƒtddƒƒ}ttddd" |  |¡dks¦J ‚W d   ƒ n1 sº0    Y  t tddƒtddƒttjtjƒƒ}ttddd$ | | ¡dks
J ‚W d   ƒ n1 s 0    Y  d S )Nr   r6   r4   rO   F)rP   Ztest_stacklevelr7   )r   r   Z_do_poly_distancer
   r    rm   r   re   )Zsquare1Z	triangle1Zsquare2Z	triangle2r(   r(   r)   Útest_do_poly_distance”  s    &&ÿ0"ÿ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

""%