
    Rie                     P    d dl mZ d dlmZ d dlmZmZmZm	Z	  G d d          Z
dS )    N)get_spherical_rotatation)get_model_matrixmodel_to_screenscreen_to_modelvec_subsc                       e Zd ZdZdZdZdZdZdZddd	d
dZ	d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S )
PlotCamerag?g     @@g      Y@g     @g      @g     @)r   r   r   )ir   r   )r   Z   r   )r   r   )xyxzyzperspectiveFc                 v    || _         | j         j        j        | _        || _        |                                  d S N)windowplotaxesorthoreset)selfr   r   s      Elib/python3.11/site-packages/sympy/plotting/pygletplot/plot_camera.py__init__zPlotCamera.__init__   s0    K$)	


    c                     t          j                     t          j                     t                      | _        t          j                     d S r   )pglglPushMatrixglLoadIdentityr   _rotglPopMatrixr   s    r   init_rot_matrixzPlotCamera.init_rot_matrix   sA    $&&	r   c                 d   |                                   	 | j        |         }n # t          $ r t          d|z            w xY w	 |                     |d         ddd           |                     |d         ddd           |                     |d         ddd           d S # t          $ r Y d S w xY w)Nz"%s is not a valid rotation preset.r         )r"   rot_presetsAttributeError
ValueErroreuler_rotate)r   preset_namers      r   set_rot_presetzPlotCamera.set_rot_preset%   s    	D -AA 	D 	D 	D4{BD D D	D	adAq!,,,adAq!,,,adAq!,,,,, 	 	 	DD	s   $ AAB! !
B/.B/c                     d| _         d\  | _        | _        d | _        | j        r| j        | _         n| j        | _         |                                  d S )N        )r.   r.   )_dist_x_yr   r   _default_ortho_dist_default_distr"   r!   s    r   r   zPlotCamera.reset3   sV    
#	: 	,1DJJ+DJr   c                     t          j                     t          j        |           t          j        | j                   t                      | _        t          j                     d S r   )r   r   glLoadMatrixfglMultMatrixfr   r   r    )r   rots     r   mult_rot_matrixzPlotCamera.mult_rot_matrix=   sV    #$)$$$$&&	r   c                    t          j        t           j                   t          j                     | j        rYt          j        dt          | j        j                  t          | j        j	                  z  | j
        dz
  | j        dz              nXt          j        dt          | j        j                  t          | j        j	                  z  | j        dz
  | j        dz              t          j        t           j                   d S )Ng333333?g{Gz?g      >@)r   glMatrixModeGL_PROJECTIONr   r   gluPerspectivefloatr   widthheightmin_ortho_distmax_ortho_distmin_distmax_distGL_MODELVIEWr!   s    r   setup_projectionzPlotCamera.setup_projectionD   s    *+++: 	<U4;,--eDK4F.G.GG#d*D,?$,FH H H H eDK-..uT[5G/H/HH$dmd&:< < < 	)*****r   c                     dS )N)      ?rG   rG    r!   s    r   
_get_scalezPlotCamera._get_scaleR   s    }r   c                     t          j                     t          j        | j        | j        | j                    | j        t          j        | j                   t          j        | 	                                  d S r   )
r   r   glTranslatefr0   r1   r/   r   r6   glScalefrI   r!   s    r   apply_transformationzPlotCamera.apply_transformationU   sf    $'DJ;7779 di(((doo''((((r   rG   c                     t          ||| j        j        | j        j        |          }||                     |           d S d S r   )r   r   r>   r?   r8   )r   p1p2sensitivitymats        r   spherical_rotatezPlotCamera.spherical_rotate\   sN    &r2t{/@'+{'9;H H?  %%%%% ?r   c                     t          j                     t          j        | j                   t          j        ||||           t                      | _        t          j                     d S r   )r   r   r5   r   	glRotatefr   r    )r   anglexyzs        r   r)   zPlotCamera.euler_rotateb   s[    $)$$$eQ1%%%$&&	r   c                     | j         r||z  dz  }| j        }| j        }n||z  }| j        }| j        }| j        |z
  }|dk     r||k     s||k    r	|| _        d S d S )Ng      I@r   )r   r@   rA   rB   rC   r/   )r   clicksrQ   dist_drB   rC   new_dists          r   zoom_relativezPlotCamera.zoom_relativei   s    : 	%k)D0F*H*HHk)F}H}HJ'QJJ8h..8h3F3F!DJJJ 4G3Fr   c                    t          j                     t          j                     t          j        dd| j                    t          ddd          d         }t          t          |||          t          ||z
  ||z
  |                    }t          j                     | xj	        |d         z  c_	        | xj
        |d         z  c_
        d S )Nr   r%   r$   )r   r   r   rK   r/   r   r   r   r    r0   r1   )r   rW   rX   dxdyrY   ds          r   mouse_translatezPlotCamera.mouse_translatex   s    A
{+++Aq!$$Q'_Q1--q2vq2vq/Q/QRR1Q41Q4r   N)F)rG   )__name__
__module____qualname__rB   rC   r@   rA   r3   r2   r&   r   r"   r,   r   r8   rE   rI   rM   rS   r)   r^   rc   rH   r   r   r	   r	      s       HHNNM $	 K           + + +  ) ) )& & & &  " " "    r   r	   )	pyglet.glglr   'sympy.plotting.pygletplot.plot_rotationr   sympy.plotting.pygletplot.utilr   r   r   r   r	   rH   r   r   <module>rk      s          L L L L L LF F F F F F F F F F F Fy y y y y y y y y yr   