
    Ed                         	 d dl mZmZmZ n# e$ r Y nw xY wd dlmZ d dlm	Z	 eej
        fdZeej
        fdZd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Z dS )    )c_floatc_intc_doubleN)Sc                 L     | dz              } |t           j        |           |S z/
    Returns the current modelview matrix.
       )pglGL_MODELVIEW_MATRIX
array_typeglGetMethodms      >lib/python3.11/site-packages/sympy/plotting/pygletplot/util.pyget_model_matrixr   
   s/     
BAK'+++H    c                 L     | dz              } |t           j        |           |S r   )r
   GL_PROJECTION_MATRIXr   s      r   get_projection_matrixr      s/     
BAK(!,,,Hr   c                  f    t          dz              } t          j        t          j        |            | S )z'
    Returns the current viewport.
       )r   r
   glGetIntegervGL_VIEWPORTr   s    r   get_viewportr      s+     
qAcoq)))Hr   c                      t                      } | d         | d         | d         f| d         | d         | d         f| d         | d         | d	         ffS )
Nr   r            	         
   r   r   s    r   get_direction_vectorsr%   %   Y    AqT1Q41qT1Q41qT1Q42! !r   c                      t                      } | d         | d         | d         f| d         | d         | d         f| d         | d         | d	         ffS )
Nr   r   r!   r   r   r"   r   r    r#   r$   r   s    r   get_view_direction_vectorsr(   ,   r&   r   c                      dS )N))r   r   r   )r   r   r   )r   r   r    r*   r   r   get_basis_vectorsr+   3   s    ,,r   c                    t          t          t          j                  }t	          t          t          j                  }t                      }t                      t                      t                      }}}t          j        | ||||||||	  	         t          |j                  t          |j                  t          |j                  fS N)	r   r   r
   glGetDoublevr   r   gluUnProjectfloatvalue	xyzr   pwmxmymzs	            r   screen_to_modelr;   7   s    3#344Ah(899AAXZZBBQ1aAr2r222??E"(OOU28__<<r   c                    t          t          t          j                  }t	          t          t          j                  }t                      }t                      t                      t                      }}}t          j        | ||||||||	  	         t          |j                  t          |j                  t          |j                  fS r-   )	r   r   r
   r.   r   r   
gluProjectr0   r1   r2   s	            r   model_to_screenr>   @   s    3#344Ah(899AAXZZBBN1aAq!RR000??E"(OOU28__<<r   c                 r     t           fdt          t                               D                       S )Nc              3   :   K   | ]}|         |         z
  V  d S r-   r*   ).0iabs     r   	<genexpr>zvec_subs.<locals>.<genexpr>J   s/      441!444444r   )tuplerangelen)rC   rD   s   ``r   vec_subsrI   I   s6    44444eCFFmm444444r   c                      t                      } d| d<   d| d<   d| d<   d| d<   d| d<   d| d<   d| d<   d| d<   d| d	<   t          j        |            d
S )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_matrixrL   M   sw     	AAaDAaDAaDAaDAaDAaDAaDAaDAbEar   c                      t           j        t           j        dgt           j        t           j        dgt           j        t           j        dggS )Nr   )r   InfinityNegativeInfinityr*   r   r   create_boundsrP   f   s9    Z+Q/Z+Q/Z+Q/1 1r   c                     |d S t          d          D ]Z}t          | |         d         ||         g          | |         d<   t          | |         d         ||         g          | |         d<   [d S )N   r   r   )rG   minmax)rD   vaxiss      r   update_boundsrW   l   s|     a 0 0!D'!*ag.//$
!D'!*ag.//$

