o
    oÇhX  ã                   @   sB   d dl mZ d dlmZ d dlmZmZmZm	Z	 G dd„ dƒZ
dS )é    N)Úget_spherical_rotatation)Úget_model_matrixÚmodel_to_screenÚscreen_to_modelÚvec_subsc                   @   s–   e Zd ZdZdZdZdZdZdZddd	d
dœZ	d'dd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd(dd„Zd d!„ Zd"d#„ Zd$d%„ Zd&S ))Ú
PlotCameragš™™™™™©?g     @@g      Y@g     ˆÃ@g      @g     À‚@)r   r   r   )i¦ÿÿÿr   r   )r   éZ   r   )éÓÿÿÿr   r	   )ÚxyÚxzÚyzÚperspectiveFc                 C   s$   || _ | j jj| _|| _|  ¡  d S ©N)ÚwindowÚplotÚaxesÚorthoÚreset)Úselfr   r   © r   úy/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/plotting/pygletplot/plot_camera.pyÚ__init__   s   zPlotCamera.__init__c                 C   s$   t  ¡  t  ¡  tƒ | _t  ¡  d S r   )ÚpglÚglPushMatrixÚglLoadIdentityr   Ú_rotÚglPopMatrix©r   r   r   r   Úinit_rot_matrix   s   zPlotCamera.init_rot_matrixc                 C   sh   |   ¡  || jvrtd| ƒ‚| 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Úrr   r   r   Úset_rot_preset%   s   
ÿ
zPlotCamera.set_rot_presetc                 C   s<   d| _ d\| _| _d | _| jr| j| _ n| j| _ |  ¡  d S )Nç        )r'   r'   )Ú_distÚ_xÚ_yr   r   Ú_default_ortho_distÚ_default_distr   r   r   r   r   r   /   s   
zPlotCamera.resetc                 C   s2   t  ¡  t  |¡ t  | j¡ tƒ | _t  ¡  d S r   )r   r   ÚglLoadMatrixfÚglMultMatrixfr   r   r   )r   Úrotr   r   r   Úmult_rot_matrix9   s
   
zPlotCamera.mult_rot_matrixc                 C   sŒ   t  t j¡ t  ¡  | jr&t  dt| jjƒt| jj	ƒ | j
d | jd ¡ nt  dt| jjƒt| jj	ƒ | jd | jd ¡ t  t j¡ d S )Ng333333Ó?g{®Gáz„?g      >@)r   ÚglMatrixModeÚGL_PROJECTIONr   r   ÚgluPerspectiveÚfloatr   ÚwidthÚheightÚmin_ortho_distÚmax_ortho_distÚmin_distÚmax_distÚGL_MODELVIEWr   r   r   r   Úsetup_projection@   s   þþzPlotCamera.setup_projectionc                 C   s   dS )N)ç      ð?r=   r=   r   r   r   r   r   Ú
_get_scaleN   s   zPlotCamera._get_scalec                 C   sF   t  ¡  t  | j| j| j ¡ | jd urt  | j¡ t j|  	¡ Ž  d S r   )
r   r   ÚglTranslatefr)   r*   r(   r   r.   ÚglScalefr>   r   r   r   r   Úapply_transformationQ   s
   
zPlotCamera.apply_transformationr=   c                 C   s2   t ||| jj| jj|ƒ}|d ur|  |¡ d S d S r   )r   r   r5   r6   r0   )r   Úp1Úp2ÚsensitivityÚmatr   r   r   Úspherical_rotateX   s   ÿÿzPlotCamera.spherical_rotatec                 C   s8   t  ¡  t  | j¡ t  ||||¡ tƒ | _t  ¡  d S r   )r   r   r-   r   Ú	glRotatefr   r   )r   ÚangleÚxÚyÚzr   r   r   r#   ^   s
   zPlotCamera.euler_rotatec                 C   sd   | j r|| d }| j}| j}n
|| }| j}| j}| j| }|dk r'||k s+||kr0|| _d S d S )Ng      I@r   )r   r7   r8   r9   r:   r(   )r   ÚclicksrD   Údist_dr9   r:   Únew_distr   r   r   Úzoom_relativee   s   

ÿzPlotCamera.zoom_relativec                 C   s„   t  ¡  t  ¡  t  dd| j ¡ tdddƒd }tt|||ƒt|| || |ƒƒ}t  ¡  |  j	|d 7  _	|  j
|d 7  _
d S )Nr   r    r   )r   r   r   r?   r(   r   r   r   r   r)   r*   )r   rI   rJ   ÚdxÚdyrK   Údr   r   r   Úmouse_translatet   s   "zPlotCamera.mouse_translateN)F)r=   )Ú__name__Ú
__module__Ú__qualname__r9   r:   r7   r8   r,   r+   r!   r   r   r&   r   r0   r<   r>   rA   rF   r#   rO   rS   r   r   r   r   r      s0    ü



r   )Ú	pyglet.glÚglr   Ú'sympy.plotting.pygletplot.plot_rotationr   Úsympy.plotting.pygletplot.utilr   r   r   r   r   r   r   r   r   Ú<module>   s    