
    MZd                     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      G/usr/lib/python3/dist-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                  |   }	 | j	                  |d   ddd       | j	                  |d   ddd       | j	                  |d   ddd       y # t        $ r t        d|z        w xY w# t        $ r Y y 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  -A	adAq!,adAq!,adAq!,  	D4{BD D	D  		s   A( AB (B 	BB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.reset3   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_matrix=   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_projectionD   s    **+::U4;;,,-eDKK4F4F.GG##d*D,?,?$,FH eDKK--.uT[[5G5G/HH$dmmd&:< 	))*r   c                      y)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                  | j                           y r   )
r   r   glTranslatefr0   r1   r/   r   r6   glScalefrI   r!   s    r   apply_transformationzPlotCamera.apply_transformationU   s]    $''DJJ;799 dii(doo'(r   c                     t        ||| j                  j                  | j                  j                  |      }|| j	                  |       y y r   )r   r   r>   r?   r8   )r   p1p2sensitivitymats        r   spherical_rotatezPlotCamera.spherical_rotate\   sD    &r2t{{/@/@'+{{'9'9;H?  % r   c                     t        j                          t        j                  | j                         t        j                  ||||       t               | _        t        j                          y r   )r   r   r5   r   	glRotatefr   r    )r   anglexyzs        r   r)   zPlotCamera.euler_rotateb   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@   rA   rB   rC   r/   )r   clicksrQ   dist_drB   rC   new_dists          r   zoom_relativezPlotCamera.zoom_relativei   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   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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	      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	   rH   r   r   <module>rk      s#     LF Fy yr   