
    hG                     <    S r SSKrSSKJr  SSKJr   " S S5      rg)a  Define the :class:`~geographiclib.geodesicline.GeodesicLine` class

The constructor defines the starting point of the line.  Points on the
line are given by

  * :meth:`~geographiclib.geodesicline.GeodesicLine.Position` position
    given in terms of distance
  * :meth:`~geographiclib.geodesicline.GeodesicLine.ArcPosition` position
    given in terms of spherical arc length

A reference point 3 can be defined with

  * :meth:`~geographiclib.geodesicline.GeodesicLine.SetDistance` set
    position of 3 in terms of the distance from the starting point
  * :meth:`~geographiclib.geodesicline.GeodesicLine.SetArc` set
    position of 3 in terms of the spherical arc length from the starting point

The object can also be constructed by

  * :meth:`Geodesic.Line <geographiclib.geodesic.Geodesic.Line>`
  * :meth:`Geodesic.DirectLine <geographiclib.geodesic.Geodesic.DirectLine>`
  * :meth:`Geodesic.ArcDirectLine
    <geographiclib.geodesic.Geodesic.ArcDirectLine>`
  * :meth:`Geodesic.InverseLine <geographiclib.geodesic.Geodesic.InverseLine>`

The public attributes for this class are

  * :attr:`~geographiclib.geodesicline.GeodesicLine.a`
    :attr:`~geographiclib.geodesicline.GeodesicLine.f`
    :attr:`~geographiclib.geodesicline.GeodesicLine.caps`
    :attr:`~geographiclib.geodesicline.GeodesicLine.lat1`
    :attr:`~geographiclib.geodesicline.GeodesicLine.lon1`
    :attr:`~geographiclib.geodesicline.GeodesicLine.azi1`
    :attr:`~geographiclib.geodesicline.GeodesicLine.salp1`
    :attr:`~geographiclib.geodesicline.GeodesicLine.calp1`
    :attr:`~geographiclib.geodesicline.GeodesicLine.s13`
    :attr:`~geographiclib.geodesicline.GeodesicLine.a13`

    N)Math)GeodesicCapabilityc                       \ rS rSrSr\R                  \R                  -  \R                  \R                  4S jr
