
    sg                         d dl 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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 d d	l m!Z!m"Z"m#Z#m$Z$m%Z% d d
l&m'Z' d dl(m)Z) d Z*d Z+d Z,d Z-d Z.d Z/y)    N)Float)
DerivativeFunction)S)Symbol)expcossintancoshsinh)sqrt)PointPoint2DLinePolygonSegmentconvex_hullintersectioncentroidPoint3DLine3DRayEllipse)idiffclosest_pointsfarthest_points_ordered_pointsare_coplanar)solve)raisesc                     t        dd      } t        dd      }t        dd      }t        d      }t        d      }| dz  |dz  z   d	z
  }d
| z  | dz  |dz  z  dz   z  |dz  z  }|t        ||| d      k(  sJ t        ||| d             |t        ||g| d      k(  sJ t        ||| d      |k(  sJ d| z  t        | dz   d	z         dz  z  }|j	                  |t        ||      d         j                  |      sJ dt        ||      D cg c]#  }|j                  | d      j                  |      % c}v sJ t        | |z   |z   ||g|       t        ||        dz
  k(  sJ t         ||       t         ||             z  | t        |       z  z
   ||       |       | dz   t        |       z  t         ||              z   ||       dz   z  k(  sJ t         ||       |t        |       z  z
   ||       |g|       |t        ||       z   t        |       z  k(  sJ t         ||       |t        |       z  z
  | ||       g|       | t         ||       |       t        |        z  z   k(  sJ t         ||        ||       z
   ||        ||       g|       t         ||       |       k(  sJ |dt        |        d| z  z   dz  z  t        |       dz  z   dt        | dz        z  z   z
  }	t        |	||       dt        |       z  t        |       z  dt        |       dz  z  z   dt        |       z  z   t        | dz        dz  z   dt        |       z  | z  z   dt        |       z  | dz  z  z
  d| dz  z  z   k(  sJ y c c}w )NxT)realytfg                  r   i
   i   )r   r   r   r   subsr    equalsdiffr   r   r
   r   r   r	   r   )
r#   r%   r&   r'   r(   circansexplicitsolfxys
             Q/var/www/html/venv/lib/python3.12/site-packages/sympy/geometry/tests/test_util.py
test_idiffr;      s   sAsAsAAAa4!Q$;?D
Q$1QT	A
q!t
#C%aA&&<dAq!(<<&%qc1a((((q!Q3&&&1T1a4%!)_a''H88AuT1~a()00:::uT1~NCHHQN))(3NNNNQQFA&:a+;*;a*????1AaD	!AAJ.!a8QUCFN3PQRSPTu:<UWXYZW[^_W_<````1CF
"QqT1Iq1a*Q:J6JCPQF5RRRR1CF
"Q!Iq1aR*QqT1:McSTRTg:U5UUUU1!qtQqTlA.*QqT12EEEE
sSVGacMA%%A	1Ad1R4jL@
ACas3q6z#a&01SVQY;>	#a& ":a<  "$SV)A+ .023q6	!Q$ ?ACAqD I I I I Os   (M/c            	         t        t        dd            g k(  sJ t        t        d        t        t	        dd      t	        dd      t        dd      d	      t        dd      t	        dd      gk(  sJ t        t        dd      t	        dd      t	        dd      d	      t        dd      t	        dd      gk(  sJ t        t        dd      t	        dd      t	        dd      t        dd
      d	      t        dd      t	        dd      gk(  sJ d} t        t        t        dd      t        dd            t        t        dd      | d      d	      d   j                  }|t        j                  t        ddd      j                        k(  sJ t        dd      } t        t        t        dd      t        dd            t        t        dd      | d      d	      d   j                  }|t        j                  t        ddd      j                        k(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ y )Nr   c                  .    t        t        dd      d      S Nr   r-   )r   r        r:   <lambda>z#test_intersection.<locals>.<lambda>+   s    l5A;: r@   r   r   r)   r   )r   )r,   r   )r   r,   T)pairwiser,   )slopeg      @gMbP?rD   g-C6J?g333333g       @)centerhradiusvradiusgj6gG?gpF)evaluater*   r/   5   r1   )r   r   r!   	TypeErrorr   r   r   r   r   coordinatespytestapproxr   _prec)Rcc2s      r:   test_intersectionrT   )   sz   a$***
9:;FF#GV$ 41 	aWVV,5.. . .
  FF#GV$t5 	aWVV,9.. . .
  FF#GV$q!D	2
 	aWVV,6.	. . . 	Ar"FD!#71a=!SAD	R ST	U VaU`  (*;eLXXZ Z Z Z 	aA	r"FD!#71a=!SAD
