o
    i                     @   s8   d dl mZ d dlmZ d dlmZ G dd deZdS )    N)S)PlotModeBasec                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )PlotSurfaceZperspectivec           	   
   C   s  | j d | _t| j | _| j d | _t| j | _tjtj	dgtjtj	dgtjtj	dgg| _
|  }d| _t| jj| jj | _g }| j
}| jD ]Y}g }| jD ]L}z|||}W n tyf   d }Y nw |d urtdD ]"}t|| d || g|| d< t|| d || g|| d< qo|| |  jd7  _qR|| qKtdD ] }|| d || d  || d< || d dkrd|| d< q|| _| | dd | | dd d S )	Nr      g                 ?   FT)Z	intervalsZ
u_intervallistZfrangeu_setZ
v_intervalv_setr   InfinityNegativeInfinityZboundsZ_get_evaluatorZ_calculating_verts_posfloatZv_lenZ_calculating_verts_lenZeroDivisionErrorrangeminmaxappendvertsZpush_wireframe
draw_verts
push_solid)	selfevaluater   bucolumnv_eZaxis r   u/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sympy/plotting/pygletplot/plot_surface.py_on_calculate_verts   sL   

 "
 zPlotSurface._on_calculate_vertsc                    sj    j r jsd S  fdd} fdd}|d d _ jj j  j j||d _  dd d S )	Nc                    s   t |  _d S )N)r   Z_calculating_cverts_len)nr   r   r   set_work_len7   s   z6PlotSurface._on_calculate_cverts.<locals>.set_work_lenc                      s     j d7  _ d S )Nr   )_calculating_cverts_posr   r"   r   r   inc_work_pos:   s   z6PlotSurface._on_calculate_cverts.<locals>.inc_work_posr   r   )Zset_lenZinc_posT)	r   colorr$   Zapply_to_surfacer
   r   cvertsr   r   )r   r#   r%   r   r"   r   _on_calculate_cverts3   s   
z PlotSurface._on_calculate_cvertsc                 C   s8   | j | | }| |d |d |d | j| | j| S )Nr   r   r   )r   r&   r
   r   )r   r   r   Zvertr   r   r   calculate_one_cvertE   s   zPlotSurface.calculate_one_cvertc                    s    fdd}|S )Nc                     s  t dt jD ]y} ttj t t jD ]e} j| d  | } j|  | }|d u s1|d u r<t  ttj qr[ j	| d  | } j	|  | }|d u rTd}|d u rZd}nrc j
 }}n j }}tj|  tj|  tj|  tj|  qt  qd S )Nr   )r   r   r   )r   lenr
   pglZglBeginZGL_QUAD_STRIPr   r   ZglEndr'   Zdefault_solid_colorZdefault_wireframe_colorZ	glColor3fZ
glVertex3f)r   r   paZpbcacbr   
use_cvertsuse_solid_colorr   r   fK   s4   




z!PlotSurface.draw_verts.<locals>.fr   )r   r0   r1   r2   r   r/   r   r   J   s   zPlotSurface.draw_vertsN)__name__
__module____qualname__Zdefault_rot_presetr    r(   r)   r   r   r   r   r   r      s    (r   )Z	pyglet.glglr+   Z
sympy.corer   Z(sympy.plotting.pygletplot.plot_mode_baser   r   r   r   r   r   <module>   s    