
    lj                        d Z ddlmZ g dZddlmZmZ ddlZddl	m
Z
mZ ddlmZ erddlmZmZ d	d
lmZ 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S )"z1Utility functions for three-dimensional mobjects.    )annotations))get_3d_vmob_gradient_start_and_end_pointsget_3d_vmob_start_corner_indexget_3d_vmob_end_corner_indexget_3d_vmob_start_cornerget_3d_vmob_end_cornerget_3d_vmob_unit_normal$get_3d_vmob_start_corner_unit_normal"get_3d_vmob_end_corner_unit_normal)TYPE_CHECKINGLiteralN)ORIGINUP)get_unit_normal)Point3DVector3D   )VMobjectvmobr   returntuple[Point3D, Point3D]c                >    t          |           t          |           fS N)r   r   r   s    ^/home/agentuser/manim-venv/lib/python3.11/site-packages/manim/mobject/three_d/three_d_utils.pyr   r      s$     	!&&t$$     
Literal[0]c                    dS Nr    r   s    r   r   r   '   s    1r   intc                <    t          | j                  dz
  dz  dz  S )N         )lenpointsr   s    r   r   r   +   s!    !a'1,,r   r   c                    |                                  dk    rt          j        t                    S | j        t          |                    S r   )get_num_pointsnparrayr   r'   r   r   s    r   r   r   /   s?    !!x;5d;;<<r   c                    |                                  dk    rt          j        t                    S | j        t          |                    S r   )r)   r*   r+   r   r'   r   r   s    r   r   r   5   s?    !!x;3D99::r   point_indexr   c                   |                                  }t          |                                           dk    rt          j        t
                    S |}|dk    r|dz
  n|dz
  }||dz
  k     r|dz   nd}t          | j        |         | j        |         z
  | j        |         | j        |         z
            }t          j        	                    |          dk    rt          j        t
                    S |S )Nr   r%      r   )
r)   r&   get_anchorsr*   r+   r   r   r'   linalgnorm)r   r-   n_pointsiim3ip3unit_normals          r   r	   r	   ;   s    ""$$H
4!##x||Aq55!a%%x!|C1%%!a%%1C!C4;q>)C4;q>) K 
y~~k""a''x||r   c                <    t          | t          |                     S r   )r	   r   r   s    r   r
   r
   K   s    "4)G)M)MNNNr   c                <    t          | t          |                     S r   )r	   r   r   s    r   r   r   O   s    "4)Ed)K)KLLLr   )r   r   r   r   )r   r   r   r   )r   r   r   r!   )r   r   r   r   )r   r   r-   r!   r   r   )r   r   r   r   )__doc__
__future__r   __all__typingr   r   numpyr*   manim.constantsr   r   manim.utils.space_opsr   manim.typingr   r   types.vectorized_mobjectr   r   r   r   r   r   r	   r
   r   r    r   r   <module>rC      sd   7 7 " " " " " "	 	 	 * ) ) ) ) ) ) )     & & & & & & & & 1 1 1 1 1 1 4........333333      - - - -= = = =; ; ; ;    O O O OM M M M M Mr   