
    R1i$                        d dl Z d dlmZmZ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 d dlmZmZ d dlmZmZmZ 	 d d	lmZ  ed       d Zd Zd Zd Zd Zd Z 	 d+dZ! eddd      Z"dZ# ejH                         jK                  d      Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5d( Z6d) Z7d* Z8y#  d d
lmZ Y xY w),    N)piseterrlinspace)load)GM_SUN_Pitjeva_2005_km3_s2)mpc)_KeplerOrbit	propagate_CONVERT_GM)compare
ele_to_vec)AngleDistanceVelocity)BytesIO)StringIOraise)allc                  d   t        j                         } | j                  d      }d}d}|d||z  z
  z  }t        j                  ||dddd|t
        d d 	
      }|j                  |      d d
 \  }}g d}g d}	t        d      j                  }
t        ||z   |	z
        j                         |
k  sJ y )Ng   @BAgsMU&@gàh?   gpAo/;@g`r\7@gA皯`@gPHa@)
semilatus_rectum_aueccentricityinclination_degrees#longitude_of_ascending_node_degreesargument_of_perihelion_degreesmean_anomaly_degreesepoch	gm_km3_s2centertarget   )g6DWpgKC{?g@y7h?)gDܦ[?gqh}kg~'CgMbP?)m)r   	timescaletdb_jdKeplerOrbit_from_mean_anomalyGM_SUN_atr   auabsmax)tstaep_aukrvsun_auhorizons_auepsilons              a/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_keplerlib.pytest_against_horizonsr8      s     
	B
		#$AAAAaC=D&& 1,A'<2	A 558BQ<DAqFK ""Gq6zK'(,,.888    c                  L   d} t        j                         }|j                  ddd      }t        d      }t        j                  t        |             }|j                  d   }|j                  dk(  sJ |j                  dk(  sJ t        j                  ||t              }|d	   j                  |      j                  |d
   |z         j                         \  }}}	|j                  dk(  sJ t        |j                   dz
        dk  sJ t        |j"                  dz
        dk  sJ y )Ns   00001    3.4   0.15 K205V 162.68631   73.73161   80.28698   10.58862  0.0775571  0.21406009   2.7676569  0 MPO492748  6751 115 1801-2019 0.60 M-v 30h Williams   0000      (1) Ceres              20190915
        	de421.bspr   00001z	(1) Ceresearthsungio$7@g-C6
?g R1Mb@?)r   r#   utcr   load_mpcorb_dataframer   ilocdesignation_packeddesignationmpcorb_orbitr'   atobserveradecr    r*   hoursdegrees
textr,   r-   ephdfrowceresradecdistances
             r7   !test_minor_planet_with_positive_MrW   7   s   1D
 
	B
tQA
{
C		"	"74=	1B
''!*C!!W,,,??k)))S"f-EG*223u:3EFLLNBX<<;&&&rxx'!"W,,,s{{W$%...r9   c                  L   d} t        j                         }|j                  ddd      }t        d      }t        j                  t        |             }|j                  d   }|j                  dk(  sJ |j                  dk(  sJ t        j                  ||t              }|d	   j                  |      j                  |d
   |z         j                         \  }}}	|j                  dk(  sJ t        |j                   dz
        dk  sJ t        |j"                  dz
        dk  sJ y )Ns   00002    4.11  0.15 K221L 272.47992  310.69724  172.91658   34.92531  0.2299930  0.21366046   2.7711069  0 MPO681823  8875 119 1804-2022 0.58 M-c 28k Pan        0000      (2) Pallas             20220105i  	      r>   r   00002z
