
    gX                     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      a/var/www/html/ai-engine/env/lib/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                 2   |                                   || j        vrt          d|z            | j        |         }|                     |d         ddd           |                     |d         ddd           |                     |d         ddd           d S )Nz"%s is not a valid rotation preset.r         )r"   rot_presets
ValueErroreuler_rotate)r   preset_namers      r   set_rot_presetzPlotCamera.set_rot_preset%   s    d...4{BD D D[)!A$1a(((!A$1a(((!A$1a(((((r   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.reset/   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_matrix9   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_projection@   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)      ?rF   rF    r!   s    r   
_get_scalezPlotCamera._get_scaleN   s    }r   c                     t          j                     t          j        | j        | j        | j                    | j        t          j        | j                   t          j        | 	                                  d S r   )
r   r   glTranslatefr/   r0   r.   r   r5   glScalefrH   r!   s    r   apply_transformationzPlotCamera.apply_transformationQ   sf    $'DJ;7779 di(((doo''((((r   rF   c                     t          ||| j        j        | j        j        |          }||                     |           d S d S r   )r   r   r=   r>   r7   )r   p1p2sensitivitymats        r   spherical_rotatezPlotCamera.spherical_rotateX   sN    &r2t{/@'+{'9;H H?  %%%%% ?r   c                     t          j                     t          j        | j                   t          j        ||||           t                      | _        t          j                     d S r   )r   r   r4   r   	glRotatefr   r    )r   anglexyzs        r   r(   zPlotCamera.euler_rotate^   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?   r@   rA   rB   r.   )r   clicksrP   dist_drA   rB   new_dists          r   zoom_relativezPlotCamera.zoom_relativee   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   rJ   r.   r   r   r   r    r/   r0   )r   rV   rW   dxdyrX   ds          r   mouse_translatezPlotCamera.mouse_translatet   s    A
{+++Aq!$$Q'_Q1--q2vq2vq/Q/QRR1Q41Q4r   N)F)rF   )__name__
__module____qualname__rA   rB   r?   r@   r2   r1   r&   r   r"   r+   r   r7   rD   rH   rL   rR   r(   r]   rb   rG   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	   rG   r   r   <module>rj      s          L L L L L LF F F F F F F F F F F Fu u u u u u u u u ur   