
    \h                     
    S SK JrJrJr  S SKJr  S SKJ	r	  \\R                  4S jr\\R                  4S jrS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rSS jrS rS rS rS r g! \ a     Nuf = f)    )c_floatc_intc_doubleN)Sc                 H    U S-  " 5       nU" [         R                  U5        U$ z'
Returns the current modelview matrix.
   )pglGL_MODELVIEW_MATRIX
array_typeglGetMethodms      V/var/www/auris/envauris/lib/python3.13/site-packages/sympy/plotting/pygletplot/util.pyget_model_matrixr   
   s%     
BA''+H    c                 H    U S-  " 5       nU" [         R                  U5        U$ r   )r
   GL_PROJECTION_MATRIXr   s      r   get_projection_matrixr      s%     
BA((!,Hr   c                  l    [         S-  " 5       n [        R                  " [        R                  U 5        U $ )z
Returns the current viewport.
   )r   r
   glGetIntegervGL_VIEWPORTr   s    r   get_viewportr      s(     
qAcooq)Hr   c                  h    [        5       n U S   U S   U S   4U S   U S   U S   4U S   U S   U S	   44$ )
Nr   r            	         
   r   r   s    r   get_direction_vectorsr%   %   V    AqT1Q41qT1Q41qT1Q42! !r   c                  h    [        5       n U S   U S   U S   4U S   U S   U S   4U S   U S   U S	   44$ )
Nr   r   r!   r   r   r"   r   r    r#   r$   r   s    r   get_view_direction_vectorsr(   ,   r&   r   c                      g)N))r   r   r   )r   r   r   )r   r   r    r*   r   r   get_basis_vectorsr+   3   s    ,r   c                 x   [        [        [        R                  5      n[	        [        [        R                  5      n[        5       n[        5       [        5       [        5       pn[        R                  " XX#XEXgU5	        [        UR                  5      [        UR                  5      [        UR                  5      4$ N)	r   r   r
   glGetDoublevr   r   gluUnProjectfloatvalue	xyzr   pwmxmymzs	            r   screen_to_modelr;   7   sy    3#3#34Ah(8(89AAXZBBQ1rr2?E"((OU288_<<r   c                 x   [        [        [        R                  5      n[	        [        [        R                  5      n[        5       n[        5       [        5       [        5       pn[        R                  " XX#XEXgU5	        [        UR                  5      [        UR                  5      [        UR                  5      4$ r-   )	r   r   r
   r.   r   r   
gluProjectr0   r1   r2   s	            r   model_to_screenr>   @   sw    3#3#34Ah(8(89AAXZBBNN1qRR0?E"((OU288_<<r   c                 V   ^ ^ [        U U4S j[        [        T 5      5       5       5      $ )Nc              3   :   >#    U  H  nTU   TU   -
  v   M     g 7fr-   r*   ).0iabs     r   	<genexpr>vec_subs.<locals>.<genexpr>J   s     4m1!m   )tuplerangelen)rC   rD   s   ``r   vec_subsrK   I   s    4eCFm444r   c                      [        5       n SU S'   SU S'   SU S'   SU S'   SU S'   SU S'   SU S'   SU S'   SU S	'   [        R                  " U 5        g
)z
Removes rotational components of
current matrix so that primitives
are always drawn facing the viewer.

