§
    ‡Ûg²C  ã                   ó2  — 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 d dlmZ d dlmZmZmZmZ d dlmZmZmZ  G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Ú_api)ÚAxes©ÚCircle)ÚPath)Ú	FormatterÚNullLocatorÚFixedLocatorÚNullFormatter)ÚAffine2DÚBboxTransformToÚ	Transformc                   óØ   ‡ — e Zd ZdZ G d„ de¦  «        ZdZd„ Zˆ fd„Zd„ Z	d„ Z
dd
„Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ˆ xZ!S )ÚGeoAxesz2An abstract base class for geographic projections.c                   ó"   — e Zd ZdZdd„Zdd„ZdS )úGeoAxes.ThetaFormatterz‹
        Used to format the theta tick labels.  Converts the native
        unit of radians into degrees and adds a degree symbol.
        ç      ð?c                 ó   — || _         d S ©N)Ú	_round_to)ÚselfÚround_tos     úP/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/projections/geo.pyÚ__init__zGeoAxes.ThetaFormatter.__init__   s   € Ø%ˆDŒNˆNˆNó    Nc                 óp   — t          t          j        |¦  «        | j        z  ¦  «        | j        z  }|d›d�S )Nz0.0fõ   Â°)ÚroundÚnpÚrad2degr   )r   ÚxÚposÚdegreess       r   Ú__call__zGeoAxes.ThetaFormatter.__call__   s7   € Ý�BœJ q™MœM¨D¬NÑ:Ñ;Ô;¸d¼nÑLˆGØÐ3Ð3Ð3Ð3Ð3r   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   © r   r   ÚThetaFormatterr      sF   € € € € € ð	ð 	ð	&ð 	&ð 	&ð 	&ð	4ð 	4ð 	4ð 	4ð 	4ð 	4r   r*   éK   c                 ój   — t          j        | ¦  «        | _        t          j        | ¦  «        | _        d S r   )ÚmaxisÚXAxisÚxaxisÚYAxisÚyaxis©r   s    r   Ú
_init_axiszGeoAxes._init_axis    s(   € Ý”[ Ñ&Ô&ˆŒ
Ý”[ Ñ&Ô&ˆŒ
ˆ
ˆ
r   c                 óþ  •— t          ¦   «                              ¦   «          |                      d¦  «         |                      d¦  «         |                      d¦  «         | j                             t          ¦   «         ¦  «         | j                             t          ¦   «         ¦  «         | j         	                    d¦  «         | j         	                    d¦  «         | j         
                    d¬¦  «         |                      t          j        d         ¦  «         t          j        | t           j         t           j        ¦  «         t          j        | t           j         dz  t           j        dz  ¦  «         d S )	Né   é   r+   ÚnoneT)Úlabel1Onz	axes.gridç       @)ÚsuperÚclearÚset_longitude_gridÚset_latitude_gridÚset_longitude_grid_endsr/   Úset_minor_locatorr	   r1   Úset_ticks_positionÚset_tick_paramsÚgridÚmplÚrcParamsr   Úset_xlimr   ÚpiÚset_ylim©r   Ú	__class__s    €r   r;   zGeoAxes.clear'   s&  ø€ å‰Œ�Š‰Œˆà×Ò Ñ#Ô#Ð#Ø×Ò˜rÑ"Ô"Ð"Ø×$Ò$ RÑ(Ô(Ð(ØŒ
×$Ò$¥[¡]¤]Ñ3Ô3Ð3ØŒ
×$Ò$¥[¡]¤]Ñ3Ô3Ð3ØŒ
×%Ò% fÑ-Ô-Ð-ØŒ
×%Ò% fÑ-Ô-Ð-ØŒ
×"Ò"¨DÐ"Ñ1Ô1Ð1ð 	�	Š	•#”,˜{Ô+Ñ,Ô,Ð,åŒ�d�RœU˜F¥B¤EÑ*Ô*Ð*ÝŒ�d�RœU˜F S™L­"¬%°#©+Ñ6Ô6Ð6Ð6Ð6r   c                 óÂ  — |                       | j        ¦  «        | _        |                      ¦   «         | _        t          | j        ¦  «        | _        | j        | j        z   | j        z   | _        t          ¦   «          
                    d| j        dz  ¦  «                             d| j         ¦  «        | _        | j        | j        z   | _        t          ¦   «          
                    dd¦  «        | j        z   t          ¦   «                              dd¦  «        z   | _        t          ¦   «          
                    dd¦  «        | j        z   t          ¦   «                              dd¦  «        z   | _        t          ¦   «          
                    t"          j        dz  d¦  «                             t"          j         d¦  «        }t          ¦   «          
                    dd¦  «        }|| j        z   | _        || j        z   || j        z   | j        z   z   }|t          ¦   «                              dd¦  «        z   | _        |t          ¦   «                              dd¦  «        z   | _        d S )	Né   é   r   é   éüÿÿÿgš™™™™™ñ?iøÿÿÿé   )Ú_get_core_transformÚ
