
    lj:                    N   U d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ erd dlmZ d dlmZ d dl
mZmZ dZg d	Zeeeeeeeeeeeeeeeeef         Zd
ed<   d3dZdddedz   dfd4dZ	 	 	 	 	 d5d4dZd6d7d"Zd8d9d#Zd8d:d$Zd8d;d%Z	 d6d<d(Zd6d7d)Zd=d>d,Z 	 	 	 	 d?d@d2Z!dS )A    )annotations)TYPE_CHECKINGN)config)
ManimFloat)	TypeAlias)MatrixMNPoint3D   )matrix_to_shader_inputorthographic_projection_matrixperspective_projection_matrixtranslation_matrixx_rotation_matrixy_rotation_matrixz_rotation_matrixrotate_in_place_matrixrotation_matrixscale_matrixview_matrixr   FlattenedMatrix4x4matrixr   returnc                N    t          | j                                                  S N)tupleTravel)r   s    M/home/agentuser/manim-venv/lib/python3.11/site-packages/manim/utils/opengl.pyr   r   7   s    !!"""       Twidthfloat | Noneheightnearfloatfarformat_boolMatrixMN | FlattenedMatrix4x4c           
         | t           d         } |t           d         }t          j        d| z  dddgdd|z  ddgddd||z
  z  ||z    ||z
  z  gg dg          }|rt          |          S |S )Nframe_widthframe_height   r   r   r   r   r    r   nparrayr   r!   r#   r$   r&   r'   projection_matrixs         r   r   r   ;   s     }}%~'Y1a F
Aq!2t$d
msTz&BCLL		
   !%&7888  r   r-   2   c           
         | t           d         dz  } |t           d         dz  }t          j        d|z  | z  dddgdd|z  |z  ddgdd||z   ||z
  z  d|z  |z  ||z
  z  gg dg          }|rt          |          S |S )Nr+      r,   r-   r   )r   r   r   r0   r3   s         r   r   r   T   s     }}%)~'!+Xq!Q'D6!1a(C$J4#:.S4D3J0OPMM		
   !%&7888  r   xyzc                \    t          j        ddd| gddd|gddd|gg dgt                    S )Nr    r   r/   dtyper1   r2   r   r9   r:   r;   s      r   r   r   m   sM    81aL1aL1aLLL		
    r   c           	         t          j        g ddt          j        |           t          j        |            dgdt          j        |           t          j        |           dgg dg          S )N)r    r   r   r   r   r/   r1   r2   cossin)r9   s    r   r   r   y   sc    8LLq		BF1II:q)q		26!99a(LL		
  r   c           	         t          j        t          j        |           dt          j        |           dgg dt          j        |            dt          j        |           dgg dg          S )Nr   )r   r    r   r   r/   rB   )r:   s    r   r   r      sc    8VAYY26!99a(LLfQiiZBF1IIq)LL		
  r   c                    t          j        t          j        |           t          j        |            ddgt          j        |           t          j        |           ddgg dg dg          S )Nr   )r   r   r    r   r/   rB   )r;   s    r   r   r      sc    8VAYY
Aq)VAYYq		1a(LLLL		
  r   initial_positionr	   c           
         t          j        t          |   t          j        t          |||          t          |                      S r   )r1   matmulr   r   )rG   r9   r:   r;   s       r   r   r      sK     9--.
	Aq!$$ 01	
 	
  r   c                    t          j        t          j        t          |           t          |                    t	          |                    S r   )r1   rI   r   r   r   r@   s      r   r   r      sB    9
	#A&&(9!(<(<==!  r   scale_factornpt.NDArrayc                \    t          j        | dddgd| ddgdd| dgg dgt                    S )Nr   r/   r=   r?   )rK   s    r   r   r      sP    81a#a#<#LL		
    r   translationPoint3D | None
x_rotation
y_rotation
z_rotationc           
     P   | "t          j        ddt          dz  dz   g          } t          j        t          j        t	          |  t          |||                    t                                }t          t          j	        |          j
                                                  S )Nr   r-   r    r@   )r1   r2   depthrI   r   r   r   r   linalginvr   r   )rN   rP   rQ   rR   model_matrixs        r   r   r      s     h1eai!m4559
	,jJ*EEE	
 	
 	 L L))+1133444r   )r   r   r   r   )r!   r"   r#   r"   r$   r%   r&   r%   r'   r(   r   r)   )NNr-   r5   T)r   r   r   )r9   r%   r:   r%   r;   r%   r   r   )r   )r9   r%   r   r   )r:   r%   r   r   )r;   r%   r   r   )
rG   r	   r9   r%   r:   r%   r;   r%   r   r   )r    )rK   r%   r   rL   )Nr   r   r   )
rN   rO   rP   r%   rQ   r%   rR   r%   r   r   )"
__future__r   typingr   numpyr1   numpy.linalgrU   manim._configr   manim.typingr   r   numpy.typingnptr   r	   rT   __all__r   r%   r   __annotations__r   r   r   r   r   r   r   r   r   r   r    r   r   <module>rc      ss   " " " " " " "                                   # # # # # # /      ........ 	   !&																!     (# # # #
 ! ! ! ! !4 ! ! ! ! !2	 	 	 	 	             GH	 	 	 	 	    	 	 	 	 	 #'	5 5 5 5 5 5 5r   