a
    ¬<bj  ã                   @   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„ Z.e%dd„ ƒZ/dd„ Z0dd„ Z1dd„ Z2dd„ Z3dd„ Z4dd„ Z5dd„ Z6dd „ Z7d!d"„ Z8d#d$„ Z9d%d&„ Z:d'd(„ Z;d)d*„ Z<d+d,„ Z=d-d.„ Z>d/d0„ Z?d1d2„ Z@d3d4„ ZAd5d6„ ZBd7d8„ ZCd9d:„ ZDd;d<„ ZEd=d>„ ZFd?S )@é    )Ú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)Ú	integratec                 C   s&   t dƒ}| | |   k o |k S   S )z.Test if two floating point values are 'equal'.z1.0E-10)r   )ÚaÚbZt_float© r'   úq/Users/vegardjervell/Documents/master/model/venv/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ƒƒ}|
|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 s2J ‚| ¡ s@J ‚| ¡ sNJ ‚|j}|td
d
ƒ td kspJ ‚|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 sJ ‚|
 ttd)dƒddƒ¡d(u s2J ‚| d¡ˆ d
dgksLJ ‚| 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 s0    Y  t|ƒtttd
d
ƒtddƒtd
dƒƒƒksTJ ‚t|
ƒt|ƒksjJ ‚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súJ ‚td
dƒ|v sJ ‚| d.¡ t d.ddd
¡td
d
ƒks8J ‚tt‡ ‡fd/d0„ƒ | |¡tdtd1d2ƒƒtdtd3dƒƒgks|J ‚|jd
ksŒJ ‚|ttd
d
ƒddd
ƒksªJ ‚||ks¸J ‚|j d
 tdd
ƒksÒJ ‚|jd
 td
d
ƒksìJ ‚| !td ¡ |j d
 td
dƒksJ ‚ttd
d
ƒddƒ}
ttd
d
ƒddƒ}tt"d4d0„ ƒ tt"d5d0„ ƒ ttd6d0„ ƒ |
|kspJ ‚|
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	sDJ ‚|j,|j%  k	rpddtdƒ  d k	svn J ‚| !td ¡ |j}|td
dƒ dt d k	sªJ ‚|
 ¡ 	s¸J ‚|
j-d
k	sÈJ ‚|
 td
d
ƒ¡	sÞJ ‚|
 td7d
ƒ¡d(u 	søJ ‚| td
d8ƒ¡
sJ ‚|
 !td ¡ |
j-td k
s0J ‚|
j d
 tddtdƒ ƒk
sRJ ‚|
jD ]@}t.|tƒ
r~|td
d
ƒk
s–J ‚n|ddtd fv 
sXJ ‚
qX|
td
d
ƒk
s®J ‚|
|k
s¼J ‚|
}|
 /td ¡ttd
d
ƒddttddƒ ƒk
sòJ ‚|
|ks J ‚|
jd9tdƒ d: dt0td ƒ  ks,J ‚|
j1d;ttdƒ d! tdd!ƒ ƒ ksXJ ‚|
 2dd¡t|
j3|
j)d |
j4|
j-ƒks„J ‚td<ddƒ 2dd¡ttdd
ƒtd
dƒtdd
ƒtd
dƒƒksÄJ ‚t5|
ƒt6|
ƒksÚJ ‚|j}t7|td
d
ƒ  8¡ t9d=ƒƒsJ ‚t7|tddƒ  8¡ t9d>ƒƒs$J ‚t7|tddƒ  8¡ t9d?ƒƒsFJ ‚t7|tdd
ƒ  8¡ t9d@ƒƒshJ ‚|j}t7|td
d
ƒ  8¡ t9d=ƒƒsJ ‚t7|tddƒ  8¡ t9d>ƒƒs²J ‚t7|tddƒ  8¡ t9d?ƒƒsÔJ ‚t7|tdd
ƒ  8¡ t9d@ƒƒsöJ ‚td
d
ƒ}
tdd
ƒ}td
dƒ}t|
||ƒ}t|
|ttddƒttdAdƒƒƒƒ}t|
t|d
ƒtd
|ƒƒ}|j	}t|
||
ƒt|
||
ƒ  krŽt:|
|ƒks”n J ‚tt"dBd0„ ƒ t|
|
|
ƒ|
ks¸J ‚t||d |d ƒt:||d ƒksàJ ‚|jtdCdƒksöJ ‚| ;¡ sJ ‚| ;¡ d(u sJ ‚| ;¡ s$J ‚|
|v s2J ‚|j	d
 |v sFJ ‚t:d<dDƒ|v sZJ ‚tddƒ|vsnJ ‚| ¡ s|J ‚t7|j|
  8¡ t 8¡ 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 ‚| >td
d
ƒ¡d(u s"J ‚| >|¡d(u s6J ‚| ?¡ } | |
 t:|
ttddƒtddƒƒƒkshJ ‚| ?¡ | t:tdd
ƒttddƒdtdƒ d ƒƒks¢J ‚td
|ƒ}| ?¡ | t:|t|tdƒd  d
ƒƒksÚJ ‚dEdFtdƒ  dG }!|j@t|!|!ƒksJ ‚|j,|j+j)  kr2ddtdƒ d  ks8n J ‚|j,|j+j)  krbdtdƒ d kshn J ‚|j,|j+j)  krž|d dtdƒ tA|ƒ  ks¤n J ‚|jB|j	d  dtdƒ d ksÊJ ‚|jC|j	d  tDdCtdƒ dHtdƒ d ƒksþJ ‚|j*j3td)d)ƒksJ ‚|jE}"|jFttddƒtddƒƒks>J ‚|"|
 t:|
