
    g!                         d dl mZ d dl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  G d de          Z G d	 d
e          Z G d de          Z G d de          ZdS )    N)font)S)
PlotObject)billboard_matrixdot_productget_direction_vectorsstrided_rangevec_magvec_sub)is_sequencec                   ^    e Zd ZddddddddddddddddZd	 Zd
 Zd Zd Zd Zd Z	d Z
dS )PlotAxes Ng      ?皙?Arial   )stylenoneframeboxordinatestridevisibleoverlaycolored
label_axeslabel_tickstick_length	font_face	font_sizec                   |                                 }|d}|d}|d}|d}|dv rt          |           | _        n7|dv rt          |           | _        n|dv rd | _        nt	          d|z            	 t          |          }n# t          $ r Y nw xY wt          |          r*t          |          d	k    rt	          d
          || _	        n
|||g| _	        t          |          | _        g d| _        |                                  d } ||d          | _         ||d          | _         ||	d          | _         ||
d          | _         ||d          | _        || _        || _        |                                  d S )Nr   r   r   r   )r   r   )r   r   )r   zUnrecognized axes style %s.   zlength should be equal to 3r   r   r   c                 *    | dv r| S | dv rdS | dv rdS |S )N)TF)fFfalseFalseF)tTtrueTrueT )inputdefaults     _/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/plotting/pygletplot/plot_axes.pyflexible_booleanz+PlotAxes.__init__.<locals>.flexible_boolean;   s9    %%444u222tN    TF)lowerPlotAxesOrdinate_render_objectPlotAxesFrame
ValueErroreval	TypeErrorr   len_stridefloat_tick_length_originreset_bounding_boxr   _overlay_colored_label_axes_label_ticksr   r    reset_resources)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r    argskwargsr1   s                     r0   __init__zPlotAxes.__init__   s     EE?EE$$$"24"8"8D&&&"/"5"5Dh"&D;FGGG	&\\FF 	 	 	D	v 	46{{a !>???!DLL"FF3DL!+.. !yy!!!	 	 	 ('55(($77((%88++J>>,,[$?? #" 	s   6B 
BBc                     d | _         d S N)
label_fontrE   s    r0   rD   zPlotAxes.reset_resourcesS   s    r2   c                 :    d d gd d gd d gg| _         g g g g| _        d S rJ   )_bounding_box_axis_ticksrL   s    r0   r?   zPlotAxes.reset_bounding_boxV   s1    #TlT4L4,GB<r2   c                 *   | j         rt          j        t          j        t          j        z  t          j        z             | j        rt          j        t          j                   | j         	                                 t          j
                     d S d S rJ   )r5   pglglPushAttribGL_ENABLE_BITGL_POLYGON_BITGL_DEPTH_BUFFER_BITr@   	glDisableGL_DEPTH_TESTdrawglPopAttribrL   s    r0   rX   zPlotAxes.drawZ   s     	S.1CCcF]]^^^} 1c/000$$&&&O	 	r2   c                 N   | j         }|}t          d          D ]
}t          ||         d                   t          j        u s't          ||         d                   t          j        u rR||         d         ||         d         n(t          ||         d         ||         d         g          ||         d<   ||         d         ||         d         n(t          ||         d         ||         d         g          ||         d<   || _         |                     |           d S )Nr"   r      )rN   rangeabsr   Infinityminmax_recalculate_axis_ticks)rE   child_boundsbcis        r0   adjust_boundszPlotAxes.adjust_boundsb   s	   q 	, 	,A1Q47||qz))S1a\\QZ-G-G!"1aad1ggc1Q47AaDG:L6M6MAaDG!"1aad1ggc1Q47AaDG:L6M6MAaDG!"D((++++	, 	,r2   c                     | j         }||         d         ||         d         g | j        |<   d S t          ||         d         ||         d         | j        |                   | j        |<   d S )Nr   r[   )rN   rO   r	   r;   )rE   axisrc   s      r0   ra   z PlotAxes._recalculate_axis_ticksm   su    T71:4!3%'DT"""%21T71:qwqz37<3E&G &GDT"""r2   c                      | j          | _         d S rJ   )r   rL   s    r0   toggle_visiblezPlotAxes.toggle_visibleu   s    <'r2   c                      | j          | _         d S rJ   )rA   rL   s    r0   toggle_colorszPlotAxes.toggle_colorsx   s     M)r2   )__name__
__module____qualname__rH   rD   r?   rX   rf   ra   rj   rl   r-   r2   r0   r   r      s         4tB22D D D D DL  ( ( (  	, 	, 	,G G G( ( (* * * * *r2   r   c                   4    e Zd Zd Zd Zd Zd Zd	dZd ZdS )
PlotAxesBasec                     || _         d S rJ   )_p)rE   parent_axess     r0   rH   zPlotAxesBase.__init__~   s    r2   c                 $   g dg dg dfg dg dg dfg| j         j                 }|                     |           |                     d|d                    |                     d|d                    |                     d|d                    d S )N)g?r   333333?)?rv         ?)rx         ?rx   )rv   rv   rw      r[   r   )rs   rA   draw_background	draw_axisrE   colors     r0   rX   zPlotAxesBase.draw   s    !//???OOOD!//???OOODFFJgFVXU###q%(###q%(###q%(#####r2   c                     d S rJ   r-   r}   s     r0   r{   zPlotAxesBase.draw_background       r2   c                     t                      rJ   NotImplementedErrorrE   rh   r~   s      r0   r|   zPlotAxesBase.draw_axis       !###r2   ry   c                 r   t          |          dk    r|d         |d         |d         df}| j        j        6t          j        | j        j        | j        j        dd          | j        _        t          j        | j        j        ||t          j        j        t          j        j	        	          }t          j                     t          j        |  t                       d
|z  }t          j        |||           t          j        dddd           |                                 t          j                     d S )Nr"   r   r[   rz   ry   TF)bolditalic)r~   valignhaligng{Gzt?)r:   rs   rK   r   loadr   r    TextBASELINECENTERrQ   glPushMatrixglTranslatefr   glScalef	glColor4frX   glPopMatrix)rE   textpositionr~   scalelabelscale_factors          r0   	draw_textzPlotAxesBase.draw_text   s   u::??1XuQxq37E7%!%47+<+/7+<04U"D "D "DDG 	$',d %!%!3!%!13 3 3
 	(##u}\<>>>aAq!!!

r2   c                    | j         j        }t          j        t          j                   t          j        |  t          j        |d         d         |d         z   |d         d         |d         z   |d         d         |d         z              t          j        |d         d         |d         z   |d         d         |d         z   |d         d         |d         z              t          j                     d S )Nr   r[   rz   )rs   r>   rQ   glBeginGL_LINES	glColor3f
glVertex3fglEnd)rE   vr~   os       r0   	draw_linezPlotAxesBase.draw_line   s    GOCL!!!uqtAw1~qtAw1~qtAw1~FFFqtAw1~qtAw1~qtAw1~FFF	r2   N)ry   )	rm   rn   ro   rH   rX   r{   r|   r   r   r-   r2   r0   rq   rq   |   ss          $ $ $  $ $ $   .    r2   rq   c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )r4   c                 J    t                                          |           d S rJ   superrH   rE   rt   	__class__s     r0   rH   zPlotAxesOrdinate.__init__   !    %%%%%r2   c                 8   | j         j        |         }| j         j        dz  }t          |          dk     rd S g dg dg}|d         |d         c|d         |<   |d         |<   t	          |d         |d                   }t                      d         }t          t          ||                    }|t          |          z  }t          |dz
            dk    }	|D ]}
