
    sg!                         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y)    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
y)PlotAxes Ng      ?皙?Arial   )stylenoneframeboxordinatestridevisibleoverlaycolored
label_axeslabel_tickstick_length	font_face	font_sizec                   |j                         }|d}|d}|d}|d}|dv rt        |       | _        n/|dv rt        |       | _        n|dv rd | _        nt	        d|z        	 t        |      }t        |      r!t        |      d	k7  rt	        d
      || _	        n
|||g| _	        t        |      | _        g d| _        | j                          d } ||d      | _         ||d      | _         ||	d      | _         ||
d      | _         ||d      | _        || _        || _        | j+                          y # t        $ r Y w xY w)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y| dv ry|S )N)TF)fFfalseFalseF)tTtrueTrueT )inputdefaults     V/var/www/html/venv/lib/python3.12/site-packages/sympy/plotting/pygletplot/plot_axes.pyflexible_booleanz+PlotAxes.__init__.<locals>.flexible_boolean;   s,    %4422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__   sr     EE?EE$$"24"8D&&"/"5Dh"&D;FGG	&\F v6{a !>??!DL"FF3DL!+. !!	 (5($7(%8+J>,[$? #" 	I  		s   &D8 8	EEc                     d | _         y N)
label_fontrE   s    r0   rD   zPlotAxes.reset_resourcesS   s	    r2   c                 8    d d gd d gd d gg| _         g g g g| _        y rJ   )_bounding_box_axis_ticksrL   s    r0   r?   zPlotAxes.reset_bounding_boxV   s+    #TlT4L4,GB<r2   c                 b   | j                   rt        j                  t        j                  t        j                  z  t        j
                  z         | j                  r#t        j                  t        j                         | j                   j                          t        j                          y y 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   so    S..1C1CCcF]F]]^}}c//0$$&OO r2   c                    | j                   }|}t        d      D ]  }t        ||   d         t        j                  u s!t        ||   d         t        j                  u rF||   d   ||   d   nt        ||   d   ||   d   g      ||   d<   ||   d   ||   d   nt        ||   d   ||   d   g      ||   d<   || _         | j                  |        y )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|qzz)S1a\QZZ-G!"1aad1gc1Q47AaDG:L6MAaDG!"1aad1gc1Q47AaDG:L6MAaDG!"D((+	,r2   c                     | j                   }||   d   ||   d   g | j                  |<   y t        ||   d   ||   d   | j                  |         | j                  |<   y )Nr   r[   )rN   rO   r	   r;   )rE   axisrc   s      r0   ra   z PlotAxes._recalculate_axis_ticksm   sn    T71:4!3%'DT"%21T71:qwqz37<<3E&GDT"r2   c                 (    | j                    | _         y rJ   )r   rL   s    r0   toggle_visiblezPlotAxes.toggle_visibleu   s    <<'r2   c                 (    | j                    | _         y rJ   )rA   rL   s    r0   toggle_colorszPlotAxes.toggle_colorsx   s     MM)r2   )__name__
__module____qualname__rH   rD   r?   rX   rf   ra   rj   rl   r-   r2   r0   r   r      sP     4tB22DL(	,G(*r2   r   c                   2    e Zd Zd Zd Zd Zd ZddZd Zy)	PlotAxesBasec                     || _         y 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                     }| j                  |       | j                  d|d          | j                  d|d          | j                  d|d          y )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   su    !?OD!?ODFFJggFVFVXU#q%(#q%(#q%(#r2   c                      y 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   c                    t        |      dk(  r|d   |d   |d   df}| j                  j                  Pt        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       |j!                          t        j"                          y )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77%!%477+<+<+/77+<+<04U"DDGG 		$'',,d %!%!3!3!%!1!1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                          y )Nr   r[   rz   )rs   r>   rQ   glBeginGL_LINES	glColor3f
glVertex3fglEnd)rE   vr~   os       r0   	draw_linezPlotAxesBase.draw_line   s    GGOOCLL!uqtAw1~qtAw1~qtAw1~FqtAw1~qtAw1~qtAw1~F		r2   N)ry   )	rm   rn   ro   rH   rX   r{   r|   r   r   r-   r2   r0   rq   rq   |   s     $$.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                 $    t         |   |       y rJ   superrH   rE   rt   	__class__s     r0   rH   zPlotAxesOrdinate.__init__       %r2   c                    | j                   j                  |   }| j                   j                  dz  }t        |      dk  ry g dg dg}|d   |d   c|d   |<   |d   |<   t	        |d   |d         }t               d   }t        t        ||            }|t        |      z  }t        |dz
        dkD  }	|D ]  }
| j                  ||||
|	        | j                  |||d   |d   |	       y )	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   s
   ##D)%%+u:>  +
388U2Y0
1dZ]40jmZ]; &'*K/0$$ QW,  	KDeVT>J	K 	D%q59nMr2   c                     g dg dg}||c|d   |<   |d   |<   | j                  ||       |r| j                  |||       y y )Nr#   r   r[   )r   draw_axis_line_labels)rE   rh   r~   a_mina_maxr   	axis_lines          r0   r   zPlotAxesOrdinate.draw_axis_line   sR    	*	16.	!TIaL.y%(&&tUI> r2   c                    | j                   j                  sy |d   d d  |d   d d  g}|d   |xx   dz  cc<   |d   |xx   dz  cc<   g d|   }| j                  d|z   |d   |       | j                  d|z   |d   |       y )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    ww"" |B'1b)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   |<   | j                  ||       |r| j                  ||||       y y )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,		*	266	!TYq\$/<B7F8	!Y1i!8y%(%%dE64@ r2   c                     | j                   j                  sy g d}|||<   g d|   |z  dz  |dddd|   <   | j                  t        |      ||d       y )	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   sk    ww""%"&$6@77 7!aA!,T23s4y"3U#Fr2   )
rm   rn   ro   rH   r|   r   r   r   r   __classcell__r   s   @r0   r4   r4      s$    &N4?;AGr2   r4   c                   *     e Zd Z fdZd Zd Z xZS )r6   c                 $    t         |   |       y rJ   r   r   s     r0   rH   zPlotAxesFrame.__init__   r   r2   c                      y 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      s    &$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      sW       <? ? 1n*z n*b0: 0f@G| @GF	$L 	$r2   