o
    ohk                     @   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bt_float r)   u/var/www/html/construction_image-detection-poc/venv/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sJ t||tdd|||	ksJ 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sJ 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sJ t	|
jdksJ t	|
j
dksJ |
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 sJ |tdd
d*u sJ |
ttd+d+dd*u sJ |
ttd+dddd*u sJ |d d
dgksJ |ttddtd,d,tdd,dtd ksJ |ttddtddtdd-tdd-dksJ 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 sJ |td
dksJ td
d|v sJ |d0t d0ddd
td
d
ksJ tt fd1d2 ||tdtd3d4tdtd5dgksJ |jd
ksJ |t td
d
ddd
ksJ ||ksJ |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rtd
d
ksJ  J |
j)|
j*  krdksJ  J |j+ttd
d
dksJ |j,ttd
d
|j&ksJ |j-|j&  krddtd  d ksJ  J |"td  |j}|td
d dt d ksJ |
 sJ |
j.d
ksJ |
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sJ |
|ksJ |
jd;td d< dt1td   ksJ |
j2d!ttd d tdd  ksJ |
3ddt |
j4|
j*d |
j5|
j.ksJ t d=dd3ddttdd
td
dtdd
td
dksJ 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@sJ t8|tdd
 9 t:dAsJ t;|j< }t8|t	|jd t sJ t;|j< }t8|t	|jd t sJ 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sJ | sJ t8|j|
 9 t9 d sJ |? d*u sJ | ? sJ |!? d*u sJ t@|| d*u sJ t@||!sJ t@| |!d*u sJ |Atd
d
d*u sJ |A| d*u sJ |B }#|#|
 t=|
ttddtddksJ | 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sJ  J |jE|j
d  dtd d ksJ |jF|j
d  tGdDtd dItd d ksJ |j+j4td+d+ksJ |jH}%|jIttddtddksJ |%|
 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
 	sJ |&| |"d k	sJ |jN|
k	sJ tdJ}	|	jNtdKk	sJ t	t|#<  dk	sJ t	t|&<  dk	sJ t	t|%<  dk	sJ 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 
sw   Y  |
|tdd k
sJ ttd.d/! ||tdd ttddD d  k
sJ W d    d S 1 
sw   Y  d S )MNxTrealyquvwx1r               igffffff@gffffff!g    
            )n         g      @      )r8   r7   )r5   r8   r5   r7   r8   r8   r6   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   r7   r   r   r)   r)   r)   r*   rU      s
    c                   S      t tddddS Nr   r7   r5   rY   r)   r)   r)   r*   rU          c                   S   rZ   )Nr   r7   rM   rY   r)   r)   r)   r*   rU      r\      g@ii  r   r   z0.7853981633974483z1.2490457723982544z1.8925468811915388z2.3561944901923449K   c                   S   s   t tddS )Nr   )r   r   r)   r)   r)   r*   rU      s       r7   r      }   2   zTriangle(
    Point(100080156402737/5000000000000, 79782624633431/500000000000),
    Point(39223884078253/2000000000000, 156345163124289/1000000000000),
    Point(31241359188437/1250000000000, 338338270939941/1000000000000000))zPoint(-78066086905059984021699779471538701955848721853/80368430960602242240789074233100000000000000,20151573611150265741278060334545897615974257/160736861921204484481578148466200000000000)	   )Or   r   Halfr   r   r   r%   argsr   lensides	perimeterr
   area	is_convexanglesr   encloses_pointenclosesr   r   plot_intervaldistancer    UserWarninghashrS   subsr   
