
    /j                    ~    d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ d Zd Zd Zd	 Z G d
 de          ZdS )    )annotationsN)Base)expect)apply_affine_transformconstruct_original_gridc                   t          j        t          j        |           t          j        |           t          j        |           t          j        |           t          j        |           t          j        |            t          j        |           t          j        |           t          j        |           g	d                              ddd          }t          j        t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |           t          j        |          t          j        |          g	d                              ddd          }t          j        t          j        |          |||t          j        |          |||t          j        |          g	d                              ddd          }t          j        |t          j        |          t          j        |          t          j        |          |	t          j        |          t          j        |          t          j        |          |
g	d                              ddd          }t          j        t          j        |||g                                        ddd          }||z  |z  |z  }t          j        |d          }t          j	        ||f          }t          j        |d          }|
                    t           j                  S )Naxis      r      r   )npstack	ones_like
zeros_likecossinreshape	transposearrayhstackastypefloat32)angle1angle2offset_xoffset_yoffset_zshear_xshear_yshear_zscale_xscale_yscale_zrot_xrot_yshearscaletranslationrotation_matrixaffine_matrixs                     k/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/affinegrid.pycreate_affine_matrix_3dr/      s    HL  M&!!M&!!M&!!F6NNVF^^OM&!!F6NNF6NN
	
    gb!Q 
 HF6NNM&!!F6NNM&!!L  M&!!VF^^OM&!!F6NN
	
    gb!Q 
 HL!!L!!L!!
	
    gb!Q 
 HM'""M'""M'""M'""M'""M'""
	
    gb!Q 
 ,rx8X(FGGHHPP
Aq K eme+e3Ol?I>>OI<==ML	::M
+++    c                   t          j        t          j        |           t          j        |            t          j        |           t          j        |           gd                              ddd          }t          j        t          j        |          ||t          j        |          gd                              ddd          }t          j        |t          j        |          t          j        |          |gd                              ddd          }	t          j        t          j        ||g                                        ddd          }
||z  |	z  }t          j        |d          }t          j	        ||
f          }t          j        |d          }|
                    t           j                  S )Nr	   r
   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r!   r"   r$   r%   rotr)   r*   r+   r,   r-   s                r.   create_affine_matrix_2dr3   `   s    (	"&.."&.."&..IPR  gb!Q  H	g		",w2G2GHr  gb!Q 
 H	"-(("-*@*@'JQS  gb!Q 
 ,rx8(<==>>FFr1aPPKEkE)Ol?I>>OI<==ML	::M
+++r0   c            	        t          j        t           j        dz  t           j        dz  g          } t          j        ddg          }t          j        ddg          }t          j        ddg          }t          j        d	d
g          }t          j        ddg          }t          j        ddg          }t          | ||||||          S )N   r         @      @ffffff
皙?            ?333333?333333ӿ皙@@?)r   r   pir3   )angler   r   r!   r"   r$   r%   s          r.   create_theta_2drC   t   s    Hbeai+,,Exc
##Hxs$$Hhc{##GhT{##GhSz""GhSz""G"x7GWg  r0   c                    t          j        t           j        dz  t           j        dz  g          } t          j        t           j        dz  t           j        dz  g          }t          j        ddg          }t          j        ddg          }t          j        d	d
g          }t          j        ddg          }t          j        ddg          }t          j        ddg          }t          j        d
dg          }t          j        ddg          }	t          j        ddg          }
t          | |||||||||	|
          S )Nr5   r      r   r6   r7   r8   r9   gr>   r:   r;   r<   r=   gffffff?gɿr?   r@   g      ?)r   r   rA   r/   )r   r   r   r   r    r!   r"   r#   r$   r%   r&   s              r.   create_theta_3drF      s    Xruqy"%!),--FXruqy"%!),--Fxc
##Hxs$$Hxs$$Hhc{##GhT{##GhT{##GhSz""GhSz""GhSz""G"  r0   c                  >    e Zd Zedd            Zedd            ZdS )
AffineGridreturnNonec                 z   t                      } t          |           dddf\  }}}}||f}dD ]}t          j                            dddgdg|	          }t          ||          }t          | |          }	d
}
|dk    r|
dz  }
t          || t          j	        ||||gt          j
                  g|	g|
           d S )Nr      rE   r   r   rH   thetasizegridinputsoutputsalign_cornerstest_affine_grid_2dr   _align_cornersdtyperR   rS   name)rC   lenonnxhelper	make_noder   r   r   r   r   int64)theta_2dNCHW	data_sizerT   nodeoriginal_gridrP   	test_names              r.    export_2d_no_reference_evaluatorz+AffineGrid.export_2d_no_reference_evaluator   s    "$$]]Aq!+
1aF	# 	 	M;(((+	 )  D 4I}MMM)(MBBD-I!!--	 "(Aq!Q<rx"H"H"HI	    	 	r0   c                    t                      } t          |           ddddf\  }}}}}|||f}dD ]}t          j                            dddgd	g|
          }t          ||          }	t          | |	          }
d}|dk    r|dz  }t          || t          j	        |||||gt          j
                  g|
g|           d S )Nr   r5   rL   rE   rM   rH   rN   rO   rP   rQ   test_affine_grid_3dr   rV   rW   rY   )rF   r[   r\   r]   r^   r   r   r   r   r   r_   )theta_3dra   rb   Drc   rd   re   rT   rf   rg   rP   rh   s               r.    export_3d_no_reference_evaluatorz+AffineGrid.export_3d_no_reference_evaluator   s   "$$Hq!Q11aA1I	# 	 	M;(((+	 )  D 4I}MMM)(MBBD-I!!--	 "(Aq!Q?"("K"K"KL	    	 	r0   N)rI   rJ   )__name__
__module____qualname__staticmethodri   rn    r0   r.   rH   rH      sR           \2    \  r0   rH   )
__future__r   numpyr   r\   onnx.backend.test.case.baser   onnx.backend.test.case.noder   !onnx.reference.ops.op_affine_gridr   r   r/   r3   rC   rF   rH   rs   r0   r.   <module>ry      s    # " " " " "      , , , , , , . . . . . .       L, L, L,^, , ,(
 
 
  83 3 3 3 3 3 3 3 3 3r0   