
    g                         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/dS )    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                  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     Z/var/www/html/ai-engine/env/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    r2   r   r   r
   r   r   r	   r   )	r%   r&   r'   r(   circansfxyr5   r#   s	          @@r6   
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r8   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 d S )Nr   c                  >    t          t          dd          d          S Nr   r-   )r   r    r8   r6   <lambda>z#test_intersection.<locals>.<lambda>+   s    l5A;;:: r8   r   r   r)   r   )r   )r,   r   )r   r,   T)pairwiser,   )slopeg      @gMbP?rG   g-C6J?g333333g       @)centerhradiusvradiusgj6gG?gpF)evaluater*   r/   5   r:   )r   r   r!   	TypeErrorr   r   r   r   r   coordinatespytestapproxr   _prec)Rcc2s      r6   test_intersectionrW   )   sD   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.	. . . . 	Ar""FD!!# #71a==!SAAAD	R 	R 	R ST	U Va  (*;eLLLXZ Z Z Z Z Z 	aA	r""FD!!# #71a==!SAAAD
R 
R 
R ST
U Va  (*;eLLLXZ Z Z Z Z ZQ4:a5;"r8   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 rB   )r   r   rC   r8   r6   rD   z"test_convex_hull.<locals>.<lambda>P   s    k%1++q99 r8   )r,   rG   )r,   )r-   rG   )r[   )   polygonFr\   r[   r,   rG   r-   r]   r^   )r!   rO   r   r   )pointss    r6   test_convex_hullra   O   s    
999:::<<<F59e"455	R'!R..'!R..'"b//J	R'"b//*:, , , , , , ,r8   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 )NrE   )r9   r   )r9   r9   r   r:   (   r-   rF   )r)   r)   r,   r)   )r   	translater   r   r   r   )pqs     r6   test_centroidrg   W   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Kr8   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   r6   rD   z5test_farthest_points_closest_points.<locals>.<lambda>l   s#    441wq!}}#E#E r8   r-   r,   r)   r9   r*   rG   r#   T)positivec                 ,    g | ]}t          |          S rC   rl   )r3   as     r6   r7   z7test_farthest_points_closest_points.<locals>.<listcomp>|   s    BBBAWQZZBBBr8   c              3   F   K   | ]\  }}|                     |          V  d S Ndistancer3   ijs      r6   	<genexpr>z6test_farthest_points_closest_points.<locals>.<genexpr>   s0      FFdaAJJqMMFFFFFFr8      d   c              3   F   K   | ]\  }}|                     |          V  d S rr   rs   ru   s      r6   rx   z6test_farthest_points_closest_points.<locals>.<genexpr>   s0      ==$!Q

1======r8   c                 6    h | ]\  }}t          ||f          S rC   )r   ru   s      r6   	<setcomp>z6test_farthest_points_closest_points.<locals>.<setcomp>   s8     + + +Aq Aq6"" + + +r8   )r,   r,   )r,   r)   )r-   r,   )r\   r)   )r]   r*   r\   r]   rZ   r[   r^   r~   rE   c                       t          d          S )Nr~   )r   rC   r8   r6   rD   z5test_farthest_points_closest_points.<locals>.<lambda>   s    v66 r8   )sympy.core.randomri   sympy.utilities.iterablesrj   minmaxr   r   r!   
ValueErrorr   r   setlistrt   r   lenaddr   Halfr   )ri   rj   howp1p2p3p4p5dupr#   sr`   dr=   rp   brU   rm   s                    @r6   #test_farthest_points_closest_pointsr   b   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7r8   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,   rG   r[   r-   	   F)r   r   r   r   r   )rp   r   rU   r   s       r6   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&&&&&&r8   )0rQ   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?   rW   ra   rg   r   r   rC   r8   r6   <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 L>8 >8 >8B' ' ' ' 'r8   