
    /j                    N    d dl mZ d dlZd dlmZ d Zd Z G d de          ZdS )    )annotationsN)OpRunc                   t          |           dk    }t          j        |           }t          j        |           g}t	          |           D ]\  }}|dk    r#d|dz
  z  }d}d}	t          j        ||	|          }
n%d|z  }d|dz  z   }d}	t          j        ||	|          }
|dk    rC|r t          j        |
|df          |z   }|g|}|t          j        |
|ddf          |z   }|g|}|dk    rC|r t          j        |
d|f          |z   }|g|}t          j        |
d|df          |z   }|g|}t          j        |
d|f          |z   }|g|}t          j        ||rdnd          S )	N      g       @gqh ?r      )axis)lennpzerosones	enumeratearangereshapestack)	data_sizealign_cornersis_2d
size_zerosoriginal_griddimdim_sizestepstartstopayzxs                 f/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/reference/ops/op_affine_grid.pyconstruct_original_gridr"      s   	NNaE)$$JWY''(M"9-- 0 0XA(Q,'DED	%t,,AA>DMED	%t,,A!88 4Jq8Q-00:=!" 3] 3Jq8Q"233j@!" 3] 3AXX 4Jq1h-00:=!" 3] 3Jq1h"233j@!" 3] 3
1q(m,,z9A//MM8MU(9::::    c                F   | j         dk    s
J d            |j         dk    r| j        \  }}}|dk    r|dk    sJ |j        \  }}}|dk    sJ t          j        t          j        |||z  |f                    }t          j        | |          }t          j        t          j        |d          ||||f          }	|	                    t          j                  S |j         dk    sJ | j        \  }}
}|
dk    r|dk    sJ |j        \  }}}}|dk    sJ t          j        t          j        |||z  |z  |f                    }t          j        | |          }t          j        t          j        |d          |||||
f          }	|	                    t          j                  S )Nr	   z>theta_n shall have shape of (N, 2, 3) for 2D, (N, 3, 4) for 3Dr   )r   r   r      )ndimshaper   	transposer   matmulastypefloat32)theta_noriginal_grid_homoNdim_2ddim_homoHWoriginal_grid_transposedgrid_ngriddim_3dDs               r!   apply_affine_transformr8   .   s    <1H  !##%m68{{x1}}},+11h1}}}}#%<J)AE8+<==$
 $
  -
 
 z",vy99Aq!V;LMM{{2:&&&"a''''!-AvxQ;;8q===(*0Aq!Xq====!|

%A	8'<==    Y) F :bl69551aF7KLLD;;rz"""r#   c                      e Zd ZddZdS )
AffineGridNc                d    |p| j         }|^}}}t          ||          }t          ||          }|fS N)r   r"   r8   )selfthetasizer   _r   r   r5   s           r!   _runzAffineGrid._runU   s@    %;);1y/	=II%e];;wr#   r<   )__name__
__module____qualname__rA    r#   r!   r:   r:   T   s(             r#   r:   )	
__future__r   numpyr   onnx.reference.op_runr   r"   r8   r:   rE   r#   r!   <module>rI      s    # " " " " "     ' ' ' ' ' ' ;  ;  ;F## ## ##L         r#   