
    sgX                     H    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
y)    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y)
PlotCamerag?g     @@g      Y@g     @g      @g     @)r   r   r   )ir   r   )r   Z   r   )r   r   )xyxzyzperspectivec                     || _         | j                   j                  j                  | _        || _        | j	                          y N)windowplotaxesorthoreset)selfr   r   s      X/var/www/html/venv/lib/python3.12/site-packages/sympy/plotting/pygletplot/plot_camera.py__init__zPlotCamera.__init__   s0    KK$$))	


    c                     t        j                          t        j                          t               | _        t        j
                          y r   )pglglPushMatrixglLoadIdentityr   _rotglPopMatrixr   s    r   init_rot_matrixzPlotCamera.init_rot_matrix   s.    $&	r   c                    | j                          || j                  vrt        d|z        | j                  |   }| j                  |d   ddd       | j                  |d   ddd       | j                  |d   ddd       y )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[)!A$1a(!A$1a(!A$1a(r   c                     d| _         d\  | _        | _        d | _        | j                  r| j
                  | _         n| j                  | _         | j                          y )N        )r-   r-   )_dist_x_yr   r   _default_ortho_dist_default_distr"   r!   s    r   r   zPlotCamera.reset/   sK    
#	::11DJ++DJr   c                     t        j                          t        j                  |       t        j                  | j                         t               | _        t        j                          y r   )r   r   glLoadMatrixfglMultMatrixfr   r   r    )r   rots     r   mult_rot_matrixzPlotCamera.mult_rot_matrix9   sB    #$))$$&	r   c                    t        j                  t         j                         t        j                          | j                  rpt        j
                  dt        | j                  j                        t        | j                  j                        z  | j                  dz
  | j                  dz          not        j
                  dt        | j                  j                        t        | j                  j                        z  | j                  dz
  | j                  dz          t        j                  t         j                         y )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;;,,-eDKK4F4F.GG##d*D,?,?$,FH eDKK--.uT[[5G5G/HH$dmmd&:< 	))*r   c                      y)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                  | j                           y r   )
r   r   glTranslatefr/   r0   r.   r   r5   glScalefrH   r!   s    r   apply_transformationzPlotCamera.apply_transformationQ   s]    $''DJJ;799 dii(doo'(r   c                     t        ||| j                  j                  | j                  j                  |      }|| j	                  |       y y r   )r   r   r=   r>   r7   )r   p1p2sensitivitymats        r   spherical_rotatezPlotCamera.spherical_rotateX   sD    &r2t{{/@/@'+{{'9'9;H?  % r   c                     t        j                          t        j                  | j                         t        j                  ||||       t               | _        t        j                          y r   )r   r   r4   r   	glRotatefr   r    )r   anglexyzs        r   r(   zPlotCamera.euler_rotate^   sF    $))$eQ1%$&	r   c                     | j                   r!||z  dz  }| j                  }| j                  }n||z  }| j                  }| j                  }| j
                  |z
  }|dk  r||k  s||kD  r|| _        y y )Ng      I@r   )r   r?   r@   rA   rB   r.   )r   clicksrP   dist_drA   rB   new_dists          r   zoom_relativezPlotCamera.zoom_relativee   sz    ::k)D0F**H**Hk)F}}H}}HJJ'QJ8h.8h3F!DJ 4Gr   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_
        y )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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	      sr    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F Fu ur   