RESOLUTIONÚtransProjectionÚ_get_affine_transformÚtransAffiner   ÚbboxÚ	transAxesÚ	transDatar   ÚscaleÚ_longitude_capÚ	translateÚ_xaxis_pretransformÚ_xaxis_transformÚ_xaxis_text1_transformÚ_xaxis_text2_transformr   rF   Ú_yaxis_transformÚ_yaxis_text1_transformÚ_yaxis_text2_transform)r   Úyaxis_stretchÚyaxis_spaceÚyaxis_text_bases       r   Ú_set_lim_and_transformszGeoAxes._set_lim_and_transforms;   s5  € à#×7Ò7¸¼ÑHÔHˆÔà×5Ò5Ñ7Ô7ˆÔå(¨¬Ñ3Ô3ˆŒð
 Ô ØÔñàŒNñð 	Œõ ‰JŒJßŠU�1�dÔ)¨AÑ-Ñ.Ô.ßŠY�q˜4Ô.Ð.Ñ/Ô/ð 	Ô ð
 Ô$ØŒNñð 	Ôõ ‰JŒJ×Ò˜Q Ñ"Ô"ØŒNñå‰JŒJ× Ò   AÑ&Ô&ñ'ð 	Ô#õ
 ‰JŒJ×Ò˜Q Ñ"Ô"ØŒNñå‰JŒJ× Ò   BÑ'Ô'ñ(ð 	Ô#õ !™
œ
×(Ò(­¬°©°AÑ6Ô6×@Ò@Å"Ä%ÀÈÑKÔKˆÝ‘j”j×&Ò& q¨#Ñ.Ô.ˆàØŒNñð 	Ôð ØÔ ñ!àØÔñàŒ^ññð 	ð Ý‰JŒJ× Ò   QÑ'Ô'ñ(ð 	Ô#ð Ý‰JŒJ× Ò   AÑ&Ô&ñ'ð 	Ô#Ð#Ð#r   c                 ó:  — |                       d¦  «        }|                     t          j        df¦  «        \  }}|                     dt          j        dz  f¦  «        \  }}t	          ¦   «                              d|z  d|z  ¦  «                             dd¦  «        S )NrK   r   rL   ç      à?)rP   Ú	transformr   rF   r   rX   rZ   )r   rh   ÚxscaleÚ_Úyscales        r   rS   zGeoAxes._get_affine_transformn   s…   € Ø×,Ò,¨QÑ/Ô/ˆ	Ø×'Ò'­¬°¨
Ñ3Ô3‰	ˆ�Ø×'Ò'¨­B¬E°!©G¨Ñ5Ô5‰	ˆˆ6Ý‰zŒzßŠU�3˜‘<  v¡Ñ.Ô.ßŠY�s˜CÑ Ô ð	!r   rB   c                 ó@   — t          j        g d¢|¬¦  «         | j        S ©N)Útick1Útick2rB   )Úwhich)r   Úcheck_in_listr\   ©r   rp   s     r   Úget_xaxis_transformzGeoAxes.get_xaxis_transformv   ó(   € ÝÔÐ5Ð5Ð5¸UÐCÑCÔCÐCØÔ$Ð$r   c                 ó   — | j         ddfS )NÚbottomÚcenter)r]   ©r   Úpads     r   Úget_xaxis_text1_transformz!GeoAxes.get_xaxis_text1_transformz   s   € ØÔ*¨H°hÐ>Ð>r   c                 ó   — | j         ddfS )NÚtoprw   )r^   rx   s     r   Úget_xaxis_text2_transformz!GeoAxes.get_xaxis_text2_transform}   s   € ØÔ*¨E°8Ð;Ð;r   c                 ó@   — t          j        g d¢|¬¦  «         | j        S rm   )r   rq   r_   rr   s     r   Úget_yaxis_transformzGeoAxes.get_yaxis_transform€   rt   r   c                 ó   — | j         ddfS )Nrw   Úright)r`   rx   s     r   Úget_yaxis_text1_transformz!GeoAxes.get_yaxis_text1_transform„   s   € ØÔ*¨H°gÐ=Ð=r   c                 ó   — | j         ddfS )Nrw   Úleft)ra   rx   s     r   Úget_yaxis_text2_transformz!GeoAxes.get_yaxis_text2_transform‡   s   € ØÔ*¨H°fÐ<Ð<r   c                 ó"   — t          dd¦  «        S )N©rg   rg   rg   r   r2   s    r   Ú_gen_axes_patchzGeoAxes._gen_axes_patchŠ   s   € Ý�j #Ñ&Ô&Ð&r   c                 óH   — dt           j                             | dd¦  «        iS )NÚgeor‡   rg   )ÚmspinesÚSpineÚcircular_spiner2   s    r   Ú_gen_axes_spineszGeoAxes._gen_axes_spines�   s!   € Ø•w”}×3Ò3°D¸*ÀcÑJÔJÐKÐKr   c                 ó,   — |d         dk    rt           ‚d S )Nr   Úlinear)ÚNotImplementedError©r   ÚargsÚkwargss      r   Ú
set_yscalezGeoAxes.set_yscale�   s   € Ø�Œ7�hÒÐÝ%Ð%ð Ðr   c                 ó    — t          d¦  «        ‚)z-Not supported. Please consider using Cartopy.zaChanging axes limits of a geographic projection is not supported.  Please consider using Cartopy.)Ú	TypeErrorr’   s      r   rE   zGeoAxes.set_xlim–   s   € åð Iñ Jô Jð 	Jr   c                 ó¢   — t          j        ||g¦  «        \  }}|dk    rdnd}|dk    rdnd}dt          |¦  «        |t          |¦  «        |fz  S )z1Return a format string formatting the coordinate.ç        ÚNÚSÚEÚWu   %fÂ°%s, %fÂ°%s)r   r    Úabs)r   ÚlonÚlatÚnsÚews        r   Úformat_coordzGeoAxes.format_coord�   s`   € å”:˜s C˜jÑ)Ô)‰ˆˆSØ˜3’J�JˆSˆS CˆØ˜3’J�JˆSˆS CˆØ:Ý�s‘8”8˜R¥ S¡¤¨2Ð.ñ/ð 	0r   c                 ó  — t          j        d|z   d|¦  «        }| j                             t	          t          j        |¦  «        ¦  «        ¦  «         | j                             |                      |¦  «        ¦  «         dS )zH
        Set the number of degrees between each longitude grid.
        iLÿÿÿé´   N)r   Úaranger/   Úset_major_locatorr
   Údeg2radÚset_major_formatterr*   ©r   r#   rB   s      r   r<   zGeoAxes.set_longitude_grid¥   sm   € õ
 Œy˜ ™¨¨gÑ6Ô6ˆØŒ
