§
    2�Å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       @éÿÿÿÿgq¬‹Ûh ð?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                 úRC:\Projects\Historical\venv\Lib\site-packages\onnx/reference/ops/op_affine_grid.pyÚconstruct_original_gridr"      sÇ  € Ý�	‰NŒN˜aÒ€EÝ”˜)Ñ$Ô$€JÝ”W˜YÑ'Ô'Ð(€MÝ" 9Ñ-Ô-ð 0ñ 0‰ˆˆXØ˜AÒÐØ˜( Q™,Ñ'ˆDØˆEØˆDÝ”	˜%  tÑ,Ô,ˆAˆAà˜‘>ˆDØ˜ ™‘MˆEØˆDÝ”	˜%  tÑ,Ô,ˆAØ�!Š8ˆ8Øð 4Ý”J˜q 8¨Q -Ñ0Ô0°:Ñ=�Ø!"Ð 3 ]Ð 3��å”J˜q 8¨Q°Ð"2Ñ3Ô3°jÑ@�Ø!"Ð 3 ]Ð 3��Ø�AŠXˆXØð 4Ý”J˜q 1 h -Ñ0Ô0°:Ñ=�Ø!"Ð 3 ]Ð 3��å”J˜q 1 h°Ð"2Ñ3Ô3°jÑ@�Ø!"Ð 3 ]Ð 3��å”
˜1˜q (˜mÑ,Ô,¨zÑ9ˆAØÐ/ Ð/ˆM‰MÝŒ8�M¨UÐ(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Ñˆˆ6�8Ø˜Š{ˆ{˜x¨1š}˜}˜}Ð,Ø+Ô1‰ˆˆ1ˆhØ˜1Š}ˆ}ˆ}ˆ}å#%¤<ÝŒJÐ)¨A°©E°8Ð+<Ñ=Ô=ñ$
ô $
Ð õ ”ØÐ-ñ
ô 
ˆõ Œz�"œ, v¨yÑ9Ô9¸A¸qÀ!ÀVÐ;LÑMÔMˆØ�{Š{�2œ:Ñ&Ô&Ð&ØÔ" aÒ'Ð'Ð'Ð'Ø!œ-Ñ€A€vˆxØ�QŠ;ˆ;˜8 qš=˜=˜=Ð(Ø*Ô0Ñ€A€qˆ!ˆXØ�qŠ=ˆ=ˆ=ˆ=å!œ|Ý
Œ
Ð%¨¨A©°©	°8Ð'<Ñ=Ô=ñ ô  Ðõ ŒYØÐ)ñô €Fõ Œ:•b”l 6¨9Ñ5Ô5¸¸1¸aÀÀFÐ7KÑLÔL€DØ�;Š;•r”zÑ"Ô"Ð"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@   € Ø%Ð;¨Ô);ˆØÐˆˆ1ˆyÝ/°	¸=Ñ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#   