o
    oi                     @   s   d dl mZmZmZmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZ d dlmZmZ g dZG dd deZG d	d
 d
eZG dd deZeZeZdS )    )OptionalTupleUnioncast)DeviceDtypeTensor	as_tensor	normalizerandstack)KORNIA_CHECK)TensorWrapperwrap)batched_dot_productbatched_squared_norm)ScalarVector2Vector3c                       s&   e Zd Zdeddf fddZ  ZS )r   datareturnNc                    s   t  | d S N)super__init__)selfr   	__class__ J/home/ubuntu/.local/lib/python3.10/site-packages/kornia/geometry/vector.pyr      s   zScalar.__init__)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r      s    r   c                       s*  e Zd Zdeddf fddZdefddZdeee	ef dd fd	d
Z
edefddZedefddZedefddZd#ddZdd defddZdefddZe	d$deee	df  dee dedd fddZe		d%deeef deeef d eeef dee dedd fd!d"Z  ZS )&r   vectorr   Nc                    "   t  | t|jd dk d S )N   r   r   r   shaper   r#   r   r   r   r   #      zVector3.__init__c                 C   s   d| j  d| j d| j S )Nx: 
y: z
z: )xyzr   r   r   r   __repr__'   s   zVector3.__repr__idxc                 C      t | j|df S N.)r   r   r   r2   r   r   r   __getitem__*      zVector3.__getitem__c                 C   
   | j d S N).r   r   r0   r   r   r   r-   -      
z	Vector3.xc                 C   r8   N).   r:   r0   r   r   r   r.   1   r;   z	Vector3.yc                 C   r8   )N).   r:   r0   r   r   r   r/   5   r;   z	Vector3.zc                 C      t t| jdddS Nr>   r%   )pdim)r   r
   r   r0   r   r   r   
normalized9      zVector3.normalizedrightc                 C      t t| j|jS r   r   r   r   r   rE   r   r   r   dot<   r7   zVector3.dotc                 C      t t| jS r   r   r   r   r0   r   r   r   squared_norm?      zVector3.squared_normr(   .devicedtypec                 C   (   |d u rd}| t g |dR ||dS )Nr   r&   rN   rO   r   clsr(   rN   rO   r   r   r   randomB   s   zVector3.randomr-   r.   r/   c                 C   s   t t|t|  u ot|u n   t t|ttf t|tr/tt|||f||dtS |tt|tt|f}tt	|dtS NrQ   r%   )
r   type
isinstancer   floatr   r	   r   r   r   )rT   r-   r.   r/   rN   rO   tensorsr   r   r   from_coords^   s   (	
zVector3.from_coords)r   r   NNNNN)r   r    r!   r   r   strr1   r   sliceintr6   propertyr-   r.   r/   rC   r   rI   rL   classmethodr   r   r   r   rU   rY   r[   r"   r   r   r   r   r   "   sP    



r   c                       s   e Zd Zdeddf fddZdefddZdeee	ef dd fd	d
Z
edefddZedefddZd ddZdd defddZdefddZed!deee	df  dededd fddZe	d"deeef deeef dededd f
ddZ  ZS )#r   r#   r   Nc                    r$   )Nr%   r>   r'   r)   r   r   r   r   q   r*   zVector2.__init__c                 C   s   d| j  d| j S )Nr+   r,   )r-   r.   r0   r   r   r   r1   u   rD   zVector2.__repr__r2   c                 C   r3   r4   )r   r   r5   r   r   r   r6   x   r7   zVector2.__getitem__c                 C   r8   r9   r:   r0   r   r   r   r-   {   r;   z	Vector2.xc                 C   r8   r<   r:   r0   r   r   r   r.      r;   z	Vector2.yc                 C   r?   r@   )r   r
   r   r0   r   r   r   rC      rD   zVector2.normalizedrE   c                 C   rF   r   rG   rH   r   r   r   rI      r7   zVector2.dotc                 C   rJ   r   rK   r0   r   r   r   rL      rM   zVector2.squared_normr(   .rN   rO   c                 C   rP   )Nr   r>   rQ   rR   rS   r   r   r   rU      s   zVector2.randomr-   r.   c                 C   sf   t t|t|u  t t|ttf t|tr$tt||f||dtS |tt|f}tt	|dtS rV   )
r   rW   rX   r   rY   r   r	   r   r   r   )rT   r-   r.   rN   rO   rZ   r   r   r   r[      s   
zVector2.from_coords)r   r   r\   r]   )r   r    r!   r   r   r^   r1   r   r_   r`   r6   ra   r-   r.   rC   r   rI   rL   rb   r   r   r   r   rU   rY   r[   r"   r   r   r   r   r   p   s4    
*

r   N)typingr   r   r   r   kornia.corer   r   r   r	   r
   r   r   kornia.core.checkr   kornia.core.tensor_wrapperr   r   kornia.geometry.linalgr   r   __all__r   r   r   Vec3Vec2r   r   r   r   <module>   s   $N/