×$Ò$¥\µ"´*¸TÑ2BÔ2BÑ%CÔ%CÑDÔDÐDØŒ
×&Ò& t×':Ò':¸7Ñ'CÔ'CÑDÔDÐDÐDÐDr   c                 ó  — t          j        d|z   d|¦  «        }| j                             t	          t          j        |¦  «        ¦  «        ¦  «         | j                             |                      |¦  «        ¦  «         dS )zG
        Set the number of degrees between each latitude grid.
        i¦ÿÿÿéZ   N)r   r¦   r1   r§   r
   r¨   r©   r*   rª   s      r   r=   zGeoAxes.set_latitude_grid®   sm   € õ
 Œy˜˜w™¨¨GÑ4Ô4ˆØŒ
×$Ò$¥\µ"´*¸TÑ2BÔ2BÑ%CÔ%CÑDÔDÐDØŒ
×&Ò& t×':Ò':¸7Ñ'CÔ'CÑDÔDÐDÐDÐDr   c                 óÖ   — t          j        |¦  «        | _        | j                             ¦   «                              d| j        dz  ¦  «                             d| j         ¦  «         dS )zS
        Set the latitude(s) at which to stop drawing the longitude grids.
        r   r9   r™   N)r   r¨   rY   r[   r;   rX   rZ   )r   r#   s     r   r>   zGeoAxes.set_longitude_grid_ends·   sZ   € õ !œj¨Ñ1Ô1ˆÔØÔ ßŠU‰WŒWßŠU�3˜Ô+¨cÑ1Ñ2Ô2ßŠY�s˜TÔ0Ð0Ñ1Ô1Ð1Ð1Ð1r   c                 ó   — dS )z+Return the aspect ratio of the data itself.r   r)   r2   s    r   Úget_data_ratiozGeoAxes.get_data_ratioÁ   s   € àˆsr   c                 ó   — dS )z—
        Return whether this Axes supports the zoom box button functionality.

        This Axes object does not support interactive zoom box.
        Fr)   r2   s    r   Úcan_zoomzGeoAxes.can_zoomÇ   ó	   € ð ˆur   c                 ó   — dS )z—
        Return whether this Axes supports the pan/zoom button functionality.

        This Axes object does not support interactive pan/zoom.
        Fr)   r2   s    r   Úcan_panzGeoAxes.can_panÏ   r²   r   c                 ó   — d S r   r)   )r   r!   ÚyÚbuttons       r   Ú	start_panzGeoAxes.start_pan×   ó   € Øˆr   c                 ó   — d S r   r)   r2   s    r   Úend_panzGeoAxes.end_panÚ   r¹   r   c                 ó   — d S r   r)   )r   r·   Úkeyr!   r¶   s        r   Údrag_panzGeoAxes.drag_panÝ   r¹   r   )rB   )"r%   r&   r'   r(   r   r*   rQ   r3   r;   re   rS   rs   rz   r}   r   r‚   r…   rˆ   rŽ   r•   Ú