ttddƒtddƒƒƒkshJ ‚|jE|
 t:|
t|d |d ƒƒksJ ‚t|"|
 |"| |"| ƒ|jFgks¶J ‚|jGttd)d
ƒtd
d)ƒtd)d)ƒƒksàJ ‚|jHttd)d
ƒtd
d)ƒtd)d)ƒƒks
J ‚|jHttd
d
ƒtd
d)ƒtd)d)ƒƒks4J ‚|jI}#|#|
 t:|
ttddƒtddƒƒƒksdJ ‚|#|  J|d
 ¡s|J ‚|#| |d ks’J ‚|jK|
ks¢J ‚tdIƒ}	|	jKtdJƒks¾J ‚tt|  L¡ Ž ƒdksØJ ‚tt|# L¡ Ž ƒdksòJ ‚tt|" L¡ Ž ƒ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dKƒd ƒtd
tdKƒd ƒƒ}ttddƒtddƒtddƒƒ}ttddƒttdƒd dƒtdtdƒd ƒƒ}t||ƒ}$tddƒ}%|
 |$¡|ksìJ ‚|
 |%¡d
ks J ‚| |$¡tdƒd ksJ ‚| |%¡tdƒd ks8J ‚ttd,d-( |
 |¡|d ks^J ‚W d   ƒ n1 st0    Y  |
 |¡tdƒd ksšJ ‚ttd,d-@ | |¡tdƒd ttdƒdC ƒd  ksØJ ‚W d   ƒ n1 sî0    Y  d S )LNÚxT©ÚrealÚyÚqÚuÚvÚwÚx1r   é   é   é   éÿÿÿÿéüÿÿÿé   iõÿÿÿéñÿÿÿgffffff@gffffff!ÀgÍÌÌÌÌÌ Àéþÿÿÿé   éýÿÿÿé
   é   é   é   é÷ÿÿÿ)Úng      @é   é   é   )r6   r5   )r3   r6   ©r3   r5   ©r6   r6   ©r4   r   Fç      @é   é   ú1Polygons may intersect producing erroneous output)ÚmatchÚtc                      s$   t tˆ dƒtdˆƒtˆ ˆƒƒ d¡S )Nr   r*   )r   r   Úarbitrary_pointr'   ©r*   r-   r'   r(   Ú<lambda>~   s   ÿÿztest_polygon.<locals>.<lambda>i¬ÿÿÿé   é!   c                   S   s   t tddƒtddƒtddƒƒS ©Nr   r5   ©r   r   r'   r'   r'   r(   rQ      s   ÿÿc                   S   s   t tddƒddƒS ©Nr   r5   r3   rU   r'   r'   r'   r(   rQ      ó    c                   S   s   t tddƒddƒS )Nr   r5   rI   rU   r'   r'   r'   r(   rQ      rW   é   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(   rQ   ×   rW   é   ©r5   r   éú   é}   é2   éûÿÿÿzãTriangle(
    Point(100080156402737/5000000000000, 79782624633431/500000000000),
    Point(39223884078253/2000000000000, 156345163124289/1000000000000),
    Point(31241359188437/1250000000000, 338338270939941/1000000000000000))z¼Point(-78066086905059984021699779471538701955848721853/80368430960602242240789074233100000000000000,20151573611150265741278060334545897615974257/160736861921204484481578148466200000000000)é	   )Mr   r   ÚHalfr   r   r   r   ÚlenÚargsÚsidesÚ	perimeterr
   ÚareaZ	is_convexÚanglesr   Zencloses_pointÚenclosesr   r   Zplot_intervalZdistancer    ÚUserWarningÚhashrO   Ú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   r   Zis_rightÚis_equilateralr   Z
