o
    GZŽ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(   úP/var/www/auris/lib/python3.10/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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ƒ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 ‚|
 ¡ r"J ‚td%d&d'd(d)ƒ ¡ d*u s1J ‚| ¡ s8J ‚| ¡ s?J ‚|j}|td
d
ƒ td ksPJ ‚|td
dƒ td ks^J ‚| tˆ ˆƒ¡d u skJ ‚| tddƒ¡svJ ‚| td
d
ƒ¡d*u sƒJ ‚| tdd
ƒ¡d*u sJ ‚|
 ttd+d+ƒdƒ¡d*u s J ‚|
 ttd+dƒddƒ¡d*u s±J ‚| 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/' 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sBJ ‚t|
ƒt|ƒksMJ ‚t|ƒt|ƒksXJ ‚t|ƒt|ƒkscJ ‚|ttddƒtd
dƒtd
d
ƒƒkswJ ‚ttddƒtd
dƒtd
d
ƒƒ|v s‹J ‚|td
dƒks•J ‚td
dƒ|v sŸJ ‚| d0¡ t d0ddd
¡td
d
ƒks´J ‚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s"J ‚t td
d
ƒddƒ}
t td
d
ƒddƒ}tt#d6d2„ ƒ tt#d7d2„ ƒ ttd8d2„ ƒ |
|ksPJ ‚|
j$ttddƒ ks]J ‚|
j%ttddƒ ksjJ ‚|j&dt'td ƒ ksxJ ‚|j(|
j(  krŠtd
d
ƒksJ ‚ J ‚|
j)|
j*  krœdksŸJ ‚ J ‚|j+ttd
d
ƒdƒks­J ‚|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d9d
ƒ¡d*u sJ ‚| td
d:ƒ¡s"J ‚|
 "td ¡ |
j.td ks3J ‚|
j!d
 tddtdƒ ƒksDJ ‚|
jD ]!}t/|tƒr[|td
d
ƒksYJ ‚qG|ddtd fv sgJ ‚qG|
td
d
ƒkssJ ‚|
|kszJ ‚|
}|
 0td ¡t td
d
ƒddttddƒ ƒks•J ‚|
|ksœJ ‚|
jd;tdƒ d< dt1td ƒ  ks²J ‚|
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>ƒƒ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ƒƒsPJ ‚|j}t8|td
d
ƒ  9¡ t:d>ƒƒsdJ ‚t8|tddƒ  9¡ t:d?ƒƒsuJ ‚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 ƒs­J ‚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J ‚ J ‚tt#dCd2„ ƒ t|
|
|
ƒ|
ks%J ‚t||d |d ƒt=||d ƒks9J ‚|jtdDdƒksDJ ‚| >¡ sKJ ‚|  >¡ d*u sTJ ‚|! >¡ s[J ‚|
|v sbJ ‚|j
d
 |v slJ ‚t=d=dEƒ|v svJ ‚tddƒ| vs€J ‚| ¡ s‡J ‚t8|j|
  9¡ t 9¡ d ƒs˜J ‚| ?¡ d*u s¡J ‚|  ?¡ s¨J ‚|! ?¡ d*u s±J ‚t@|| ƒd*u s»J ‚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sJ ‚td
|ƒ}|! B¡ | t=|t|tdƒd  d
ƒƒks6J ‚dFdGtdƒ  dH }$|jCt|$|$ƒksKJ ‚|j-|j,j*  krcddtdƒ d  ksfJ ‚ J ‚| j-| j,j*  kr|dtdƒ d ksJ ‚ J ‚|!j-|!j,j*  kr›|d dtdƒ tD|ƒ  ksžJ ‚ J ‚|jE|j
d  dtdƒ d ks±J ‚|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	s'J ‚|jJttd+d
ƒtd
d+ƒtd+d+ƒƒk	s<J ‚|jKttd+d
ƒtd
d+ƒtd+d+ƒƒk	sQJ ‚|jKttd
d
ƒtd
d+ƒtd+d+ƒƒk	sfJ ‚|jL}&|&|
 t=|
ttddƒtddƒƒƒk	s~J ‚|&|  M|"d
 ¡	sŠJ ‚|&| |"d k	s•J ‚|jN|
k	sJ ‚tdJƒ}	|	jNtdKƒk	s«J ‚t	t|# <¡ Ž ƒdk	s¸J ‚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
sCJ ‚|
 |(¡d
k
sMJ ‚| |'¡tdƒd k
s[J ‚| |(¡tdƒd k
siJ ‚	 ttd.d/ |
 |¡|d k
s}J ‚W d   ƒ n	1 
sˆw   Y  |
 |¡tdƒd k
s›J ‚ttd.d/! | |¡tdƒd ttdƒdD ƒd  k
sºJ ‚W d   ƒ d S 1 
sÆw   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   ó   t tddƒddƒS ©Nr   r6   r4   rX   r(   r(   r(   r)   rT   •   ó    c                   S   rY   )Nr   r6   rL   rX   r(   r(   r(   r)   rT   –   r[   é   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   ã   s    é   ©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
   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   sF  " ý$üýýþþþþþþþþþ,
ÿ "ÿ

ÿ$ÿ
ÿÿÿþ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 )Nrd   r7   r;   r6   r=   r   r4   r5   r@   r?   re   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 s&J ‚|  ttjtjƒ¡du s4J ‚|  ttddƒtjƒ¡du sDJ ‚d S )Nr   r6   Fr5   r@   T)r   r   r   rf   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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)r5   r@   rA   )Zsssr   r5   r@   )é   r4   r›   )Zasar4   r6   )r6   é-   r4   )Ú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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   r6   r@   r8   iöÿÿÿr=   iÛÿÿÿr;   éùÿÿÿr4   r5   )r@   rA   r]   éúÿÿÿióÿÿÿ)	r   r   rf   r   r   rw   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`   )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   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   r6   r4   r5   r7   rA   r@   rD   r<   é   iíÿÿÿrG   re   é‘   rd   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s#J ‚d S rZ   )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s&J ‚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€   ri   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s&J ‚d S rW   )r   r   r   r   r   rf   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 rW   )r   r   r‚   r   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s$J ‚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sfJ ‚d S )Nr   r6   r>   rA   r5   r@   r¡   r7   r=   é@   r<   iãÿÿÿrM   r    r4   )	r   r   Z	eulerliner   r   r   rf   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   r6   rd   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   rf   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 )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     s    z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒdƒˆ¡S rW   )r¸   r   r   r(   r¹   r(   r)   rT   	  s    )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>  s    z$test_issue_12966.<locals>.<listcomp>r6   )r   r   r   rR   rj   Ú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   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_xyÚtrianglerŠ   Ú	rectangler‹   r(   r(   r)   Útest_second_moment_of_area  s*   $$ $$ <rÊ   c                  C   st  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ƒ}| ¡ tdƒd tdƒ d fks¸J ‚d S )Núa, bT©Zpositiver]   r   r4   rD   r5   r@   r=   rÇ   re   )é(   r   )rÍ   r›   )r   r›   )i”  ip  éQ   é   r?   içÿÿÿiˆ  rd   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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]   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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 ) NrJ   r6   rA   r4   rI   r5   rÆ   )rA   r5   )r7   r5   r]   re   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     s    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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   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sSJ ‚W d   ƒ n1 s]w   Y  t tddƒtddƒttjtjƒƒ}ttddd | | ¡dks„J ‚W d   ƒ d S 1 sw   Y  d S )Nr   r6   r4   rO   F)rP   Ztest_stacklevelr7   )r   r   Z_do_poly_distancer
   r    rm   r   rf   )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>   sR    D
  E

""%