set_xscalerE   rG   r£   r<   r=   r>   r¯   r±   r´   r¸   r»   r¾   Ú__classcell__©rI   s   @r   r   r      sí  ø€ € € € € Ø<Ð<ð
4ð 
4ð 
4ð 
4ð 
4˜ñ 
4ô 
4ð 
4ð €Jð'ð 'ð 'ð7ð 7ð 7ð 7ð 7ð(1'ð 1'ð 1'ðf!ð !ð !ð%ð %ð %ð %ð?ð ?ð ?ð<ð <ð <ð%ð %ð %ð %ð>ð >ð >ð=ð =ð =ð'ð 'ð 'ðLð Lð Lð&ð &ð &ð €JðJð Jð Jð
 €Hð0ð 0ð 0ðEð Eð EðEð Eð Eð2ð 2ð 2ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð ð ð r   r   c                   ó2   ‡ — e Zd ZdxZZˆ fd„Zd„ Zd„ Zˆ xZS )Ú_GeoTransformrL   c                 óV   •— t          ¦   «                              ¦   «          || _        dS )zÁ
        Create a new geographical transform.

        Resolution is the number of steps to interpolate between each input
        line segment to approximate its path in curved space.
        N)r:   r   Ú_resolution)r   Ú
resolutionrI   s     €r   r   z_GeoTransform.__init__å   s)   ø€ õ 	‰Œ×ÒÑÔÐØ%ˆÔÐÐr   c                 ó\   — d                      t          | ¦  «        j        | j        ¦  «        S )Nz{}({}))ÚformatÚtyper%   rÅ   r2   s    r   Ú__str__z_GeoTransform.__str__ï   s"   € Ø�Š�t D™zœzÔ2°DÔ4DÑEÔEÐEr   c                 ó�   — |                      | j        ¦  «        }t          |                      |j        ¦  «        |j        ¦  «        S r   )ÚinterpolatedrÅ   r   rh   ÚverticesÚcodes)r   ÚpathÚipaths      r   Útransform_path_non_affinez'_GeoTransform.transform_path_non_affineò   s8   € à×!Ò! $Ô"2Ñ3Ô3ˆÝ�D—N’N 5¤>Ñ2Ô2°E´KÑ@Ô@Ð@r   )	r%   r&   r'   Ú
input_dimsÚoutput_dimsr   rÊ   rÑ   rÀ   rÁ   s   @r   rÃ   rÃ   á   sj   ø€ € € € € à Ð €J�ð&ð &ð &ð &ð &ðFð Fð FðAð Að Að Að Að Að Ar   rÃ   c                   ó`   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zˆ fd„Zd„ Zˆ xZ	S )Ú
AitoffAxesÚaitoffc                   ó   — e Zd ZdZd„ Zd„ ZdS )úAitoffAxes.AitoffTransformzThe base Aitoff transform.c                 ój  — |j         \  }}|dz  }t          j        |¦  «        }t          j        |t          j        |¦  «        z  ¦  «        }t          j        |t          j        z  ¦  «        }|t          j        |¦  «        z  |z  }t          j        |¦  «        |z  }	t          j        ||	g¦  «        S )Nr9   )ÚTr   ÚcosÚarccosÚsincrF   ÚsinÚcolumn_stack)
r   ÚllÚ	longitudeÚlatitudeÚ	half_longÚcos_latitudeÚalphaÚ
sinc_alphar!   r¶   s
             r   Útransform_non_affinez/AitoffAxes.AitoffTransform.transform_non_affineþ   sœ   € à"$¤$ÑˆI�xð " C™ˆIÝœ6 (Ñ+Ô+ˆLå”I˜l­R¬V°IÑ->Ô->Ñ>Ñ?Ô?ˆEÝœ ­¬¡Ñ/Ô/ˆJà¥¤ yÑ 1Ô 1Ñ1°ZÑ?ˆAÝ”�xÑ Ô  :Ñ-ˆAÝ”? A q 6Ñ*Ô*Ð*r   c                 ó@   — t                                | j        ¦  «        S r   )rÕ   ÚInvertedAitoffTransformrÅ   r2   s    r   Úinvertedz#AitoffAxes.AitoffTransform.inverted  ó   € å×5Ò5°dÔ6FÑGÔGÐGr   N©r%   r&   r'   r(   rç   rê   r)   r   r   ÚAitoffTransformrØ   û   s=   € € € € € Ø(Ð(ð	+ð 	+ð 	+ð	Hð 	Hð 	Hð 	Hð 	Hr   rí   c                   ó   — e Zd Zd„ Zd„ ZdS )ú"AitoffAxes.InvertedAitoffTransformc                 ó@   — t          j        |t           j        ¦  «        S r   )r   Ú	full_likeÚnan)r   Úxys     r   rç   z7AitoffAxes.InvertedAitoffTransform.transform_non_affine  s   € õ ”< ¥B¤FÑ+Ô+Ð+r   c                 ó@   — t                                | j        ¦  «        S r   )rÕ   rí   rÅ   r2   s    r   rê   z+AitoffAxes.InvertedAitoffTransform.inverted  ó   € å×-Ò-¨dÔ.>Ñ?Ô?Ð?r   N©r%   r&   r'   rç   rê   r)   r   r   ré   rï     s7   € € € € € ð	,ð 	,ð 	,ð
	@ð 	@ð 	@ð 	@ð 	@r   ré   c                 óº   •— t           j        dz  | _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S ©Nr9   rg   ÚboxÚC©Ú
adjustableÚanchor©r   rF   rY   r:   r   Ú
set_aspectr;   ©r   r“   r”   rI   s      €r   r   zAitoffAxes.__init__  óV   ø€ Ý œe c™kˆÔØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø�Š˜¨°cˆÑ:Ô:Ð:Ø�
Š
‰Œˆˆˆr   c                 ó,   — |                       |¦  «        S r   )rí   ©r   rÆ   s     r   rP   zAitoffAxes._get_core_transform"  ó   € Ø×#Ò# JÑ/Ô/Ð/r   )
r%   r&   r'   ÚnamerÃ   rí   ré   r   rP   rÀ   rÁ   s   @r   rÕ   rÕ   ø   s°   ø€ € € € € Ø€DðHð Hð Hð Hð H˜-ñ Hô Hð Hð,	@ð 	@ð 	@ð 	@ð 	@ -ñ 	@ô 	@ð 	@ðð ð ð ð ð0ð 0ð 0ð 0ð 0ð 0ð 0r   rÕ   c                   ó`   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zˆ fd„Zd„ Zˆ xZ	S )Ú
HammerAxesÚhammerc                   ó   — e Zd ZdZd„ Zd„ ZdS )úHammerAxes.HammerTransformzThe base Hammer transform.c                 óh  — |j         \  }}|dz  }t          j        |¦  «        }t          j        d¦  «        }t          j        d|t          j        |¦  «        z  z   ¦  «        }d|z  |t          j        |¦  «        z  z  |z  }|t          j        |¦  «        z  |z  }	t          j        ||	g¦  «        S )Nr9   r   )rÚ   r   rÛ   ÚsqrtrÞ   rß   )
r   rà   rá   râ   rã   rä   Úsqrt2rå   r!   r¶   s
             r   rç   z/HammerAxes.HammerTransform.transform_non_affine,  s¥   € à"$¤$ÑˆI�xØ! C™ˆIÝœ6 (Ñ+Ô+ˆLÝ”G˜C‘L”LˆEÝ”G˜C ,µ´¸	Ñ1BÔ1BÑ"BÑBÑCÔCˆEØ�u‘ µ´°yÑ0AÔ0AÑ!AÑBÀUÑJˆAØ�œ Ñ)Ô)Ñ)¨UÑ2ˆAÝ”? A q 6Ñ*Ô*Ð*r   c                 ó@   — t                                | j        ¦  «        S r   )r  ÚInvertedHammerTransformrÅ   r2   s    r   rê   z#HammerAxes.HammerTransform.inverted7  rë   r   Nrì   r)   r   r   ÚHammerTransformr
  )  s=   € € € € € Ø(Ð(ð		+ð 		+ð 		+ð	Hð 	Hð 	Hð 	Hð 	Hr   r  c                   ó   — e Zd Zd„ Zd„ ZdS )ú"HammerAxes.InvertedHammerTransformc                 ó  — |j         \  }}t          j        d|dz  dz  z
  |dz  dz  z
  ¦  «        }dt          j        ||z  dd|dz  z  dz
  z  z  ¦  «        z  }t          j        ||z  ¦  «        }t          j        ||g¦  «        S )NrK   rM   rL   )rÚ   r   r  ÚarctanÚarcsinrß   )r   ró   r!   r¶   Úzrá   râ   s          r   rç   z7HammerAxes.InvertedHammerTransform.transform_non_affine=  sŠ   € à”4‰DˆAˆqÝ”˜˜Q ™U q™LÑ(¨A°©E°a©<Ñ7Ñ8Ô8ˆAØ�BœI q¨1¡u°°a¸!¸q¹&±jÀ1±nÑ1EÑ&FÑGÔGÑGˆIÝ”y  1¡‘~”~ˆHÝ”? I¨xÐ#8Ñ9Ô9Ð9r   c                 ó@   — t                                | j        ¦  «        S r   )r  r  rÅ   r2   s    r   rê   z+HammerAxes.InvertedHammerTransform.invertedE  rõ   r   Nrö   r)   r   r   r  r  ;  s7   € € € € € ð	:ð 	:ð 	:ð	@ð 	@ð 	@ð 	@ð 	@r   r  c                 óº   •— t           j        dz  | _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S rø   rþ   r   s      €r   r   zHammerAxes.__init__I  r  r   c                 ó,   — |                       |¦  «        S r   )r  r  s     r   rP   zHammerAxes._get_core_transformO  r  r   )
r%   r&   r'   r  rÃ   r  r  r   rP   rÀ   rÁ   s   @r   r  r  &  s°   ø€ € € € € Ø€DðHð Hð Hð Hð H˜-ñ Hô Hð Hð$@ð @ð @ð @ð @ -ñ @ô @ð @ðð ð ð ð ð0ð 0ð 0ð 0ð 0ð 0ð 0r   r  c                   ó`   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zˆ fd„Zd„ Zˆ xZ	S )ÚMollweideAxesÚ	mollweidec                   ó   — e Zd ZdZd„ Zd„ ZdS )ú MollweideAxes.MollweideTransformzThe base Mollweide transform.c                 ó  ‡— ˆfd„}|j         \  }}t          j        dz  t          j        |¦  «        z
  }|dk     }| }t          j        |j        t          ¬¦  «        }|                     ¦   «         r”t          j        t          j        ||         ¦  «        z  Šd||         z  }	 ||	¦  «        \  }
}t          j        |¦  «        r8|	|xx         |
|         z  cc<    ||	¦  «        \  }
}t          j        |¦  «        °8|	dz  ||<   |                     ¦   «         rS||         }ddt          j        z  |dz  z  dz  z  }t          j        dz  |z
  t          j	        ||         ¦  «        z  ||<   t          j        |j        t          ¬¦  «        }dt          j
        d¦  «        z  t          j        z  |z  t          j        |¦  «        z  |d d …d	f<   t          j
        d¦  «        t          j        |¦  «        z  |d d …d