is_similarÚ	bisectorsÚincenterr	   ÚexradiiZ	excentersr   ÚmediansZcentroidÚmedialÚnine_point_circleÚ	altitudesÚequalsZorthocenterÚvalues)&r.   r/   r0   r1   r2   Zhalfr%   r&   ÚcrN   Úp1Úp2Úp3Úp4Zp5Zp6Zp7Zp8Zp9Zp10Zp11Zp12ÚrZdict5Zdict1ÚvarZp1_oldri   Út1Út2Út3Ús1rz   ZicÚmr€   Zpt1Zpt2r'   rP   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 )Nra   r6   r:   r5   r<   r   r3   r4   r?   r>   rb   r=   iÓÿÿÿi«ÿÿÿéU   é   ièÿÿÿ)r   r   Úappendr   r   r   )ÚpÚchZ	another_pZch2r'   r'   r(   Útest_convex_hullO  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   r5   Fr4   r?   T)r   r   r   rc   rj   r   )Úsr'   r'   r(   Útest_enclosesk  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)r4   r?   r@   )Zsssr   r4   r?   )é   r3   r˜   )Zasar3   r5   )r5   é-   r3   )Zsas)r5   r3   r@   é´   )r   r   r
   r#   r"   r'   r'   r'   r(   Útest_triangle_kwargsu  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   r5   r?   r7   iöÿÿÿr<   iÛÿÿÿr:   éùÿÿÿr3   r4   )r?   r@   rZ   éúÿÿÿióÿÿÿ)	r   r   rc   r   r   ru   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]   )r3   r   )r3   r3   rH   r@   r?   r3   )r   r4   r6   r:   r5   r>   )
r   r   r   ZreflectZperpendicular_segmentrt   r!   r   r   r   )	r*   r-   r&   rŽ   Úlr“   rˆ   ZdpZdrr'   r'   r(   Útest_reflectŠ  s,    

ÿÿÿ
ÿr¡   c                  C   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   r5   r3   r4   r6   r@   r?   rD   r;   é   iíÿÿÿrC   rb   é‘   ra   r‘   )r   r   r   rz   r   r
   r   r   r   r   r   r   )r„   r…   r†   r“   r.   ÚpolyrN   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 rV   )r   r   r{   r
   r'   r'   r'   r(   Útest_incenter°  s     ÿr¦   c                   C   s,   t tddƒtddƒtddƒƒjdks(J ‚d S )Nr   r?   r4   r5   )r   r   rq   r'   r'   r'   r(   Útest_inradius´  s    r§   c                   C   sP   t tddƒtddƒtddƒƒjttdtdƒ dtdƒ ƒdtdƒ ƒksLJ ‚d S )Nr   r3   )r   r   rp   r   r
   r'   r'   r'   r(   Útest_incircle·  s    &ÿr¨   c                  C   sB   t tddƒtddƒtddƒƒ} | j| jd  dtdƒ ks>J ‚d S )Nr   r>   r3   r:   r=   )r   r   r|   rf   r
   ©rN   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 rT   )r   r   r}   r   r   rc   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 rT   )r   r   r~   r   rc   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   r5   r?   r3   )r   r   r   r   r   r   r
   r'   r'   r'   r(   Útest_nine_point_circleÇ  s    "ÿr­   c                   C   sÐ   t tddƒtddƒtddƒƒjttddƒttjtjƒƒks>J ‚t tddƒtddƒtddtdƒ ƒƒjtddtdƒ d ƒks€J ‚t tddƒtddƒtd	dƒƒjtttd