S r\R                  4S jr\R                  4S jrS rS rS	rg
)GeodesicLine?   zPoints on a geodesic pathc                    SSK Jn  UR                  U l         UR                  U l         UR                  U l        UR
                  U l        UR                  U l        XXR                  -  UR                  -  UR                  -  U l
         [        R                  " U5      U l         X0l         [        R                   " U5      (       d  [        R                   " U5      (       aS  [        R"                  " U5      U l        [        R&                  " [        R(                  " U5      5      u  U l        U l        OX@l         X`l         Xpl         [        R&                  " [        R(                  " U R                  5      5      u  pXR                  -  n	[        R.                  " X5      u  p[1        UR2                  U
5      n
[        R4                  " SUR6                  [        R8                  " U	5      -  -   5      U l        U R*                  U
-  U l        [        R>                  " U R,                  U R*                  U	-  5      U l         Xl!        U R<                  U	-  U l"        U	S:w  d  U R,                  S:w  a  XR,                  -  OS=U l#        U l$        [        R.                  " U RB                  U RF                  5      u  U l!        U l#        [        R8                  " U R@                  5      UR6                  -  U l%        U RJ                  SS[        R4                  " SU RJ                  -   5      -   -  U RJ                  -   -  nU R                  URL                  -  (       Ga  URO                  U5      U l(        [S        [U        URV                  S-   5      5      U l,        UR[                  XRX                  5        UR]                  SU RB                  U RF                  U RX                  5      U l/        [        R`                  " U R^                  5      n[        Rb                  " U R^                  5      nU RB                  U-  U RF                  U-  -   U l2        U RF                  U-  U RB                  U-  -
  U l3        U R                  URh                  -  (       aA  [S        [U        URj                  S-   5      5      U l6        URo                  XRl                  5        U R                  URp                  -  (       a  URs                  U5      U l:        [S        [U        URv                  S-   5      5      U l<        UR{                  XRx                  5        UR]                  SU RB                  U RF                  U Rx                  5      U l>        U R                  UR~                  -  (       a  [S        [U        UR                  5      5      U lA        UR                  XR                  5        U R                  * U R<                  -  UR                  U5      -  U lD        UR]                  SU RB                  U RF                  U R                  5      U lE        U R                  UR                  -  (       a  [S        [U        UR                  5      5      U lH        UR                  XR                  5        [        R8                  " U R                  5      U R@                  -  U R<                  -  UR                  -  U lK        UR]                  SU RB                  U RF                  U R                  5      U lL        [        R                  U lN         [        R                  U lO        g)aJ  Construct a GeodesicLine object

:param geod: a :class:`~geographiclib.geodesic.Geodesic` object
:param lat1: latitude of the first point in degrees
:param lon1: longitude of the first point in degrees
:param azi1: azimuth at the first point in degrees
:param caps: the :ref:`capabilities <outmask>`

This creates an object allowing points along a geodesic starting at
(*lat1*, *lon1*), with azimuth *azi1* to be found.  The default
value of *caps* is STANDARD | DISTANCE_IN.  The optional parameters
*salp1* and *calp1* should not be supplied; they are part of the
private interface.

r   Geodesic      TFN)Pgeographiclib.geodesicr
   af_b_c2_f1LATITUDEAZIMUTHLONG_UNROLLcapsr   LatFixlat1lon1mathisnanAngNormalizeazi1sincosdAngRoundsalp1calp1normmaxtiny_sqrt_ep2sq_dn1_salp0hypot_calp0_ssig1_somg1_csig1_comg1_k2CAP_C1_A1m1f_A1m1listrangenC1__C1a_C1f_SinCosSeries_B11sincos_stau1_ctau1CAP_C1pnC1p__C1pa_C1pfCAP_C2_A2m1f_A2m1nC2__C2a_C2f_B21CAP_C3nC3__C3a_C3f_A3f_A3c_B31CAP_C4nC4__C4a_C4f_e2_A4_B41nans13a13)selfgeodr   r   r   r   r    r!   r
   sbet1cbet1epsscs                 mC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\geographiclib/geodesicline.py__init__GeodesicLine.__init__B   s   ( 0VVDF4VVDF#ggDGxxDHxxDH)))H,<,<<&&'DI% D!DI?I@zz%DJJu--##D)di#||DMM$,?@dj$*i@jAjC <<dii 89LE5HH;L599U*LEC4NE		!dii$''%.889DI **u$DK **TZZe);<DK Kt{{U':$)QJ$**/ "'!3GHJDK$+  $yydkkBDK wwt{{#dii/DH
((a1tyyTXX667$((B
CCyy8??""??3'djuX]]Q./0dimmC#((dkk4;;		3di
((499
a488DII#6qKK!OdkkAo5dkKK!OdkkAo5dk yy8###hnnq012djnnS**%yy8??"??3'djuX]]Q./0dimmC#((dkk4;;		3di yy8??"uX]]+,di
iiYY66'DKK'$))C.8di((dkk4;;		3di yy8??"uX]]+,di
iiYY4;;.<txxGdh((t{{DKK4dixxDHGxxDHJ    c           	          SSK Jn  [        R                  =n=n=n=n=n	=n
=n=pX0R                  UR
                  -  -  nU(       d2  U R                  UR
                  UR                  -  -  (       d  XVXxXXU4	$ SnSnU(       a1  [        R                  " U5      n[        R                  " U5      u  nnGOX R                  SU R                  -   -  -  n[        R                  " U5      (       a  UO[        R                  n[        R                  " U5      n[        R                  " U5      nUR                  SU R                   U-  U R"                  U-  -   U R"                  U-  U R                   U-  -
  U R$                  5      * nUXR&                  -
  -
  n[        R                  " U5      n[        R                  " U5      n[)        U R*                  5      S:  a  U R,                  U-  U R.                  U-  -   nU R.                  U-  U R,                  U-  -
  nUR                  SUUU R0                  5      nSU R                  -   UXR&                  -
  -   -  X R                  -  -
  nUU[        R2                  " SU R4                  [        R6                  " U5      -  -   5      -  -
  n[        R                  " U5      n[        R                  " U5      nU R,                  U-  U R.                  U-  -   nU R.                  U-  U R,                  U-  -
  n[        R2                  " SU R4                  [        R6                  " U5      -  -   5      nUUR8                  UR:                  -  UR<                  -  -  (       a\  U(       d  [)        U R*                  5      S:  a  UR                  SUUU R0                  5      nSU R                  -   XR&                  -
  -  nU R>                  U-  n[        R@                  " U RB                  U R>                  U-  5      nUS:X  a  URD                  =nnU RB                  nU R>                  U-  nX4R8                  -  (       a+  U(       a"  U R                  SU R                  -   U-  U-   -  OUn	X4RF                  -  (       Ga  U RB                  U-  nUn[        RH                  " SU RB                  5      n X4RJ                  -  (       a  U U[        RL                  " UU5      [        RL                  " U R,                  U R.                  5      -
  -
  [        RL                  " U U-  U5      [        RL                  " U U RN                  -  U RP                  5      -
  -   -  OP[        RL                  " UU RP                  -  UU RN                  -  -
  UU RP                  -  UU RN                  -  -   5      n!U!U RR                  UUR                  SUUU RT                  5      U RV                  -
  -   -  -   n"[        RX                  " U"5      n#X4RJ                  -  (       a  U RZ                  U#-   OJ[        R\                  " [        R\                  " U RZ                  5      [        R\                  " U#5      -   5      nX4R^                  -  (       a$  [        R`                  " UU Rb                  U-  5      nX4Rd                  -  (       a  [        R`                  " UU5      nX4R:                  UR<                  -  -  (       Ga`  UR                  SUUU Rf                  5      n$SU Rh                  -   U$U Rj                  -
  -  n%U R                  U Rh                  -
  U-  UU%-
  -   n&X4R:                  -  (       aO  U R                  UU R.                  U-  -  U Rl                  U R,                  U-  -  -
  U R.                  U-  U&-  -
  -  n
X4R<                  -  (       a  U R4                  UU R,                  -
  -  UU R,                  -   -  U Rl                  U-   -  n'UU'U-  UU&-  -
  U R,                  -  U Rl                  -  -   nUU'U R,                  -  U R.                  U&-  -
  U-  U-  -
  nX4Rn                  -  (       Gav  UR                  SUUU Rp                  5      n(U R>                  S:X  d  U RB                  S:X  a?  UU Rr                  -  UU Rt                  -  -
  n)UU Rr                  -  UU Rt                  -  -   n*OU R>                  U RB                  -  US::  a"  U R.                  SU-
  -  UU R,                  -  -   O$UU R.                  U-  SU-   -  U R,                  -   -  -  n)[        R6                  " U RB                  5      [        R6                  " U R>                  5      U R.                  -  U-  -   n*U Rv                  [        RL                  " U)U*5      -  U Rx                  U(U Rz                  -
  -  -   nU(       a  UO[        RX                  " U5      nXVXxXXU4	$ )z4Private: General solution of position along geodesicr   r	   g        r   Tg{Gz?F)>r   r
   r   rX   r   OUT_MASKDISTANCE_INradiansr   r   r   r3   isfiniter;   r<   r9   r=   r>   rA   r:   absr   r,   r.   r7   r%   r0   r'   DISTANCEREDUCEDLENGTHGEODESICSCALEr+   r*   r)   r$   	LONGITUDEcopysignr   atan2r-   r/   rO   rL   rP   degreesr   r   r   atan2dr   r   rG   rE   rI   r(   AREArS   r!   r    r   rV   rW   )+r[   arcmodes12_a12outmaskr
   a12lat2lon2azi2s12m12M12M21S12B12AB1sig12ssig12csig12tau12r`   ra   ssig2csig2serrdn2sbet2cbet2salp2calp2somg2comg2Eomg12lam12lon12B22AB2J12tB42salp12calp12s+                                              rb   _GenPositionGeodesicLine._GenPosition   sC   /=AXXECE$EEEsESE3Eyy8,,,,GYY(++h.B.BBCCc;; CSsll7#e||G,nff A

N34e}}U++ee
((5/atxx1$$T$(KK!OdkkAo$E$(KK!OdkkAo$E$(JJ0 0c sYY'exxf%	TVVt	, f$t{{V';;f$t{{V';;$$T5%CTZZES99_$=>''!"tyyTXX-F)FGGG%488E?& KK& 4;;#77EKK& 4;;#77E
))A4775>11
2C(00083I3IIK	CK$&$$T5%C^ii0cKK%EJJt{{DKK%$78Eznn$eeKKEu!4""":ADGGDJJ%/#56wc####kkE!e55
--4;;
'a 000 EzzE?zzdkk4;;?@A zz!E/?zz!dkk/4;;?@A B JJut{{2UT[[5HH$t{{2UT[[5HHJ  dii''eUDIIF99 	 e ll5!e#*-A-A#Adii% 1 1$)) < $ 1 1% 8!9 :  """[[5 01d!!![[&d((8+A+AABB""4tyyAc^dii0cZZ$**$-s;c	))	) ggt{{U': ;))t{{U':;!<;;.45 6 
))	)XX,-dkk!#&*ii#o7E	ECK/4;;>JJDKK$++*;;uDsJJ""5%		Bc		T[[A-#edjj&88#edjj&88 t{{*?E{$++V
$v';
;v-V<t{{JKM ''$++&''$++&4u<=XX

6622XXtyy)*c '$,,u"5Cd#Cc99re   c           	      2   SSK Jn  U R                  X#R                  -  (       a  U R                  O[
        R                  " U R                  5      U R                  US.nU R                  SX5      u	  pVpxppnX#R                  -  nXTS'   X#R                  -  (       a  XdS'   X#R                  -  (       a  XtS'   X#R                  -  (       a  XS'   X#R                  -  (       a  XS	'   X#R                  -  (       a  XS
'   XS'   X#R                  -  (       a  XS'   U$ )a  Find the position on the line given *s12*

:param s12: the distance from the first point to the second in
  meters
:param outmask: the :ref:`output mask <outmask>`
:return: a :ref:`dict`

The default value of *outmask* is STANDARD, i.e., the *lat1*,
*lon1*, *azi1*, *lat2*, *lon2*, *azi2*, *s12*, *a12* entries are
returned.  The :class:`~geographiclib.geodesicline.GeodesicLine`
object must have been constructed with the DISTANCE_IN capability.

r   r	   )r   r   r   r|   Frx   ry   rz   r{   r}   r~   r   r   )r   r
   r   r   r   r   r   r   r   rg   r   ro   r   rm   rn   rt   )r[   r|   rw   r
   resultrx   ry   rz   r{   r}   r~   r   r   s                rb   PositionGeodesicLine.PositionV  s     0ii#*-A-A#Adii		*ii-F 6:5F5FS62Ct3Ss   G5M"""T6N###dF^!!!D&>''''''Um3%=uMre   c           	      X   SSK Jn  U R                  X#R                  -  (       a  U R                  O[
        R                  " U R                  5      U R                  US.nU R                  SX5      u	  ppgppnX#R                  -  nX#R                  -  (       a  XS'   X#R                  -  (       a  XTS'   X#R                  -  (       a  XdS'   X#R                  -  (       a  XtS'   X#R                  -  (       a  XS	'   X#R                  -  (       a  XS
'   XS'   X#R                   -  (       a  XS'   U$ )aO  Find the position on the line given *a12*

:param a12: spherical arc length from the first point to the second
  in degrees
:param outmask: the :ref:`output mask <outmask>`
:return: a :ref:`dict`

The default value of *outmask* is STANDARD, i.e., the *lat1*,
*lon1*, *azi1*, *lat2*, *lon2*, *azi2*, *s12*, *a12* entries are
returned.

r   r	   )r   r   r   rx   Tr|   ry   rz   r{   r}   r~   r   r   )r   r
   r   r   r   r   r   r   r   rg   rl   r   ro   r   rm   rn   rt   )r[   rx   rw   r
   r   ry   rz   r{   r|   r}   r~   r   r   s                rb   ArcPositionGeodesicLine.ArcPositionw  s     0ii#*-A-A#Adii		*ii-F 6:5F5F
C62Ct3Ss   G"""C5M"""T6N###dF^!!!D&>''''''Um3%=uMre   c           
      h    Xl         U R                  SU R                   S5      u	  U l                      ng)znSpecify the position of point 3 in terms of distance

:param s13: distance from point 1 to point 3 in meters

Fr   N)rY   r   rZ   )r[   rY   _s      rb   SetDistanceGeodesicLine.SetDistance  s6     H'+'8'8!'L$DHaAq!Q1re   c           	          SSK Jn  Xl        U R                  SU R                  UR                  5      u	        o0l              ng)z}Specify the position of point 3 in terms of arc length

:param a13: spherical arc length from point 1 to point 3 in degrees

r   r	   TN)r   r
   rZ   r   rl   rY   )r[   rZ   r
   r   s       rb   SetArcGeodesicLine.SetArc  sA     0H'+'8'8txx9A9J9J(L$Aq!Q!Q1re   )$r3   rE   rO   rV   r:   rI   rP   rW   r7   rA   rG   rL   rS   r   r   r+   r/   r.   r>   r(   r   r0   r)   r-   r,   r=   r   rZ   r   r!   r   r   r   r   rY   r    N)__name__
__module____qualname____firstlineno____doc__r   STANDARDrh   r   rX   rc   r   r   r   r   r   __static_attributes__ re   rb   r   r   ?   sh    ! )11!--.xxxKvW:r %7$?$? B (:'B'B @M
Lre   r   )r   r   geographiclib.geomathr    geographiclib.geodesiccapabilityr   r   r   re   rb   <module>r      s$   &t  & ?lL lLre   