R ST
U VaU`  (*;eLXXZ Z Z ZQ4::a5;;"r@   c                      t        t        d        g d} t        | i ddit        dd      t        dd      t        d	d      t        d
d      gt        dd      t        d
d      gfk(  sJ y )Nc                  .    t        t        dd      d      S r>   )r   r   r?   r@   r:   rA   z"test_convex_hull.<locals>.<lambda>P   s    k%1+q9 r@   )r,   rD   )r,   )r-   rD   )rX   )   polygonFrY   rX   r,   rD   r-   rZ   r[   )r!   rL   r   r   )pointss    r:   test_convex_hullr^   O   sp    
99:<F59e"45	R'!R.'!R.'"b/J	R'"b/*:, , , ,r@   c                     t        ddd      } | j                  dd      }t        | |      t        dd      dz  k(  sJ t	        dd      } t	        dd	      }t        | |      t        d
t        d       dz         k(  sJ t        t        dd      t        dd            t        dd      dz  k(  sJ t        t        dd      t        dd      t        dd            t        dd      dz  k(  sJ y )NrB   )r0   r   )r0   r0   r   r1   (   r-   rC   )r)   r)   r,   r)   )r   	translater   r   r   r   )pqs     r:   test_centroidrd   W   s    *A	ArAAq>U2r]1_,,,AAAq>U1tAwhl3333E!QKq!-q!Q>>>E!QKq!eAqk:eAqk!mKKKr@   c            
      "   ddl m}  ddlm} t        t
        fD ]S  }|t        k(  rt        nt        t        t        fd       t        dd      t        dd      t        dd      g}t        dd      t        dd      t        dd      g}t        dd      t        dd      t        dd      g}t        dd      t        dd      t        d	d      g}t        dd      t        dd      t        d
d      g}t        dd      t        dd      t        dd      t        d
d      g}t        dd      }	|	df|	dz   df|	dz   dffD 
cg c]  }
t        |
       }}
|||||||fD ]]  } |d  |t        |      d      D              }t         |       d   x}\  }
}|
j                  |      |k(  sJ |t        |      k(  r]J  t               }t!        |      dk7  r8|j#                  t         | dd       | dd                   t!        |      dk7  r8t        |      } |d  ||d      D              }t         |       d   x}\  }
}|
j                  |      |k(  sJ |t        |      k(  rTJ  t        dd      t        dd      t        t$        j&                  t)        d      dz        }}}
 ||
||fd      D ch c]  \  }}t        ||f       }}}t        |||
      |k(  sJ t        |||
      |k(  sJ g d}t        | t        dd      t        dd	      fhk(  sJ g d}t        | t        dd      t        dd      fhk(  sJ t        dd      t        dd      t        dd      fhk(  sJ t        t        d        y c c}
w c c}}w )Nr   )randint)subsetsc                  >      t        dd      t        dd            S )Nr   )r   )funcs   r:   rA   z5test_farthest_points_closest_points.<locals>.<lambda>l   s    41wq!}#E r@   r-   r,   r)   r0   r*   rD   r#   T)positivec              3   D   K   | ]  \  }}|j                  |        y wNdistance.0ijs      r:   	<genexpr>z6test_farthest_points_closest_points.<locals>.<genexpr>   s     FdaAJJqMF       d   c              3   D   K   | ]  \  }}|j                  |        y wrl   rm   ro   s      r:   rs   z6test_farthest_points_closest_points.<locals>.<genexpr>   s     =$!Q

1=rt   )r,   r,   )r,   r)   )r-   r,   )rY   r)   )rZ   r*   rY   rZ   rW   rX   r[   rx   rB   c                      t        d      S )Nrx   )r   r?   r@   r:   rA   z5test_farthest_points_closest_points.<locals>.<lambda>   s    v6 r@   )sympy.core.randomrf   sympy.utilities.iterablesrg   minmaxr   r   r!   
ValueErrorr   r   setlistrn   r   lenaddr   Halfr   )rf   rg   howp1p2p3p4p5dupr#   asr]   dr6   brR   rq   rr   ri   s                      @r:   #test_farthest_points_closest_pointsr   b   s   )1Sz '+#:!D"DzEF amWQ]GAqM:amWQ]GAqM:amWQ]GArN;amWQ]GAqM:amWQ]GBN;q!}gamWQ]GBNK3&#$a&1q5!*q1uaj!ABAWQZBB2r2r32 	/FFgc&k1.EFFAdFm,Q//C$!Q::a=A%%%/#....		/ &kQJJwwq#3@A &kQf='&!*<==$-(++dazz!}!!!oc****O'+V 	1wq!}gaffd1gai&@ qA Q1Iq)+Aq Aq6" +C +!Q"c)))1a#s*** 8FF#	QQ((* * * *<FF#	R'"b/*(, , , ,66*	A1&/( ( ( (
:67I C,+s   N>Nc                  V   t        t        ddd      t        ddd            } t        t        ddd      t        ddd            }t        t        ddd      t        ddd            }t        t        dd      t        dd            }t	        | ||      dk(  sJ t	        | |      dk(  sJ y )	Nr/   r   r,   rD   rX   r-   	   F)r   r   r   r   r   )r   r   rR   r   s       r:   test_are_coplanarr      s    wq!QB!23Awq"a '!Q"23Awq"a '!R"34AWQ]GAqM*A1a E)))1&&&r@   )0rN   sympy.core.numbersr   sympy.core.functionr   r   sympy.core.singletonr   sympy.core.symbolr   sympy.functionsr   r	   r
   r   r   r   (sympy.functions.elementary.miscellaneousr   sympy.geometryr   r   r   r   r   r   r   r   r   r   r   r   sympy.geometry.utilr   r   r   r   r   sympy.solvers.solversr    sympy.testing.pytestr!   r;   rT   r^   rd   r   r   r?   r@   r:   <module>r      s_     $ 6 " $ : : 9: : : : e e ' 'I4#L,L>8B'r@   