(2) Pallasr@   rA   g     0W@g~jtx?gZd;%gMb`?)r   r#   rC   r   rD   r   rE   rF   rG   rH   r'   rI   rJ   rK   r    r*   _degreesrM   rN   s
             r7   !test_minor_planet_with_negative_Mr]   M   s   /D
 
	B
tQA
{
C		"	"74=	1B
''!*C!!W,,,??l***S"f-EG*223u:3EFLLNBX <<<'''r{{V#$u,,,s{{W$%---r9   c                     d} t        j                         }|j                  ddd      }t        d      }|d   j                  |      }t        j
                  t        j                  fD ]  } |t        |             }|j                  d   }t	        j                  ||t              }|j                  |d   |z         }	|	j                         \  }
}}t        d	
      }t        d      }t        |j                         |
j                         z
        dk  sJ t        |j                         |j                         z
        dk  sJ t        |j                   dz
        dk  sJ |j"                  dk(  rJ  y )Ns       CJ95O010  1997 03 29.6333  0.916241  0.994928  130.6448  283.3593   88.9908  20200224  -2.0  4.0  C/1995 O1 (Hale-Bopp)                                    MPC106342
r;         r>   r@   r   rA   )   ;   g0@)rL   )i.   :   )rM   g       @皙?g5^IE@rB   zC/1995 O1 (Hale-Bopp))r   r#   rC   rI   r   load_comets_dataframeload_comets_dataframe_slowr   rE   comet_orbitr'   rJ   rK   r   r*   
arcsecondsr)   r    )rO   r,   r-   rP   r/   loaderrQ   rR   r1   prT   rU   rV   ra_wantdec_wants                  r7   
test_cometrn   e   sJ   ?D 
	B
tQA
{
CGA++S-K-KKGDM"ggajOOCV,IIc%j1n%GGIC n-/7%%'"--/9:S@@@8&&(3>>+;;<sBBB8;;'(6111xx2222# Lr9   c                  *   t        j                         } | j                  ddd      }t        d      }|d   |d   }}d}t        |      5 }t	        j
                  |      }d d d        |d   d	k(     }t	        j                  |j                  d
   | t              }|j                  |      j                  ||z         j                         \  }	}
}t        |	      j                  d      sJ t        |
      j                  d      sJ y # 1 sw Y   xY w)Nr;         r>   r@   rA   s       CK15A020  2015 08  1.8353  5.341055  1.000000  208.8369  258.5042  109.1696            10.5  4.0  C/2015 A2 (PANSTARRS)                                    MPC 93587rG   zC/2015 A2 (PANSTARRS)r   z18h 46m 46.4z-72deg 05' 33.)r   r#   rC   r   r   rf   rh   rE   r'   rI   rJ   rK   str
startswith)r,   r-   planetsr@   rA   datafrQ   cometrT   rU   rV   s               r7   +test_comet_with_eccentricity_of_exactly_onerx      s    		B
tQA;G!75>3E=D 
!&&q) 
 
B}!88	9BOOBGGAJF3E++C%K8>>@BX r7n---s8/000 
s   
D		Dc                     t         j                  j                  t         j                  j                  t              d|       S )Nru   )ospathjoindirname__file__)filenames    r7   
_data_pathr      s&    77<<168DDr9   c           	         t        | |||||t              \  }}t        ||dt        t              \  }}t	        t        |      t        |      t        t        t        z        }|j                  }|r!t        | |j                  j                  |       |rt        ||j                  |       |r#t        ||j                  j                  |d       |	r#t        ||j                   j                  |	d       |
r#t        ||j"                  j                  |
d       |r$t        ||j$                  j                  |d       y y )Nr   )km)km_per_s)	mu_au3_d2T)mod)r   mur
   timesr%   r   r   
dummy_timer   elements_at_epochr   semi_latus_rectumr   r   inclinationradianslongitude_of_ascending_nodeargument_of_periapsistrue_anomaly)rk   r/   iOmwr3   p_epse_epsi_epsOm_epsw_epsv_epspos0vel0pos1vel1orbiteles                     r7   check_orbitr      s    Aq!RAr2JD$4q%4JD$D)8T+BJZ\]hZhiE

!
!Cga..1159ga))51ga00%TBwr3::BBFPTUga22::EtLga))115dCur9   g   vH7g   vH7Bi  g 'Ai  c                  .    t        dddddddddd
       y 	N r         ?r   {Gz?:0yE>V瞯<
rk   r/   r   r   r   r3   r   r   r   r   r    r9   r7   test_circularr      s     &AQ!$eECr9   c                  ,    t        ddddddddd	       y Nr   r   r   r   r   r   )	rk   r/   r   r   r   r3   r   r   r   r   r   r9   r7   test_circular_equatorialr      s    &AqA$e5r9   c                  4    t        ddt        dddddd	       y r   r   r   r   r9   r7   #test_circular_retrograde_equatorialr      s    &AQ!$e5r9   c                  <    t        ddt        dz  ddddddd
       y )	Nr   r   r!   r   r   r   r   r   r   r   r9   r7   test_circular_polarr      s$    &AA!qA$eECr9   c                  .    t        dddddddddd
       y r   r   r   r9   r7   'test_circular_non_zero_arg_of_periapsisr      s     &AR1$eECr9   c                  0    t        ddddddddd	d	d
       y )Nr   333333?r   r      r_   r   r   r   Hz>rk   r/   r   r   r   r3   r   r   r   r   r   r   r   r9   r7   test_ellipticalr      "    &B!Q!$eEOr9   c                  0    t        ddddddddddd	
       y )Nr   r   r   r   r_   r   r   r   r   r   r   r   r9   r7   test_elliptical_equatorialr      r   r9   c                  8    t        ddt        dddddddd	
       y )Nr   r   r   r   r_   r   r   r   r   r   r   r   r9   r7   %test_elliptical_retrograde_equatorialr      s"    &B"a1$eEOr9   c                  >    t        ddt        dz  dddddddd	       y )
Nr   re   r!   r      r   r   r   r   r   r   r9   r7   test_elliptical_polarr      s&    &B"Q$1Q$eEOr9   c                  0    t        ddddddddddd	       y )
Nr   r   r   r   r   h㈵>+=vIh%<=r   r   r   r9   r7   test_parabolicr      "    &AqA%uU%Qr9   c                  0    t        ddddddddddd	       y 
Nr   r   r   r!   r   r   r   r   r   r   r   r9   r7   test_parabolic_equatorialr      r   r9   c                  8    t        ddt        dddddddd	       y r   r   r   r9   r7   $test_parabolic_retrograde_equatorialr      s"    &AQ!%uU%Qr9   c                  >    t        ddt        dz  dddddddd       y )	Nr   r   r!   r   r   r   r   r   r   r   r9   r7   test_parabolic_polarr      s&    &AA!qA%uU%Qr9   c                  0    t        ddddddddd	d	d
       y )Nr   ?r   r   r   r         ?ư>绽|=r   r   r   r9   r7   test_hyperbolicr      "    &C1a2U5Nr9   c                  0    t        ddddddddddd	       y )
Nr   r   r   r   r   r   r   r   r   r   r   r9   r7   test_hyperbolic_equatorialr      r   r9   c                  8    t        ddt        ddddddd	d
       y )Nr   r   r   r   r   r   r   r   g&.>r   r   r   r9   r7   %test_hyperbolic_retrograde_equatorialr      s"    &C2!qBU4tMr9   c                  >    t        ddt        dz  dddddddd	       y )
Nr   r   r!   r   r   r   r   r   r   r   r   r9   r7   test_hyperbolic_polarr     s&    &C2a4AbU5Nr9   c                  .    t        dddddddddd	

       y )Nr   r   r   r   r_   r   r   r   r   )
rk   r/   r   r   r   r3   r   r   r   r   r   r   r9   r7   4test_equatorial_non_zero_longitude_of_ascending_noder   	  s     &B!Q!$e4Ar9   )NNNNNN)9rz   numpyr   r   r   skyfield.apir   skyfield.constantsr   r'   skyfield.datar   skyfield.keplerlibr	   r%   r
   r   skyfield.tests.test_elementslibr   r   skyfield.unitsr   r   r   ior   r   r8   rW   r]   rn   rx   r   r   r   r   r#   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r7   <module>r      s   	 & &  C  R R ? 4 4- 7 !9F/,.03:14E TXD" 	d#T^^!!$'
C
5
5
C
C
O
O
O
O
Q
Q
Q
Q
N
N
M
N
Ay-,s   C C