| 	                    ||||
|	           | 
                    |||d         |d         |	           d S )	Ng       @rz   r#   r   r[   ry   g{Gz?)rs   rO   r=   r:   r   r   r]   r   r
   draw_tick_linedraw_axis_line)rE   rh   r~   ticksradius
axis_linesaxis_vectorpos_zdlabels_visibleticks              r0   r|   zPlotAxesOrdinate.draw_axis   s4   #D)%+u::>>F  ii+
388U2Y0
1dZ]40jmZ];; &''*K//00$$$ QW,  	K 	KDeVT>JJJJ 	D%q59nMMMMMr2   c                     g dg dg}||c|d         |<   |d         |<   |                      ||           |r|                     |||           d S d S )Nr#   r   r[   )r   draw_axis_line_labels)rE   rh   r~   a_mina_maxr   	axis_lines          r0   r   zPlotAxesOrdinate.draw_axis_line   sv    YY			*	16.	!TIaL.y%((( 	?&&tUI>>>>>	? 	?r2   c                 N   | j         j        sd S |d         d d          |d         d d          g}|d         |xx         dz  cc<   |d         |xx         dz  cc<   g d|         }|                     d|z   |d         |           |                     d|z   |d         |           d S )Nr   r[   rv   )XYZ-+)rs   rB   r   )rE   rh   r~   r   axis_labelsa_strs         r0   r   z&PlotAxesOrdinate.draw_axis_line_labels   s    w" 	F |BBB'1bbb)9:At#At#%sU{KNE:::sU{KNE:::::r2   c                     dddd|         }g dg dg}|x|d         |<   |d         |<   | |c|d         |<   |d         |<   |                      ||           |r|                     ||||           d S d S )Nr[   r   r   r[   rz   r#   )r   draw_tick_line_label)rE   rh   r~   r   r   r   	tick_axis	tick_lines           r0   r   zPlotAxesOrdinate.draw_tick_line   s    aA&&t,	YY			*	266	!TYq\$/<B7F8	!Y1i!8y%((( 	A%%dE64@@@@@	A 	Ar2   c                     | j         j        sd S g d}|||<   g d|         |z  dz  |dddd|         <   |                     t          |          ||d           d S )	Nr#   )r   r[   r[   g      @r[   r   r   rx   )r   )rs   rB   r   str)rE   rh   r~   r   r   tick_label_vectors         r0   r   z%PlotAxesOrdinate.draw_tick_line_label   s    w" 	F%II"&$6@jj77 7!aA!,,T23s4yy"3U#FFFFFr2   )
rm   rn   ro   rH   r|   r   r   r   r   __classcell__r   s   @r0   r4   r4      s        & & & & &N N N4? ? ?; ; ;A A AG G G G G G Gr2   r4   c                   *     e Zd Z fdZd Zd Z xZS )r6   c                 J    t                                          |           d S rJ   r   r   s     r0   rH   zPlotAxesFrame.__init__   r   r2   c                     d S rJ   r-   r}   s     r0   r{   zPlotAxesFrame.draw_background   r   r2   c                     t                      rJ   r   r   s      r0   r|   zPlotAxesFrame.draw_axis   r   r2   )rm   rn   ro   rH   r{   r|   r   r   s   @r0   r6   r6      sV        & & & & &  $ $ $ $ $ $ $r2   r6   )	pyglet.glglrQ   pygletr   
sympy.corer   %sympy.plotting.pygletplot.plot_objectr   sympy.plotting.pygletplot.utilr   r   r   r	   r
   r   sympy.utilities.iterablesr   r   rq   r4   r6   r-   r2   r0   <module>r      s|                     < < < < < <? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 1 1 1 1 1n* n* n* n* n*z n* n* n*b0 0 0 0 0: 0 0 0f@G @G @G @G @G| @G @G @GF	$ 	$ 	$ 	$ 	$L 	$ 	$ 	$ 	$ 	$r2   