f<   |S )Nc                 óž   •— | t          j        | ¦  «        z   ‰z
   dt          j        | ¦  «        z   z  }|t          j        |¦  «        dk    fS )NrK   gü©ñÒMbP?)r   rÞ   rÛ   rž   )ÚthetaÚdeltaÚpi_sin_ls     €r   Údz@MollweideAxes.MollweideTransform.transform_non_affine.<locals>.d[  sJ   ø€ Ø ¥2¤6¨%¡=¤=Ñ0°8Ñ;Ð<Ø¥¤ u¡¤Ñ-ñ/�à�bœf U™mœm¨eÒ3Ð3Ð3r   rL   gƒÀÊ¡E¶?)Údtyper9   rg   é   gUUUUUUÕ?r   rK   )rÚ   r   rF   rž   ÚemptyÚshapeÚfloatÚanyrÞ   Úsignr  rÛ   )r   rà   r$  rá   râ   ÚclatÚihighÚilowÚauxr!  r"  Úlarge_deltaÚeró   r#  s                 @r   rç   z5MollweideAxes.MollweideTransform.transform_non_affineY  sò  ø€ ð4ð 4ð 4ð 4ð 4ð
 #%¤$ÑˆI�xå”5˜‘7�RœV HÑ-Ô-Ñ-ˆDØ˜5’LˆEØ�6ˆDÝ”(˜8œ>µÐ7Ñ7Ô7ˆCà�xŠx‰zŒzð &Ýœ5¥2¤6¨(°4¬.Ñ#9Ô#9Ñ9�Ø˜h tœnÑ,�Ø%& Q u¡X¤XÑ"��{Ý”f˜[Ñ)Ô)ð 2Ø˜+Ð&Ð&Ô&¨%°Ô*<Ñ<Ð&Ð&Ñ&Ø)*¨¨5©¬Ñ&�E˜;õ ”f˜[Ñ)Ô)ð 2ð " A™I��D‘	à�yŠy‰{Œ{ð FØ˜”K�Ø˜1�rœu™9 q¨!¡tÑ+°Ñ7Ñ7�Ý œe A™g¨™k­R¬W°X¸e´_Ñ-EÔ-EÑE��E‘
