U
    e»{j  ã                   @   sB  d dl Zd dlZd dlm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d	d
ddejdd…dd…f g¡dd„ ƒZej ddej dej fdej dej fg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej dddej d ej d!ej fdej  ej¡d ej  ej¡d!ej  ej¡fg¡d"d#„ ƒZd$d%„ ZdS )&é    N)Úassert_allclose)Úunits)Úmodels)Úassert_quantity_allclose)ÚwcsÚinp)r   r   )i   g�Âõ(\�4À)g     FŸÀç33333óF@©r   éZ   )r   i¦ÿÿÿé   é   c                 C   sæ   t  ¡ }ddg}||j _ddg|j _d}t ¡ }t |d tj |d tj |tj ¡}t 	|d tj |d tj |tj ¡}||B }||j
B }| | d | d d¡}	| |	d |	d d¡}
t|| Ž |	dd	� t||	Ž |
dd	� d S )
Ng¯ƒ90oOi@gX¡Lj–G@zRA---TANzDEC--TANé´   r   é   çê-�™—q=©Zatol)r   ZWCSÚcrvalÚctyper   ZPix2Sky_TANÚRotateNative2CelestialÚuÚdegÚRotateCelestial2NativeÚinverseZwcs_pix2worldZwcs_world2pixr   )r   Úwr   ZlonpoleÚtanÚn2cÚc2nÚmZminvZradecZxy© r   úo/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/modeling/tests/test_quantities_rotations.pyÚtest_against_wcslib   s,      ÿ  ÿ
r   é(   gÉv¾Ÿ/­¿g     €5@r   c                 C   sŽ   dt j dt j  t j¡dt j  t j¡  }}}t |||¡}t |||¡}t|j	|| Ž Ž | dt j d� t|j	|| Ž Ž | dt j d� d S )Né*   é+   é,   g‚vIhÂ%<=r   )
r   r   ÚtoÚarcsecÚradr   r   r   r   r   )r   ÚlonÚlatÚlon_poler   r   r   r   r   Útest_roundtrip_sky_rotation*   s
    2r*   c                  C   sb   t jdtj d�} dtj dtj  }}| ||ƒ\}}t||gdtj dtj gdtj d� d S )Nr
   ©Zangler   r   ç»½×Ùß|Û=r   )r   Ú
Rotation2Dr   r   r   )ÚmodelÚaÚbÚxÚyr   r   r   Útest_Rotation2D5   s    r3   c                  C   s^   t jdtj d�} | j| dtj dtj ƒŽ \}}t||gdtj dtj gdtj d� d S )Ng¶ä „Gm@r+   r   r   r,   r   )r   r-   r   r   r   r   )r.   r1   r2   r   r   r   Útest_Rotation2D_inverse<   s     r4   c                  C   sš   dt j dt j f} d}d}t dt j tjd t j dt j d¡}t||Ž |dd� t dt j dt j dt j d¡}t||t j Ž | dt j d� d S )	Nr
   r   )r
   r   r	   é   Zzxzr   r   )	r   r   r   ÚEulerAngleRotationr&   ÚnpÚpir   r   )Zydegr2   Úzr.   r   r   r   Útest_euler_angle_rotationsB   s    ("r:   Úparams)é<   é
   é   r<   r=   r>   c           	      C   s¼   dt j }dt j }| \}}}tj|||dd�}||j|jƒ\}}t||fdƒ |||ƒ\}}t||fdt j dt j fƒ || t j¡| t j¡ƒ\}}t||fdt j dt j fƒ d S )Nr   Zxyz)Z
axes_order)çç¿fM�7ÀçwgÞÌ3C#@r?   r@   )	r   r   r   r6   Úvaluer   r   r$   r&   )	r;   r1   r2   ÚphiÚthetaÚpsiZurotr/   r0   r   r   r   Útest_euler_rotations_with_unitsN   s     	


 ÿ ÿrE   c                  C   s  t  dtj dtj tjtj ¡} t| j	j
dƒ t| j	jdƒ t| jj
dƒ t| jjdƒ t| jj
tjƒ t| jjtjƒ | jjt d¡ks�t‚| jjt d¡ks¦t‚| j	jt d¡ks¼t‚| j	jt d¡ksÒt‚| jjt d¡ksèt‚| jjt d¡ksþt‚d S )Ni0N  g33333RÀgiº_Ë¡0ô¿g³¶m.¢×¸?r%   r&   r   )r   r   r   r%   r   r7   r8   r&   r   r(   rA   Z
_raw_valuer'   r)   ÚunitZUnitÚAssertionErrorZinternal_unit)r   r   r   r   Útest_attributesh   s    "rH   )Únumpyr7   ZpytestZnumpy.testingr   Zastropyr   r   Zastropy.modelingr   Zastropy.tests.helperr   Zastropy.wcsr   ÚmarkZparametrizeZmgridr   r   r&   r%   r*   r3   r4   r:   r$   rE   rH   r   r   r   r   Ú<module>   s8    þ
 &ÿ
2ýþ
