
    3j                         S SK JrJrJrJr  S SKrS SKJs  Jr	  S SK
Jr  S SKJrJr  S SKJrJr  / SQr " S S\5      r " S	 S
\5      r " S S\5      r\r\rg)    )OptionalTupleUnioncastN)KORNIA_CHECK)TensorWrapper_wrap)batched_dot_productbatched_squared_norm)ScalarVector2Vector3c                   L   ^  \ rS rSrSrS\R                  SS4U 4S jjrSrU =r	$ )r      z*Wrap a tensor representing a scalar value.datareturnNc                 $   > [         TU ]  U5        g N)super__init__)selfr   	__class__s     P/home/wildlama/miniconda3/lib/python3.13/site-packages/kornia/geometry/vector.pyr   Scalar.__init__"   s         )
__name__
__module____qualname____firstlineno____doc__torchTensorr   __static_attributes____classcell__r   s   @r   r   r      s"    4U\\ d  r   r   c                     ^  \ rS rSrSrS\R                  SS4U 4S jjrS\4S jr	S\
\\\R                  4   SS 4S	 jr\S\R                  4S
 j5       r\S\R                  4S j5       r\S\R                  4S j5       rSS jrSS S\4S jrS\4S jr\   SS\\\S4      S\\
\\R2                  4      S\\R4                     SS 4S jj5       r\  SS\
\\R                  4   S\
\\R                  4   S\
\\R                  4   S\\
\\R2                  4      S\\R4                     SS 4S jj5       rSrU =r$ )r   &   z'Wrap a tensor representing a 3D vector.vectorr   Nc                 Z   > [         TU ]  U5        [        UR                  S   S:H  5        g )N   r   r   r   shaper   r)   r   s     r   r   Vector3.__init__)   &     V\\"%*+r   c                 T    SU R                    SU R                   SU R                   3$ )Nx: 
y: z
z: )xyzr   s    r   __repr__Vector3.__repr__-   s'    TVVHE$&&tvvh77r   idxc                 6    [        U R                  US4   5      $ N.)r   r   r   r;   s     r   __getitem__Vector3.__getitem__0       tyyc*++r   c                      U R                   S   $ N).r   r   r8   s    r   r5   	Vector3.x3       yy  r   c                      U R                   S   $ N).   rD   r8   s    r   r6   	Vector3.y7   rF   r   c                      U R                   S   $ )N).   rD   r8   s    r   r7   	Vector3.z;   rF   r   c                 T    [        [        R                  " U R                  SSS95      $ NrL   r+   )pdim)r   F	normalizer   r8   s    r   
normalizedVector3.normalized?       q{{499r:;;r   rightc                 T    [        [        U R                  UR                  5      5      $ r   r   r
   r   r   rW   s     r   dotVector3.dotB       )$))UZZ@AAr   c                 >    [        [        U R                  5      5      $ r   r   r   r   r8   s    r   squared_normVector3.squared_normE       *499566r   r.   .devicedtypec                 L    Uc  SnU " [         R                  " / UQSP7X#S95      $ )Nr   r,   rc   rd   r"   randclsr.   rc   rd   s       r   randomVector3.randomH   ,     =E5::kkqk&FGGr   r5   r6   r7   c                    [        [        U5      [        U5      s=L =(       a    [        U5      L Os  5        [        [        U[        R                  [
        -  5      5        [        U[
        5      (       a%  [        [        R                  " XU4XES9[        5      $ U[        [        R                  U5      [        [        R                  U5      4n[        [        R                  " US5      [        5      $ Nrf   r+   )r   type
isinstancer"   r#   floatr	   	as_tensorr   r   stack)rj   r5   r6   r7   rc   rd   tensorss          r   from_coordsVector3.from_coordsg   s     	T!WQ224723Z5<<%#789a!6OQXYY-.U\\10EtELLZ[G\,]U[["-w77r   r   )r   r   NNNNN) r   r   r   r    r!   r"   r#   r   strr9   r   sliceintr?   propertyr5   r6   r7   rT   r   r[   r`   classmethodr   r   rc   rd   rk   rr   rv   r$   r%   r&   s   @r   r   r   &   s   1,u|| , ,8# 8,uUC%=> ,9 , !5<< ! ! !5<< ! ! !5<< ! !<B Bv B7f 7  ,059'+	Hc3h(H sELL012H $	H
 
H H<  6:'+8$%8 $%8 $%	8
 sELL0128 $8 
8 8r   r   c                   4  ^  \ rS rSrSrS\R                  SS4U 4S jjrS\4S jr	S\
\\\R                  4   SS 4S	 jr\S\R                  4S
 j5       r\S\R                  4S j5       rSS jrSS S\4S jrS\4S jr\   SS\\\S4      S\\
\\R0                  4      S\\R2                     SS 4S jj5       r\  SS\
\\R                  4   S\
\\R                  4   S\\
\\R0                  4      S\\R2                     SS 4
S jj5       rSrU =r$ )r   y   z'Wrap a tensor representing a 2D vector.r)   r   Nc                 Z   > [         TU ]  U5        [        UR                  S   S:H  5        g )Nr+   rL   r-   r/   s     r   r   Vector2.__init__|   r1   r   c                 :    SU R                    SU R                   3$ )Nr3   r4   )r5   r6   r8   s    r   r9   Vector2.__repr__   s    TVVHE$&&**r   r;   c                 6    [        U R                  US4   5      $ r=   )r   r   r>   s     r   r?   Vector2.__getitem__   rA   r   c                      U R                   S   $ rC   rD   r8   s    r   r5   	Vector2.x   rF   r   c                      U R                   S   $ rH   rD   r8   s    r   r6   	Vector2.y   rF   r   c                 T    [        [        R                  " U R                  SSS95      $ rO   )r   rR   rS   r   r8   s    r   rT   Vector2.normalized   rV   r   rW   c                 T    [        [        U R                  UR                  5      5      $ r   rY   rZ   s     r   r[   Vector2.dot   r]   r   c                 >    [        [        U R                  5      5      $ r   r_   r8   s    r   r`   Vector2.squared_norm   rb   r   r.   .rc   rd   c                 L    Uc  SnU " [         R                  " / UQSP7X#S95      $ )Nr   rL   rf   rg   ri   s       r   rk   Vector2.random   rm   r   r5   r6   c                    [        [        U5      [        U5      L 5        [        [        U[        R                  [
        -  5      5        [        U[
        5      (       a$  [        [        R                  " X4X4S9[        5      $ U[        [        R                  U5      4n[        [        R                  " US5      [        5      $ ro   )r   rp   rq   r"   r#   rr   r	   rs   r   r   rt   )rj   r5   r6   rc   rd   ru   s         r   rv   Vector2.from_coords   s     	T!WQ'(Z5<<%#789a!LgVV-.U\\10E,FU[["-w77r   r   )r   r   rx   ry   )r   r   r   r    r!   r"   r#   r   rz   r9   r   r{   r|   r?   r}   r5   r6   rT   r   r[   r`   r~   r   r   rc   rd   rk   rr   rv   r$   r%   r&   s   @r   r   r   y   s   1,u|| , ,+# +,uUC%=> ,9 , !5<< ! ! !5<< ! !<B Bv B7f 7  ,059'+	Hc3h(H sELL012H $	H
 
H H 
 6:'+8$%8 $%8 sELL012	8
 $8 
8 8r   r   )typingr   r   r   r   r"   torch.nn.functionalnn
functionalrR   kornia.core.checkr   kornia.core.tensor_wrapperr   r	   kornia.geometry.linalgr
   r   __all__r   r   r   Vec3Vec2r   r   r   <module>r      sX   $ 0 /    * ; L
*] P8m P8f78m 78t r   