å”˜"œ(­%Ð0Ñ0Ô0ˆBØ�bœg c™lœlÑ*­R¬UÑ2°iÑ?Å"Ä&ÈÁ+Ä+ÑMˆBˆqˆqˆq�!ˆt‰HÝ”w˜s‘|”|¥b¤f¨S¡k¤kÑ1ˆBˆqˆqˆq�!ˆt‰HàˆIr   c                 ó@   — t                                | j        ¦  «        S r   )r  ÚInvertedMollweideTransformrÅ   r2   s    r   rê   z)MollweideAxes.MollweideTransform.inverted{  s   € å ×;Ò;¸DÔ<LÑMÔMÐMr   Nrì   r)   r   r   ÚMollweideTransformr  V  s>   € € € € € Ø+Ð+ð 	ð  	ð  	ðD	Nð 	Nð 	Nð 	Nð 	Nr   r4  c                   ó   — e Zd Zd„ Zd„ ZdS )ú(MollweideAxes.InvertedMollweideTransformc                 ó„  — |j         \  }}t          j        |t          j        d¦  «        z  ¦  «        }t          j        dt          j        d¦  «        z  z  |z  t          j        |¦  «        z  }t          j        d|z  t          j        d|z  ¦  «        z   t          j        z  ¦  «        }t          j        ||g¦  «        S )NrL   )rÚ   r   r  r  rF   rÛ   rÞ   rß   )r   ró   r!   r¶   r!  rá   râ   s          r   rç   z=MollweideAxes.InvertedMollweideTransform.transform_non_affine�  s–   € à”4‰DˆAˆqõ ”I˜a¥"¤'¨!¡*¤*™nÑ-Ô-ˆEÝœ !¥b¤g¨a¡j¤j¡.Ñ1°QÑ6½¼À¹¼ÑFˆIÝ”y ! e¡)­b¬f°Q¸±YÑ.?Ô.?Ñ"?Å2Ä5Ñ!HÑIÔIˆHÝ”? I¨xÐ#8Ñ9Ô9Ð9r   c                 ó@   — t                                | j        ¦  «        S r   )r  r4  rÅ   r2   s    r   rê   z1MollweideAxes.InvertedMollweideTransform.inverted‹  s   € å ×3Ò3°DÔ4DÑEÔEÐEr   Nrö   r)   r   r   r3  r6    s7   € € € € € ð	:ð 	:ð 	:ð	Fð 	Fð 	Fð 	Fð 	Fr   r3  c                 óº   •— t           j        dz  | _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S rø   rþ   r   s      €r   r   zMollweideAxes.__init__�  r  r   c                 ó,   — |                       |¦  «        S r   )r4  r  s     r   rP   z!MollweideAxes._get_core_transform•  s   € Ø×&Ò& zÑ2Ô2Ð2r   )
r%   r&   r'   r  rÃ   r4  r3  r   rP   rÀ   rÁ   s   @r   r  r  S  s±   ø€ € € € € Ø€Dð'Nð 'Nð 'Nð 'Nð 'N˜]ñ 'Nô 'Nð 'NðRFð Fð Fð Fð F ]ñ Fô Fð Fð ð ð ð ð ð3ð 3ð 3ð 3ð 3ð 3ð 3r   r  c                   óx   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zdddœˆ fd„
Zˆ fd	„Zd
„ Z	d„ Z
ˆ xZS )ÚLambertAxesÚlambertc                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )úLambertAxes.LambertTransformzThe base Lambert transform.c                 óX   — t                                | |¦  «         || _        || _        dS )zÔ
            Create a new Lambert transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Lambert space.
            N©rÃ   r   Ú_center_longitudeÚ_center_latitude©r   Úcenter_longitudeÚcenter_latituderÆ   s       r   r   z%LambertAxes.LambertTransform.__init__Ÿ  s0   € õ ×"Ò" 4¨Ñ4Ô4Ð4Ø%5ˆDÔ"Ø$3ˆDÔ!Ð!Ð!r   c                 ó<  — |j         \  }}| j        }| j        }t          j        |¦  «        }t          j        |¦  «        }||z
  }t          j        |¦  «        }	t          j        dt          j        |¦  «        |z  z   t          j        |¦  «        |z  |	z  z   d¦  «        }