|1|0|0|x|
|0|1|0|x|
|0|0|1|x| (x means left unchanged)
|x|x|x|x|
r   r   r!   r   r   r"   r   r    r#   N)r   r
   glLoadMatrixfr   s    r   billboard_matrixrN   M   sk     	AAaDAaDAaDAaDAaDAaDAaDAaDAbEar   c                      [         R                  [         R                  S/[         R                  [         R                  S/[         R                  [         R                  S//$ )Nr   )r   InfinityNegativeInfinityr*   r   r   create_boundsrR   f   sH    ZZ++Q/ZZ++Q/ZZ++Q/1 1r   c                     Uc  g [        S5       H5  n[        X   S   X   /5      X   S'   [        X   S   X   /5      X   S'   M7     g )N   r   r   )rI   minmax)rD   vaxiss      r   update_boundsrY   l   sR    ya!'!*ag./
!'!*ag./
 r   c                     XX-
  -  -   $ r-   r*   )a_mina_maxa_ratios      r   interpolater^   t   s    em,,,r   c                 8    X-
  nX:X  a  SnX -
  [        U5      -  $ )Ng      ?)r0   )r[   r\   a_valuea_ranges       r   rinterpolaterb   x   s$    mG~OuW~--r   c                 H   ^ ^^ [        U UU4S j[        S5       5       5      $ )Nc              3   J   >#    U  H  n[        TU   TU   T5      v   M     g 7fr-   )r^   )rA   rB   color1color2ratios     r   rE   $interpolate_color.<locals>.<genexpr>   s%     L8aVAYq	5998s    #rT   rH   rI   )re   rf   rg   s   ```r   interpolate_colorrj      s    L58LLLr   c                     X-
  U-  $ r-   r*   )rW   v_minv_lens      r   scale_valuern      s    Ir   c                 x    [        U 5      [        U 5      p!X!-
  nU  Vs/ s H  n[        XAU5      PM     sn$ s  snf r-   )rU   rV   rn   )flistrl   v_maxrm   fs        r   scale_value_listrs      s7    u:s5z5ME278%QK%(%888s   7c                    XpT[        X-
  5      S:  a  / $  [        [        X-
  5      5        X:  a  [        S5      eX-  nX!U-  -
  n[        Xr-
  5      S:  a  SnX-  n X-  n[        X-
  U-  5      nU(       a  X:  a  [        XEUS-  5      $ U /[        SUS-   5       V	s/ s H	  oX-  -   PM     sn	-   U/-   $ ! [        [        4 a    / s $ f = fs  sn	f )NgMbP?z"r_min cannot be greater than r_maxg        r!   r   )absrI   int	TypeErrorOverflowError
ValueErrorstrided_range)
r_minr_maxstride	max_stepso_mino_maxr_min_sr_max_sr_stepses
             r   rz   rz      s    5
5=E!	c%- ! }=>>~G'G
7u$	E	E5=&()GW(U6!8447a10EF0E1ah&0EFF%PP }% 	 Gs   B: !C:CCc                 8   [        U [        5      (       d  g 0 nU R                  S5       Hl  nUR                  S5      n[        U5      S:X  a  US   SpTO"[        U5      S:X  a  Uu  pEO[	        SU -  5      eUR                  5       XR                  5       '   Mn     U$ )N;=r   r    r!   z%Plot option string '%s' is malformed.)
isinstancestrsplitrJ   ry   strip)soptionstokenpiecesoptionr1   s         r   parse_option_stringr      s    aGS!v;!"1IrE[A"MFEDJKK"'++-  Nr   c                 D   ^ ^ [        U U4S j[        S5       5       5      $ )Nc              3   :   >#    U  H  nTU   TU   -  v   M     g 7fr-   r*   rA   rB   v1v2s     r   rE   dot_product.<locals>.<genexpr>   s     -Hqr!uRU{HrG   rT   sumrI   r   r   s   ``r   dot_productr      s    -E!H---r   c                 D   ^ ^ [        U U4S j[        S5       5       5      $ )Nc              3   :   >#    U  H  nTU   TU   -
  v   M     g 7fr-   r*   r   s     r   rE   vec_sub.<locals>.<genexpr>   s     11AArG   rT   ri   r   s   ``r   vec_subr      s    1a111r   c                 F   ^  [        U 4S j[        S5       5       5      S-  $ )Nc              3   4   >#    U  H  nTU   S -  v   M     g7f)r!   Nr*   )rA   rB   rW   s     r   rE   vec_mag.<locals>.<genexpr>   s     )1qtQws   rT   g      ?r   )rW   s   `r   vec_magr      s    )a))C00r   )2   )!ctypesr   r   r   ImportError	pyglet.glglr
   
sympy.corer   glGetFloatvr   r   r   r%   r(   r+   r;   r>   rK   rN   rR   rY   r^   rb   rj   rn   rs   rz   r   r   r   r   r*   r   r   <module>r      s   	//   !(S__  &-#// !!-==5210-.M9Q, .21q  		s   
A9 9BB