dƒdƒttddƒtddƒƒƒksÌJ ‚d S )Nr   r5   r=   r@   r4   r?   r   r6   r<   é@   r;   iãÿÿÿrJ   rœ   r3   )	r   r   Z	eulerliner   r   r   rc   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   r5   ra   r7   r@   gš™™™™™¹¿r4   éôÿÿÿiÕÿÿÿ)r°   r   ©rK   r   )r°   rK   )rK   rK   )r<   r?   r]   )r   r6   r:   r6   r=   r;   r>   )r°   r9   )r   r   r   r   r   rc   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 )NrN   rZ   )r   r5   )r5   r5   r]   )g      à?r5   r4   rD   rF   )r3   r?   ©r?   r   r   r@   c                      s   ˆ   dˆ¡S )N)r@   r>   )Úparameter_valuer'   ©ÚsqrN   r'   r(   rQ   ü  rW   z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒdƒˆ¡S rT   )r´   r   r   r'   rµ   r'   r(   rQ   ý  rW   )r   r   r´   r   r
   r   rn   )r.   r'   rµ   r(   Útest_parameter_valueõ  s    $r·   c                     sÀ   t tddƒtddƒtddƒtddƒtddƒtddƒƒ} tdƒ‰|  ˆ¡‰d| j ‰ ‡ ‡‡fdd„ttdˆ  ƒƒD ƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒtddƒgks¼J ‚d S )Nr   r=   r@   rN   c                    s   g | ]}ˆ  ˆˆ | ¡‘qS r'   )rm   )Ú.0Úi©ZDELTAÚptrN   r'   r(   Ú
<listcomp>  rW   z$test_issue_12966.<locals>.<listcomp>r5   )r   r   r   rO   rg   Ú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)rZ   r³   ©r   r3   rZ   r5   r?   r3   r   )rZ   r³   ©r?   r3   rÁ   r@   r4   iS  é    )r   r$   r   Zsecond_moment_of_arear   r   r
   r   )r*   r-   r„   r…   r†   r“   Zeq_yZI_yyZI_xxZI_xyZtriangler‡   Ú	rectanglerˆ   r'   r'   r(   Útest_second_moment_of_area  s*    $$ $$ rÅ   c                  C   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positiverZ   r   r3   rD   r4   r?   r<   rÃ   rb   )é(   r   )rÈ   r˜   )r   r˜   )i”  ip  éQ   é   r>   içÿÿÿiˆ  ra   i   r±   )rK   r˜   i@  i€  )r   r   Zfirst_moment_of_arear   )r%   r&   r„   r…   r'   r'   r(   Útest_first_moment-  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   rZ   r4   rK   r3   r5   r>   r@   rD   é   )r5   rD   )r4   r?   )r?   r>   )r;   r5   içÿÿi­  iÎÙÿÿi  ióhÿÿéü   )	r   r   Zsection_modulusr   Zpolar_second_moment_of_arear   r   r
   r   )r%   r&   r*   r-   rÄ   ZconvexZconcaver'   r'   r(   Ú4test_section_modulus_and_polar_second_moment_of_area@  s    P,(""rÎ   c                     s¨  t ddtddƒfddtddƒfddd	ƒ‰td
tddƒdfƒ} ˆ | ¡d }ˆ | ¡d }|t ttddƒtddƒƒtdtddƒƒttddƒtddƒƒttddƒtddƒƒtdtddƒƒttddƒtddƒƒttddƒdƒtddƒtdtddƒƒƒ	ksöJ ‚|t tddƒttddƒtddƒƒttddƒtddƒƒtddƒttddƒtddƒƒttddƒtddƒƒtddƒtddƒttddƒdƒtdtddƒƒƒ
ks’J ‚ttddƒddƒ‰ˆ td
dd¡}|d t tdtdƒ d dtdƒ d ƒtddtdƒ ƒtddtdƒ ƒtddƒtddtdƒ  ddtdƒ  ƒƒk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 ) NrG   r5   r@   r3   rF   r4   rÂ   )r@   r4   )r6   r4   rZ   rb   r   rA   rR   r   rÊ   rÌ   rK   rD   r;   r6   r:   r?   r>   rŸ   r<   )rY   r=   r=   rY   c                      s   ˆ  tdˆ fdd¡S )Nr   rŸ   )Úcut_sectionr   r'   ©r%   r“   r'   r(   rQ   s  rW   z"test_cut_section.<locals>.<lambda>)	r   r   r   rÏ   r   r   r
   r   rn   )r    r„   r…   r–   r&   rŠ   r‹   rŒ   Zt4r†   r‡   r'   rÐ   r(   Útest_cut_sectionP  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   r@   r3   r?   TFr>   r4   é   )r   r   Zis_isoscelesZ
is_scalenery   r
   )r„   r…   r†   r'   r'   r(   Útest_type_of_triangleu  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   r5   r3   rL   F)rM   Ztest_stacklevelr6   )r   r   Z_do_poly_distancer
   r    rk   r   rc   )Zsquare1Z	triangle1Zsquare2Z	triangle2r'   r'   r(   Útest_do_poly_distanceˆ  s    &&ÿ0"ÿrÔ   N)GZ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$   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>   sN   D
  :

""%