
    MZd<                         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 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)    )
DerivativeFunction)S)Symbol)expcossintancoshsinh)sqrt)
PointPoint2DLinePolygonSegmentconvex_hullintersectioncentroidPoint3DLine3D)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
             @/usr/lib/python3/dist-packages/sympy/geometry/tests/test_util.py
test_idiffr8      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 y )Nr   c                  .    t        t        dd      d      S Nr   r*   )r   r        r7   <lambda>z#test_intersection.<locals>.<lambda>)   s    l5A;: r=   r   r   r&   r   )r   )r)   r   )r   r)   T)pairwiser)   )slope)r   r   r   	TypeErrorr   r   r<   r=   r7   test_intersectionrE   '   s$   a$***
9:;FF#GV$ 41 	aWVV,5.. . .
  FF#GV$t5 	aWVV,9.. . .
  FF#GV$q!D	2
 	aWVV,6.	. . .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=   r7   r>   z"test_convex_hull.<locals>.<lambda>=   s    k%1+q9 r=   )r)   rA   )r)   )r*   rA   )rI   )   polygonFrJ   rI   r)   rA   r*   rK   rL   )r   rD   r   r   )pointss    r7   test_convex_hullrO   <   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 )Nr?   )r-   r   )r-   r-   r   r.   (   r*   r@   )r&   r&   r)   r&   )r   	translater   r   r   r   )pqs     r7   test_centroidrU   D   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   r7   r>   z5test_farthest_points_closest_points.<locals>.<lambda>Y   s    41wq!}#E r=   r*   r)   r&   r-   r'   rA   r    T)positivec              3   D   K   | ]  \  }}|j                  |        y wNdistance.0ijs      r7   	<genexpr>z6test_farthest_points_closest_points.<locals>.<genexpr>l   s     FdaAJJqMF       d   c              3   D   K   | ]  \  }}|j                  |        y wr]   r^   r`   s      r7   rd   z6test_farthest_points_closest_points.<locals>.<genexpr>w   s     =$!Q

1=re   )r)   r)   )r)   r&   )r*   r)   )rJ   r&   )rK   r'   rJ   rK   rH   rI   rL   ri   r?   c                      t        d      S )Nri   )r   r<   r=   r7   r>   z5test_farthest_points_closest_points.<locals>.<lambda>   s    v6 r=   )sympy.core.randomrW   sympy.utilities.iterablesrX   minmaxr   r   r   
ValueErrorr   r   setlistr_   r   lenaddr   Halfr   )rW   rX   howp1p2p3p4p5dupr    asrN   dr3   bcrb   rc   rZ   s                      @r7   #test_farthest_points_closest_pointsr   O   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)   rA   rI   r*   	   F)r   r   r   r   r   )r|   r   r   r~   s       r7   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=   N)+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   sympy.geometry.utilr   r   r   r   r   sympy.solvers.solversr   sympy.testing.pytestr   r8   rE   rO   rU   r   r   r<   r=   r7   <module>r      sS    6 " $ : : 9, , , e e ' 'I4.*,L>8B'r=   