0 0r   c                     | ||| z
  z  z   S r-   r*   )a_mina_maxa_ratios      r   interpolater\   t   s    7eem,,,r   c                 F    || z
  }|| k    rd}|| z
  t          |          z  S )Ng      ?)r0   )rY   rZ   a_valuea_ranges       r   rinterpolater`   x   s1    emG~ eOuW~~--r   c                 \     t           fdt          d          D                       S )Nc              3   R   K   | ]!}t          |         |                   V  "d S r-   )r\   )rA   rB   color1color2ratios     r   rE   z$interpolate_color.<locals>.<genexpr>   s7      LLaVAYq	599LLLLLLr   rR   rF   rG   )rc   rd   re   s   ```r   interpolate_colorrg      s4    LLLLLL588LLLLLLr   c                     | |z
  |z  S r-   r*   )rU   v_minv_lens      r   scale_valuerk      s    Ir   c                     t          |           t          |           c}|z
  t          fd| D                       S )Nc              3   :   K   | ]}t          |          V  d S r-   )rk   )rA   frj   ri   s     r   rE   z#scale_value_list.<locals>.<genexpr>   s/      <<Aue,,<<<<<<r   )rS   rT   list)flistv_maxrj   ri   s     @@r   scale_value_listrr      sJ    u::s5zzLE5EME<<<<<e<<<<<<r   2   c           	           |}}t           |z
            dk     rg S 	 t          t           |z
                       n# t          t          f$ r g cY S w xY w |k    rt          d           z  }|z  z
  }t          |z
            dk     rd} |z   ||z  }t          | z
  z            }|r||k    rt          ||dz            S  gt           fdt          d|dz             D                       z   |gz   S )NgMbP?z"r_min cannot be greater than r_maxg        r!   c              3   (   K   | ]}|z  z   V  d S r-   r*   )rA   er_minstrides     r   rE   z strided_range.<locals>.<genexpr>   s,      JJq%!F(*JJJJJJr   r   )absrG   int	TypeErrorOverflowError
ValueErrorstrided_rangero   )	rw   r_maxrx   	max_stepso_mino_maxr_min_sr_max_sr_stepss	   ` `      r   r~   r~      s]   %5E
55=E! 	c%%-  !!!!}%   			u} ?=>>>v~G'G
7Vu$ 	WE	WE55=&())G 5Wy( 5UE6!84447TJJJJJE!Wq[4I4IJJJJJJeWTTs   A   AAc                 v   t          | t                    sd S i }|                     d          D ]}|                    d          }t          |          dk    r|d         d}}n+t          |          dk    r|\  }}nt	          d| z            |                                ||                                <   |S )N;=r   r    r!   z%Plot option string '%s' is malformed.)
isinstancestrsplitrH   r}   strip)soptionstokenpiecesoptionr1   s         r   parse_option_stringr      s    a tG 0 0S!!v;;! 	L"1IrEFF[[A 	L"MFEEDJKKK"'++--Nr   c                 X     t           fdt          d          D                       S )Nc              3   :   K   | ]}|         |         z  V  d S r-   r*   rA   rB   v1v2s     r   rE   zdot_product.<locals>.<genexpr>   s/      --qr!uRU{------r   rR   sumrG   r   r   s   ``r   dot_productr      s0    -----E!HH------r   c                 X     t           fdt          d          D                       S )Nc              3   :   K   | ]}|         |         z
  V  d S r-   r*   r   s     r   rE   zvec_sub.<locals>.<genexpr>   s/      111AA111111r   rR   rf   r   s   ``r   vec_subr      s0    11111a111111r   c                 Z     t           fdt          d          D                       dz  S )Nc              3   .   K   | ]}|         d z  V  dS )r!   Nr*   )rA   rB   rU   s     r   rE   zvec_mag.<locals>.<genexpr>   s+      ))1qtQw))))))r   rR   g      ?r   )rU   s   `r   vec_magr      s1    ))))a)))))C00r   )rs   )!ctypesr   r   r   ImportError	pyglet.glglr
   
sympy.corer   glGetFloatvr   r   r   r%   r(   r+   r;   r>   rI   rL   rP   rW   r\   r`   rg   rk   rr   r~   r   r   r   r   r*   r   r   <module>r      s  	/////////// 	 	 	D	             !(S_     &-#/      ! ! !! ! !- - -= = == = =5 5 5  21 1 10 0 0- - -. . .M M M  = = =U U U U,   . . .2 2 21 1 1 1 1s   
 