
    Rie<                         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*dS )    )
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                  l   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  |                    | t          ||           d                                                 sJ dfdt          ||           D             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 d S )NxT)realytfg                  r   c                 b    g | ]+}|                     d                                         ,S )r*   )diffequals).0solexplicitr    s     >lib/python3.11/site-packages/sympy/geometry/tests/test_util.py
<listcomp>ztest_idiff.<locals>.<listcomp>   s3    NNNCHHQNN))(33NNN    i
   i   )r   r   r   r   subsr   r/   r   r   r	   r
   r   r   r   )	r"   r#   r$   r%   circansfxyr2   r    s	          @@r3   
test_idiffr<      sz   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:::::NNNNNuT1~~NNNNNNNQQFA&&:a+;+;*;a*?????1AAaDD		!AAJ.!a88QUCFFN3PQPQRSPTPTu::<UWXWXYZW[W[^_W_<`````1CFF
"QQqTT1Iq11a*Q:J:J6JCPQFF5RRRRR1CFF
"Q!Iq11aR*QQqTT1:M:McSTRTgg:U5UUUUU1!qqttQQqTTlA..*QQqTT12E2EEEEE
sSVVGacMA%%A	1Ad1R4jjL@
ACas3q66z#a&&01SVVQY;>	#a&& "::a<  "$SVV)A+ .023q66	!Q$ ?ACAqD I I I I I I Ir5   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 S )Nr   c                  >    t          t          dd          d          S Nr   r*   )r   r    r5   r3   <lambda>z#test_intersection.<locals>.<lambda>)   s    l5A;;:: r5   r   r   r&   r   )r   )r)   r   )r   r)   T)pairwiser)   )slope)r   r   r   	TypeErrorr   r   r@   r5   r3   test_intersectionrH   '   s   a$$****
9::;;;FF##GV$$  41 1 1 	aWVV,,5.. . . .
   FF##GV$$t5 5 5 	aWVV,,9.. . . .
   FF##GV$$q!!!D	2 2 2
 	aWVV,,6.	. . . . . .r5   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 d S )Nc                  >    t          t          dd          d          S r?   )r   r   r@   r5   r3   rA   z"test_convex_hull.<locals>.<lambda>=   s    k%1++q99 r5   )r)   rD   )r)   )r*   rD   )rL   )   polygonFrM   rL   r)   rD   r*   rN   rO   )r   rG   r   r   )pointss    r3   test_convex_hullrR   <   s    
999:::<<<F59e"455	R'!R..'!R..'"b//J	R'"b//*:, , , , , , ,r5   c                  v   t          ddd          } |                     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 d S )NrB   )r6   r   )r6   r6   r   r7   (   r*   rC   )r&   r&   r)   r&   )r   	translater   r   r   r   )pqs     r3   test_centroidrX   D   s   **A	ArAAq>>U2r]]1_,,,,AAAq>>U1tAwwhl333333E!QKKq!--q!Q>>>>E!QKKq!eAqkk::eAqkk!mKKKKKKr5   c            
         ddl m}  ddlm} t          t
          fD ]}|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 |	df|	dz   df|	dz   dffD             }
|||||||
fD ]{} |d  |t          |          d          D                       }t           |           d         x}\  }}|                    |          |k    sJ |t          |          k    sJ |t                      }t!          |          dk    rJ|                    t           | dd           | dd                               t!          |          dk    Jt          |          } |d  ||d          D                       }t           |           d         x}\  }}|                    |          |k    sJ |t          |          k    sJ t          dd          t          dd          t          t$          j        t)          d          dz            }}}d  ||||fd          D             }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            d S )Nr   )randint)subsetsc                  T      t          dd          t          dd                    S )Nr   r   )funcs   r3   rA   z5test_farthest_points_closest_points.<locals>.<lambda>Y   s#    441wq!}}#E#E r5   r*   r)   r&   r6   r'   rD   r    T)positivec                 ,    g | ]}t          |          S r@   r]   )r0   as     r3   r4   z7test_farthest_points_closest_points.<locals>.<listcomp>i   s    BBBAWQZZBBBr5   c              3   F   K   | ]\  }}|                     |          V  d S Ndistancer0   ijs      r3   	<genexpr>z6test_farthest_points_closest_points.<locals>.<genexpr>l   s0      FFdaAJJqMMFFFFFFr5      d   c              3   F   K   | ]\  }}|                     |          V  d S rc   rd   rf   s      r3   ri   z6test_farthest_points_closest_points.<locals>.<genexpr>w   s0      ==$!Q

1======r5   c                 6    h | ]\  }}t          ||f          S r@   )r   rf   s      r3   	<setcomp>z6test_farthest_points_closest_points.<locals>.<setcomp>   s8     + + +Aq Aq6"" + + +r5   )r)   r)   )r)   r&   )r*   r)   )rM   r&   )rN   r'   rM   rN   rK   rL   rO   ro   rB   c                       t          d          S )Nro   )r   r@   r5   r3   rA   z5test_farthest_points_closest_points.<locals>.<lambda>   s    v66 r5   )sympy.core.randomrZ   sympy.utilities.iterablesr[   minmaxr   r   r   
ValueErrorr   r   setlistre   r   lenaddr   Halfr   )rZ   r[   howp1p2p3p4p5dupr    srQ   dr:   ra   bcr^   s                    @r3   #test_farthest_points_closest_pointsr   O   s   ))))))111111Sz '+ '+#::!DD"DzEEEEFFF ammWQ]]GAqMM:ammWQ]]GAqMM:ammWQ]]GArNN;ammWQ]]GAqMM:ammWQ]]GBNN;q!}}gammWQ]]GBNNK3&&&BB1a&1q5!*q1uaj!ABBB2r2r32 	/ 	/FFFggc&kk1.E.EFFFFFAddFm,,Q//C$!Q::a==A%%%%/#....... &kkQJJwwwq#3@@AAA &kkQfC==''&!*<*<=====$$-((++dazz!}}!!!!oc******* 	1wq!}}gafd1ggai&@&@ qA+ +GQ1Iq))+ + +C!Q""c))))1a##s**** 877FF#	QQ((* * * * *<<<FF#	R'"b//*(, , , , ,66**	A1&/( ( ( ( (
:6677777r5   c                     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 d S )	Nr,   r   r)   rD   rL   r*   	   F)r   r   r   r   r   )ra   r   r   r   s       r3   test_are_coplanarr      s    wq!QB!2!233Awq"a  '!Q"2"233Awq"a  '!R"3"344AWQ]]GAqMM**A1a  E))))1&&&&&&r5   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   r<   rH   rR   rX   r   r   r@   r5   r3   <module>r      s   6 6 6 6 6 6 6 6 " " " " " " $ $ $ $ $ $ : : : : : : : : : : : : : : : : 9 9 9 9 9 9, , , , , , , , , , , , , , , , , , , , , , , , e e e e e e e e e e e e e e ' ' ' ' ' ' ' ' ' ' ' 'I I I4. . .*, , ,L L L>8 >8 >8B' ' ' ' 'r5   