t          j        d|
z  ¦  «        }||z  t          j        |¦  «        z  }|t          j        |¦  «        |z  t          j        |¦  «        |z  |	z  z
  z  }t          j        ||g¦  «        S )NrK   gVçž¯Ò<rL   )	rÚ   rB  rC  r   rÛ   rÞ   Úmaximumr  rß   )r   rà   rá   râ   Úclongr,  Úcos_latÚsin_latÚ	diff_longÚcos_diff_longÚinner_kÚkr!   r¶   s                 r   rç   z1LambertAxes.LambertTransform.transform_non_affine©  s  € à"$¤$ÑˆI�xØÔ*ˆEØÔ(ˆDÝ”f˜XÑ&Ô&ˆGÝ”f˜XÑ&Ô&ˆGØ! EÑ)ˆIÝœF 9Ñ-Ô-ˆMå”jØ•B”F˜4‘L”L Ñ(Ñ(­2¬6°$©<¬<¸Ñ+?ÀÑ+MÑMØñô ˆGõ ”˜˜G™Ñ$Ô$ˆAØ�G‘�BœF 9Ñ-Ô-Ñ-ˆAØ•R”V˜D‘\”\ 'Ñ)­B¬F°4©L¬L¸Ñ,@ÀÑ,NÑNÑOˆAå”? A q 6Ñ*Ô*Ð*r   c                 óX   — t                                | j        | j        | j        ¦  «        S r   )r<  ÚInvertedLambertTransformrB  rC  rÅ   r2   s    r   rê   z%LambertAxes.LambertTransform.inverted¼  s,   € å×7Ò7ØÔ&ØÔ%ØÔ ñ"ô "ð "r   N)r%   r&   r'   r(   r   rç   rê   r)   r   r   ÚLambertTransformr?  œ  sG   € € € € € Ø)Ð)ð	4ð 	4ð 	4ð	+ð 	+ð 	+ð&	"ð 	"ð 	"ð 	"ð 	"r   rR  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ú$LambertAxes.InvertedLambertTransformc                 óX   — t                                | |¦  «         || _        || _        d S r   rA  rD  s       r   r   z-LambertAxes.InvertedLambertTransform.__init__Å  s.   € Ý×"Ò" 4¨Ñ4Ô4Ð4Ø%5ˆDÔ"Ø$3ˆDÔ!Ð!Ð!r   c           	      ó`  — |j         \  }}| j        }| j        }t          j        t          j        ||¦  «        d¦  «        }dt          j        d|z  ¦  «        z  }t          j        |¦  «        }t          j        |¦  «        }	t          j        |	t          j        |¦  «        z  ||z  t          j        |¦  «        z  |z  z   ¦  «        }
