
    h                        d dl Z ddlmZ ddlmZ ddlmZ ddlm	Z
  e j                    dd	            Z e j                    dd
            Z	dde j        defdZde j        fdZdde j        defdZdde j        defdZdS )    N   )xyz2key)key2xyz)encode)decode   zc                 R   |dv sJ |dk    rt          | |          }ng|dk    rt          | d d g df         |          }nC|dk    rt          | |          }n+|dk    rt          | d d g df         |          }nt          ||                                }||dz  z  |z  }|S )	N>   r	   hilbertz-transhilbert-transr	   depthr   )r   r      r   r      )z_order_encodehilbert_encodeNotImplementedErrorlong)
grid_coordbatchr   ordercodes        X/data/cameron/tmprepos/2unirig/src/model/pointcept/models/utils/serialization/default.pyr   r      s    @@@@@||j666	)		jIII6eDDD	)		j666	/	!	!jIII6eDDD!!

	!D(K    c                     |dv sJ | |dz  z	  }| d|dz  z  dz
  z  } |dk    rt          | |          }n|dk    rt          | |          }nt          ||fS )N>   r	   r   r   r   r	   r   r   )z_order_decodehilbert_decoder   )r   r   r   r   r   s        r   r   r      s    $$$$$EAIEANa'(D||#D666

	)		#D666

!!ur   r   r   c                     | d d df                                          | d d df                                          | d d df                                          }}}t          |||d |          }|S )Nr   r   r   )br   )r   z_order_encode_)r   r   xyr	   r   s         r   r   r   )   sw    A##%%z!!!Q$'7'<'<'>'>
111a4@P@U@U@W@W!qA1ad%888DKr   r   c                 b    t          | |          \  }}}t          j        |||gd          }|S )Nr   )dim)z_order_decode_torchstack)r   r   r"   r#   r	   r   s         r   r   r   0   s:    d%000GAq!aAYB///Jr   c                 &    t          | d|          S Nr   )num_dimsnum_bits)hilbert_encode_)r   r   s     r   r   r   6   s    :EBBBBr   c                 &    t          | d|          S r+   )hilbert_decode_)r   r   s     r   r   r   :   s    4!e<<<<r   )Nr   r	   )r   r	   )r   )r(   z_orderr   r!   r   r'   r   r   r.   r   r0   inference_modeTensorintr   r   r   r    r   r   <module>r6      sW    / / / / / / / / / / / / . . . . . . . . . . . .    $ 
 
 
 
 u| C        C Cu| CC C C C C= = =c = = = = = =r   