ValueErrorr   r   r   verticesspinr   interior_angleexterior_angleapothemr   circumcentercircumradiusradiuscircumcircleincircleinradiusrotation
isinstancerotater   lengthscalecenter_nreprstrr+   evalfr   sumvaluesr   is_rightis_equilateralr   
is_similar	bisectorsincenterr	   exradii	excentersr   medianscentroidmedialnine_point_circle	altitudesequalsorthocenter))r0   r1   r2   r3   r4   halfr&   r'   crR   p1p2p3p4p5p6p7p8p9p10p11p12p13p14rdict5dict1varp1_oldrn   interior_angles_sumt1t2t3s1r   icmr   pt1pt2r)   rT   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sJ t| d gd  | d ksJ 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sJ d S )Nre   r8   r<   r7   r>   r   r5   r6   rA   r@   rf   r?   iiU      i)r   r   appendr   r   r   )pch	another_p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   r7   Fr6   rA   T)r   r   r   rg   rp   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)r6   rA   rB   )sssr   r6   rA   )   r5   r   )asar5   r7   )r7   -   r5   )sas)r7   r5   rB      )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   r7   rA   r9   ir>   ir<   r5   r6   )rA   rB   r^   i)	r   r   rg   r   r   r   r   r   r   )pts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sJ td	d
dtdddt	tddtddtddksJ d S )Nr,   Tr-   r/   r'   r   r   slopera   )r5   r   )r5   r5   rL   rB   rA   r5   )r   r6   r8   r<   r7   r@   )
r   r   r   reflectperpendicular_segmentr   r!   r   r   r   )	r,   r/   r'   r   lr   r   dp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sJ | 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sJ | 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   r7   r5   r6   r8   rB   rA   rE   r=      irH   rf      re   r   )r   r   r   r   r   r
   r   r   r   r   r   r   )r   r   r   r   r0   polyrR   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 r[   )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   rA   r6   r7   )r   r   r   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   r5   )r   r   r   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@   r5   r<   r?   )r   r   r   rj   r
   rR   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 rX   )r   r   r   r   r   rg   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 rX   )r   r   r   r   rg   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   r7   rA   r5   )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   r7   r?   rB   r6   rA   r   r8   r>   @   r=   irN   r   r5   )	r   r   	eulerliner   r   r   rg   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sJ | tddtddgksJ | tdd	g ksJ |t	d
dtddtddttdddtddgksJ |t	ddg ksJ |t
ddttddtddgksJ |tddtddtddgksJ | | 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sJ | tdddg ksJ d S )Nr   r7   re   r9   rB   gr6   i)r   r   rO   r   )r   rO   )rO   rO   )r>   rA   ra   )r   r8   r<   r8   r?   r=   r@   )r   r;   )r   r   r   r   r   rg   r   r   r   r   r   r   r   )poly1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 )NrR   r^   )r   r7   )r7   r7   ra   )g      ?r7   r6   rE   rJ   )r5   rA   rA   r   r   rB   c                      s     dS )N)rB   r@   )parameter_valuer)   sqrR   r)   r*   rU     s    z&test_parameter_value.<locals>.<lambda>c                      s     ttdddS rX   )r   r   r   r)   r   r)   r*   rU   	  s    )r   r   r   r   r
   r   rv   )r0   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?   rB   rR   c                    s   g | ]
}  | qS r)   )ru   ).0iDELTAptrR   r)   r*   
<listcomp>  s    z$test_issue_12966.<locals>.<listcomp>r7   )r   r   r   rS   rk   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sJ |||d  dksJ |	||d  dksJ 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   r5   r^   r7   rA   r5   r   )r^   r   rA   r5   r   rB   r6   iS      )r   r$   r   second_moment_of_arear   r   r
   r   )r,   r/   r   r   r   r   eq_yI_yyI_xx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sJ tddd}| tdd td d fksJ d S )Na, bTpositiver^   r   r5   rE   r6   rA   r>   r   rf   )(   r   )r
  r   )r   r   )i  ip  Q      r@   ii  re   i   r   )rO   r   i@  i  )r   r   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sJ tddddd}| tddtddfksJ | tddksJ d S )Nr  Tr  r   r   r^   r6   rO   r5   r7   r@   rB   rE      )r7   rE   )r6   rA   )rA   r@   )r=   r7   ii  ii  ih   )	r   r   section_modulusr   polar_second_moment_of_arear   r   r
   r   )r&   r'   r,   r/   r  convex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sJ 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sJ |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sJ |
d ksJ tt fdd d S ) NrK   r7   rB   r5   rJ   r6   r   )rB   r6   )r8   r6   r^   rf   r   rC   rV   r   r  r  rO   rE   r=   r8   r<   rA   r@   r   r>   )rG   r?   r?   rG   c                      s    td fddS )Nr   r   )cut_sectionr   r)   r&   r   r)   r*   rU     s    z"test_cut_section.<locals>.<lambda>)	r   r   r   r  r   r   r
   r   rv   )r   r   r   r   r'   r   r   r   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   rB   r5   rA   TFr@   r6      )r   r   is_isosceles
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sJ W d    d S 1 sw   Y  d S )Nr   r7   r5   rP   F)rQ   test_stacklevelr8   )r   r   _do_poly_distancer
   r    rs   r   rg   )square1	triangle1square2	triangle2r)   r)   r*   test_do_poly_distance  s   &&""r$  N)Isympy.core.numbersr   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr	   (sympy.functions.elementary.miscellaneousr
   (sympy.functions.elementary.trigonometricr   r   r   r   sympy.geometryr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   r    sympy.core.randomr!   sympy.geometry.polygonr"   r#   sympy.integrals.integralsr$   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

""%