|t          j	        ||z  |t          j        |¦  «        z  |	z  |t          j        |¦  «        z  |z  z
  z  ¦  «        z   }t          j
        ||
g¦  «        S )Ng•Ö&è.>rL   rg   )rÚ   rB  rC  r   rH  Úhypotr  rÞ   rÛ   r  rß   )r   ró   r!   r¶   rI  r,  ÚpÚcÚsin_cÚcos_crâ   rá   s               r   rç   z9LambertAxes.InvertedLambertTransform.transform_non_affineÊ  s  € à”4‰DˆAˆqØÔ*ˆEØÔ(ˆDÝ”
�2œ8 A q™>œ>¨4Ñ0Ô0ˆAØ•B”I˜c A™gÑ&Ô&Ñ&ˆAÝ”F˜1‘I”IˆEÝ”F˜1‘I”IˆEå”y ¥r¤v¨d¡|¤|Ñ!3Ø#$ U¡7­2¬6°$©<¬<Ñ#7¸1Ñ"<ñ">ñ ?ô ?ˆHà¥¤	Ø�5‘˜Q�rœv d™|œ|™^¨EÑ1°Aµb´f¸T±l´l±NÀ5Ñ4HÑHÑIñ!Kô !Kñ KˆIõ ”? I¨xÐ#8Ñ9Ô9Ð9r   c                 óX   — t                                | j        | j        | j        ¦  «        S r   )r<  rR  rB  rC  rÅ   r2   s    r   rê   z-LambertAxes.InvertedLambertTransform.invertedÛ  s,   € å×/Ò/ØÔ&ØÔ%ØÔ ñ"ô "ð "r   N)r%   r&   r'   r   rç   rê   r)   r   r   rQ  rT  Ã  sA   € € € € € ð	4ð 	4ð 	4ð
	:ð 	:ð 	:ð"	"ð 	"ð 	"ð 	"ð 	"r   rQ  r   )rE  rF  c                óÖ   •— t           j        dz  | _        || _        || _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S )NrL   Úequalrù   rú   rû   )	r   rF   rY   rB  rC  r:   r   rÿ   r;   )r   rE  rF  r“   r”   rI   s        €r   r   zLambertAxes.__init__â  sf   ø€ Ý œe a™iˆÔØ!1ˆÔØ /ˆÔØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø�Š˜¨E¸#ˆÑ>Ô>Ð>Ø�
Š
‰Œˆˆˆr   c                 ó”   •— t          ¦   «                              ¦   «          | j                             t	          ¦   «         ¦  «         d S r   )r:   r;   r1   r©   r   rH   s    €r   r;   zLambertAxes.clearê  s4   ø€ å‰Œ�Š‰ŒˆØŒ
×&Ò&¥}¡¤Ñ7Ô7Ð7Ð7Ð7r   c                 óD   — |                       | j        | j        |¦  «        S r   )rR  rB  rC  r  s     r   rP   zLambertAxes._get_core_transformï  s)   € Ø×$Ò$ØÔ"ØÔ!Øñô ð 	r   c                 ól   — t          ¦   «                              d¦  «                             dd¦  «        S )Ng      Ð?rg   )r   rX   rZ   r2   s    r   rS   z!LambertAxes._get_affine_transformõ  s(   € Ý‰zŒzßŠU�4‰[Œ[ßŠY�s˜CÑ Ô ð	!r   )r%   r&   r'   r  rÃ   rR  rQ  r   r;   rP   rS   rÀ   rÁ   s   @r   r<  r<  ™  sÚ   ø€ € € € € Ø€Dð%"ð %"ð %"ð %"ð %"˜=ñ %"ô %"ð %"ðN"ð "ð "ð "ð " =ñ "ô "ð "ð> 01À!ð ð ð ð ð ð ð ð8ð 8ð 8ð 8ð 8ð
ð ð ð!ð !ð !ð !ð !ð !ð !r   r<  ) Únumpyr   Ú
matplotlibrC   r   Úmatplotlib.axesr   Úmatplotlib.axisÚaxisr-   Úmatplotlib.patchesr   Úmatplotlib.pathr   Úmatplotlib.spinesÚspinesr‹   Úmatplotlib.tickerr   r	   r
   r   Úmatplotlib.transformsr   r   r   r   rÃ   rÕ   r  r  r<  r)   r   r   ú<module>rm     s  ðØ Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  Ø #Ð #Ð #Ð #Ð #Ð #ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FðOð Oð Oð Oð Oˆdñ Oô Oð OðdAð Að Að Að A�Iñ Aô Að Að.+0ð +0ð +0ð +0ð +0�ñ +0ô +0ð +0ð\*0ð *0ð *0ð *0ð *0�ñ *0ô *0ð *0ðZC3ð C3ð C3ð C3ð C3�Gñ C3ô C3ð C3ðL_!ð _!ð _!ð _!ð _!�'ñ _!ô _!ð _!ð _!ð _!r   