
    IR-e                     ~    d dl Z d dlZd dlmZ d dlmZmZ d dl	m
Z
 g dZ e
e d           Zd Zd Zd	 Zd
 Zd ZdS )    N)units)BaseCoordinateFrameUnitSphericalRepresentation)
minversion)select_step_degreeselect_step_hourselect_step_scalartransform_contour_set_inplacez3.8.devc                    | dt           j        z  k    rg d}g d}t           j        gt          |          z  }g d}g d}t	          j        |          dz  }t           j        gt          |          z  }t	          j        |          dz  }t           j        gt          |          z  }	t	          j        |||g          }
||z   |z   }|	|z   |z   }|
                    | 	                    t           j                            }||         }||         }||z  S t          |                     t           j                            t           j        z  S )Ng      ?)
      ?            (   F   x   i  i  )
         
         -   Z      ih  )r         @      @            r   )r   r   r   r   r   r   r   r         N@      @)uarcsecdegreelennparrayarcminconcatenatesearchsortedtor	   to_value)dvdegree_limits_degree_steps_degree_unitsminsec_limits_minsec_steps_minute_limits_minute_unitssecond_limits_second_unitsdegree_limitsdegree_stepsnstepunits                  Clib/python3.11/site-packages/astropy/visualization/wcsaxes/utils.pyr   r      s?    
C!(NCCC???zC$6$66;;;444.11D8zC$7$77.11F:zC$7$77'WXX$}4}D#l2\A&&ruuQX77AAd{ ""++ah"7"78818CC    c                    | dt           j        z  k    r	g d}g d}t           j        gt          |          z  }g d}g d}t	          j        |          dz  }dt           j        z  gt          |          z  }t	          j        |          dz  }dt           j        z  gt          |          z  }	t	          j        |||g          }
||z   |z   }|	|z   |z   }|
                    | 	                    t           j                            }||         }||         }||z  S t          |                     dt           j        z                      dt           j        z  z  S )Ng      .@)	r   r   r   r   r   r   r      $   )	r   r   r         r      r!      )r   r   r   g      @g      @r   r       r!   r"   r   )r   r   r   rD   r   rE   r   rF   r   r   r   r#   r$   )r%   r&   	hourangler(   r)   r*   r+   r,   r-   r.   r	   r/   )r0   hour_limits_hour_steps_
hour_unitsr4   r5   r6   r7   r8   r9   hour_limits
hour_stepsr<   r=   r>   s                  r?   r   r   4   sQ   	D18O<<<444k]S%5%55
III>>>.11D8qx(3~+>+>>.11F:qx(3~+>+>>nnnl%STT"]2[@
!L0:=
$$RUU1;%7%788!}!}d{ ""++dQXo">">??4!(?SSr@   c                     t          j        |           }t          j        |          }||z
  }t          j        g d          }t          j        t          j        ||z
                      }d|||         z   z  S )N)r   r   r   r   g      $@)r)   log10floorargminabs)r0   log10_dvbasefracstepsimins         r?   r	   r	   R   sk    x||H8HDd?DH]]]##E9RVD5L))**DD5;&''r@   c                 4   i }d|d<   ddl m} t          | t                    r+| }|                    |           } | t          d|           t          | t                    s
 |             } t          | j        	                                          }|d d         |d<   | 
                    t          dt          j        z  dt          j        z                      } | j        j        j        d f|d<   | j        j        j        | j        j        j        f|d	<   |S )
N)	longitudelatitudetyper   )frame_transform_graphzUnknown frame: r   namewrapr>   )astropy.coordinatesr]   
isinstancestrlookup_name
ValueErrorr   listrepresentation_component_nameskeysrealize_framer   r%   deg	sphericallon
wrap_angler>   lat)frame
coord_metar]   initial_framenamess        r?   get_coord_metarr   _   s   J2Jv999999% @%11%88=>}>>???e011 5::<<==ErrJv  ;AIq15y Q QRRE/-8$?Jv/-2EO4G4LMJvr@   c                 (   g }g }g }t           r| j        D ]}|                                }t          |          dk    r*|                    |           t          j        d |D                       }|                    |dd                    |                    |d                    n|                                 }t          |          dk    rk|                    |           t          j        d |D                       }|                    |dd                    |                    |d                    t          j        |          dd         }d |D             }t          |          dk    rt          j        |          }ndS |                    |          }t          j	        ||          }t          |          D ]H\  }	}
t          j	        |
||	                   }
t          |
          D ]\  }}|||	         |         _        IdS )a  
    Transform a contour set in-place using a specified
    :class:`matplotlib.transform.Transform`.

    Using transforms with the native Matplotlib contour/contourf can be slow if
    the transforms have a non-negligible overhead (which is the case for
    WCS/SkyCoord transforms) since the transform is called for each individual
    contour line. It is more efficient to stack all the contour lines together
    temporarily and transform them in one go.
    r   c                 ,    g | ]}t          |          S  r(   .0xs     r?   
<listcomp>z1transform_contour_set_inplace.<locals>.<listcomp>       333SVV333r@   Nc                 ,    g | ]}t          |          S ru   rv   rw   s     r?   rz   z1transform_contour_set_inplace.<locals>.<listcomp>   r{   r@   c                 &    g | ]}|D ]	}|j         
S ru   )vertices)rx   pathspaths      r?   rz   z1transform_contour_set_inplace.<locals>.<listcomp>   s'    GGG%GGGGGGr@   )MATPLOTLIB_LT_3_8collections	get_pathsr(   appendr)   cumsumr,   	transformsplit	enumerater   )csetr   	all_paths	pos_levelpos_segments
collectionr   posr   ilevelvertisegiverts                r?   r
   r
   y   s7   " IIL &* 
	& 
	&J((**E5zzQU### )33U33344CCRC)))SW%%%%
	&   u::>>U### )33U33344CCRC)))SW%%% 	)$$SbS)I HG9GGGH
8}}q>(++ ""8,,H x),,H "(++ 5 5xl6233$T?? 	5 	5KD%/4Ifd#,,	55 5r@   )
matplotlibnumpyr)   astropyr   r%   r`   r   r   astropy.utils.introspectionr   __all__r   r   r   r	   rr   r
   ru   r@   r?   <module>r      s                  P P P P P P P P 2 2 2 2 2 2   #
:y999 D D D@T T T<
( 
( 
(  4@5 @5 @5 @5 @5r@   