-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconstants.py
1050 lines (957 loc) · 61.5 KB
/
constants.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Constants Module
# Import necessary libraries
import numpy as np
from datetime import datetime, timedelta
DEFAULT_MARKER_SIZE = 6
HORIZONS_MAX_DATE = datetime(2199, 12, 29, 0, 0, 0)
CENTER_MARKER_SIZE = 10 # For central objects like the Sun
LIGHT_MINUTES_PER_AU = 8.3167 # Approximate light-minutes per Astronomical Unit
# Orbital parameters for planets and dwarf planets
planetary_params = {
'Mercury': {
'a': 0.387098, # semi-major axis in AU
'e': 0.205630, # eccentricity
'i': 7.005, # inclination in degrees
'omega': 29.124, # argument of perihelion in degrees
'Omega': 48.331 # longitude of ascending node in degrees
},
'Venus': {
'a': 0.723332,
'e': 0.006772,
'i': 3.39471,
'omega': 54.884,
'Omega': 76.680
},
'Earth': {
'a': 1.000000,
'e': 0.016710,
'i': 0.00005,
'omega': 114.207,
'Omega': -11.26064
},
'Mars': {
'a': 1.523679,
'e': 0.093400,
'i': 1.850,
'omega': 286.502,
'Omega': 49.558
},
'Jupiter': {
'a': 5.204267,
'e': 0.048498,
'i': 1.303,
'omega': 273.867,
'Omega': 100.464
},
'Saturn': {
'a': 9.582486,
'e': 0.054150,
'i': 2.485,
'omega': 339.392,
'Omega': 113.665
},
'Uranus': {
'a': 19.191263,
'e': 0.047318,
'i': 0.773,
'omega': 96.998857,
'Omega': 74.006
},
'Neptune': {
'a': 30.068963,
'e': 0.008678,
'i': 1.770,
'omega': 276.336,
'Omega': 131.784
},
'Pluto': {
'a': 39.482117,
'e': 0.248808,
'i': 17.16,
'omega': 113.834,
'Omega': 110.299
},
# Dwarf Planets
'Ceres': {
'a': 2.7675,
'e': 0.076,
'i': 10.593,
'omega': 73.597,
'Omega': 80.393
},
'Haumea': {
'a': 43.13,
'e': 0.191,
'i': 28.20,
'omega': 240.20,
'Omega': 122.10
},
'Makemake': {
'a': 45.79,
'e': 0.159,
'i': 28.01,
'omega': 294.834,
'Omega': 79.382
},
'Eris': {
'a': 67.78,
'e': 0.441,
'i': 44.03,
'omega': 150.977,
'Omega': 35.873
},
'Quaoar': {
'a': 43.325,
'e': 0.0392,
'i': 8.34,
'omega': 157.631,
'Omega': 188.809
},
'Sedna': {
'a': 506.0,
'e': 0.854,
'i': 12.0,
'omega': 311.286,
'Omega': 144.546
},
'OR10': { # 2007 OR10, now officially named Gonggong
'a': 67.485, # semi-major axis in AU
'e': 0.503828, # eccentricity
'i': 30.942, # inclination in degrees
'omega': 207.669, # argument of perihelion in degrees
'Omega': 336.864 # longitude of ascending node in degrees
},
'Orcus': {
'a': 39.419, # semi-major axis in AU
'e': 0.226701, # eccentricity
'i': 20.573, # inclination in degrees
'omega': 72.400, # argument of perihelion in degrees
'Omega': 268.457 # longitude of ascending node in degrees
},
'Ixion': {
'a': 39.648, # semi-major axis in AU
'e': 0.242419, # eccentricity
'i': 19.636, # inclination in degrees
'omega': 300.273, # argument of perihelion in degrees
'Omega': 71.031 # longitude of ascending node in degrees
},
'MS4': { # 2002 MS4
'a': 41.987, # semi-major axis in AU
'e': 0.145843, # eccentricity
'i': 17.698, # inclination in degrees
'omega': 158.428, # argument of perihelion in degrees
'Omega': 113.499 # longitude of ascending node in degrees
},
'Varuna': {
'a': 42.947, # semi-major axis in AU
'e': 0.051739, # eccentricity
'i': 17.200, # inclination in degrees
'omega': 97.286, # argument of perihelion in degrees
'Omega': 97.286 # longitude of ascending node in degrees
},
'GV9': { # 2004 GV9
'a': 41.837, # semi-major axis in AU
'e': 0.083043, # eccentricity
'i': 21.963, # inclination in degrees
'omega': 292.562, # argument of perihelion in degrees
'Omega': 173.559 # longitude of ascending node in degrees
},
# Asteroids
'Vesta': {
'a': 2.3617,
'e': 0.089,
'i': 7.155,
'omega': 151.216,
'Omega': 103.851
},
'Bennu': {
'a': 1.126391, # semi-major axis in AU
'e': 0.203745, # eccentricity
'i': 6.035, # inclination in degrees
'omega': 66.223, # argument of perihelion in degrees
'Omega': 2.061 # longitude of ascending node in degrees
},
'Šteins': {
'a': 2.363, # semi-major axis in AU
'e': 0.146, # eccentricity
'i': 9.944, # inclination in degrees
'omega': 250.97, # argument of perihelion in degrees
'Omega': 55.39 # longitude of ascending node in degrees
},
'Apophis': {
'a': 0.922583, # semi-major axis in AU
'e': 0.191481, # eccentricity
'i': 3.331, # inclination in degrees
'omega': 126.394, # argument of perihelion in degrees
'Omega': 204.061 # longitude of ascending node in degrees
},
'Eros': {
'a': 1.458040, # semi-major axis in AU
'e': 0.222868, # eccentricity
'i': 10.829, # inclination in degrees
'omega': 178.817, # argument of perihelion in degrees
'Omega': 304.435 # longitude of ascending node in degrees
},
'Ryugu': {
'a': 1.189562, # semi-major axis in AU
'e': 0.190349, # eccentricity
'i': 5.884, # inclination in degrees
'omega': 211.421, # argument of perihelion in degrees
'Omega': 251.617 # longitude of ascending node in degrees
},
'Itokawa': {
'a': 1.324163, # semi-major axis in AU
'e': 0.280164, # eccentricity
'i': 1.622, # inclination in degrees
'omega': 162.767, # argument of perihelion in degrees
'Omega': 69.095 # longitude of ascending node in degrees
},
}
parent_planets = {
'Moon': 'Earth',
'Phobos': 'Mars',
'Deimos': 'Mars',
'Io': 'Jupiter',
'Europa': 'Jupiter',
'Ganymede': 'Jupiter',
'Callisto': 'Jupiter',
'Titan': 'Saturn',
'Enceladus': 'Saturn',
'Rhea': 'Saturn',
'Dione': 'Saturn',
'Tethys': 'Saturn',
'Mimas': 'Saturn',
'Phoebe': 'Saturn',
'Miranda': 'Uranus',
'Ariel': 'Uranus',
'Umbriel': 'Uranus',
'Titania': 'Uranus',
'Oberon': 'Uranus',
'Triton': 'Neptune',
'Charon': 'Pluto',
'Nix': 'Pluto',
'Hydra': 'Pluto'
}
# Mapping of SIMBAD object types to full descriptions
object_type_mapping = {
'Ae*': 'A-type Star with emission lines',
'AGB*': 'Asymptotic Giant Branch Star',
'alf2CVnV': 'Variable Star',
'alf2CVnV*': 'Variable Star',
'AM*': 'AM Herculis-type Variable Star',
'BD*': 'Brown Dwarf',
'Be*': 'Be Star. Spectral type of B. Emission lines in its spectrum<br> '
'indicate the presence of hot, glowing gas around the star.',
'BlueSG': 'Blue Supergiant Star',
'BlueSG*': 'Blue Supergiant Star',
'BlueStraggler': 'Blue Straggler Star',
'BlueStraggler*': 'Blue Straggler Star',
'BrownD*': 'Brown Dwarf',
'BY*': 'BY Draconis-type Variable Star',
'C*': 'Carbon Star. While they don\'t fit into the main sequence OBAFGKM classification, carbon stars have their own<br>'
'distinct spectral characteristics and evolutionary path.<br>'
'* Strong carbon absorption lines: Carbon stars are characterized by strong absorption bands of carbon molecules<br>'
' (like C2 and CN) in their spectra. This gives them a distinctly reddish appearance, often described as ruby red or deep orange.<br>'
'* More carbon than oxygen: Unlike most stars (like our Sun), where oxygen is more abundant than carbon, carbon stars<br>'
' have an excess of carbon in their atmospheres. This excess carbon forms those characteristic carbon molecules.<br>'
'* Asymptotic giant branch (AGB) stars: Most carbon stars are evolved stars on the asymptotic giant branch (AGB). These<br>'
' are stars that have exhausted the hydrogen fuel in their core and have gone through a phase of helium fusion.<br>'
'* Dredge-ups: During the AGB phase, these stars experience "dredge-ups" where carbon from the interior is brought to the<br>'
' surface by convection currents. This is what leads to the excess carbon in their atmospheres.<br>'
'* Classical carbon stars: These are the most common type, typically red giants on the AGB.<br>'
'* Non-classical carbon stars: These are less common and can be found in different evolutionary stages. They may have<br>'
' formed their excess carbon through mass transfer from a binary companion.<br>'
'* Stellar evolution: Carbon stars provide valuable insights into the late stages of stellar evolution and the processes<br>'
' that occur in aging stars.<br>'
'* Nucleosynthesis: They play a role in the production of heavier elements in the universe, as some of the carbon they produce<br>'
' is eventually ejected into space through stellar winds.<br>'
'* Unique appearance: Their deep red color makes them stand out in the night sky.',
'Ce*': 'Classical Cepheid Variable Star',
'Cepheid': 'Cepheid Variable Star',
'Cepheid*': 'Cepheid Variable Star',
'ChemPec*': 'Chemically Peculiar Star',
'ClassicalCep': 'Classical Cepheid Variable Star',
'ClassicalCep*': 'Classical Cepheid Variable Star',
'dS*': 'Delta Scuti-type Variable Star',
'DQ*': 'Degenerate Star of type DQ',
'EclBin': 'Eclipsing Binary Star System',
'EllipVar': 'Ellipsoidal Variable Star',
'EllipVar*': 'Ellipsoidal Variable Star',
'EmLine*': 'Emission Lines Star',
'Eruptive*': 'Eruptive Variable Star',
'Fl*': 'Flare Star',
'HB*': 'Horizontal Branch Star',
'HighMassXBin': 'High-Mass X-ray Binary system',
'HighPM': 'High Proper-Motion Star',
'HighPM*': 'High Proper-Motion Star',
'HorBranch*': 'Horizontal Branch star',
'Inexistent': 'Inexistent/Non-standard Classification',
'Infrared': 'Infrared Object',
'LongPeriodV': 'Variable Star',
'LongPeriodV*': 'Variable Star',
'Low-Mass*': 'Low-Mass Star',
'LowMassXBin': 'Low-Mass X-ray Binary',
'LP*': 'Long-period Variable Star',
'MainSequence*': 'A main sequence star is like the "adult" phase in the life of a star.<br> '
'It\'s the stage where a star spends most of its existence, shining steadily and fusing hydrogen<br> '
'into helium in its core. Our Sun is a perfect example of a main-sequence star. It generates<br> '
'energy through nuclear fusion of hydrogen into helium in its core. This process releases enormous<br> '
'amounts of energy, which powers the star\'s luminosity. The outward pressure from this energy<br> '
'production balances the inward force of gravity, keeping the star stable and in equilibrium. Main<br> '
'sequence stars can have a wide range of masses, from about 0.08 times the mass of the Sun to<br> '
'around 200 times the Sun\'s mass. More massive stars are hotter and bluer, while less massive<br> '
'stars are cooler and redder. More massive stars are much more luminous than less massive stars. <br> '
'Massive stars burn through their fuel quickly and have short lifespans, while low-mass stars<br> '
'can shine for billions or even trillions of years. Main sequence stars make up about 90% of all<br> '
'A main sequence star is a star in its prime, steadily fusing hydrogen and shining brightly.',
'Mira': 'Mira Variable Star',
'Mira*': 'Mira Variable Star',
'N*': 'Nova',
'No*': 'Nova-like Star',
'OH/IR*': 'OH/IR star',
'PM*': 'High Proper-Motion Star',
'post-AGB*': 'Post-asymptotic Giant Branch Star',
'Pulsar': 'Pulsar',
'RedSG': 'Red Supergiant Star',
'RedSG*': 'Red Supergiant Star',
'RGB*': 'Red Giant Branch Star. Low- to intermediate-mass stars, like our Sun.<br> '
'RGB stars have already finished fusing hydrogen into helium in their cores.<br> '
'This marks the end of their main-sequence lifetime. They have a non-fusing)<br> '
'helium core surrounded by a shell where hydrogen fusion continues. When the<br> '
'core hydrogen is depleted, the core contracts and heats up, and the star\'s<br> '
'outer layers expand dramatically. This expansion causes the star\'s surface<br> '
'temperature to cool, radiating a reddish color. The star becomes much more<br> '
'luminous overall due to its increased size. This process moves the star off<br> '
'the main sequence and onto the subgiant branch and then into the red giant<br> '
'Eventually, the core becomes hot and dense enough to ignite helium fusion.<br> '
'This leads to horizontal or the asymptotic giant branch. Ultimately, the<br> '
'star\'s core will become a white dwarf, a small, dense remnant.',
'RR*': 'RR Lyrae-type Variable Star',
'RRLyrae_Candidate': 'RR Lyrae-type Variable Star Candidate',
'RRLyrae_Candidate*': 'RR Lyrae-type Variable Star Candidate',
'S*': 'Symbiotic Star',
'SB*': 'Spectroscopic Binary Star. A type of binary star system<br> '
'that can only be identified by analyzing its light spectrum.',
'SN*': 'Supernova',
's*r': 'Supergiant Star',
'Star': 'Star',
'Supergiant': 'Supergiant Star',
'Supergiant*': 'Supergiant Star',
'Symbiotic*': 'Symbiotic Star',
'TTauri*': 'T Tauri Star',
'Type2Cep': 'Type II Cepheid variable star',
'Type2Cep*': 'Type II Cepheid variable star',
'V*': 'Variable Star',
'Variable*': 'Variable Star',
'WD*': 'White Dwarf',
'WhiteDwarf': 'White Dwarf',
'WhiteDwarf*': 'White Dwarf',
'WolfRayet*': 'Wolf-Rayet Star',
'WV*': 'Wolf-Rayet Star',
'XrayBin': 'X-ray Binary System',
'YellowSG': 'Yellow Supergiant Star',
'Y*O': 'Young Stellar Object',
'YSO': 'Young Stellar Object',
'YSO_Candidate': 'Young Stellar Object Candidate',
'**': 'Unknown/Unclassified',
# Add other specific codes observed in data as needed
}
class_mapping = {
'I': 'Supergiant. The largest and most luminous stars, often nearing the end of their lives.',
'II': 'Bright giant. Luminous stars that are smaller and less massive than supergiants.',
'III': 'Giant. Stars that have evolved off the main sequence and expanded significantly.',
'IV': 'Subgiant. Stars that are transitioning between the main sequence and the giant phase.',
'V': 'Main-sequence. Stars in the prime of their lives, fusing hydrogen into helium in their cores.',
'VI': 'Subdwarf. Stars that are smaller and less luminous than main-sequence stars of the same temperature.',
'VII': 'White dwarf. The small, dense remnants of low- to medium-mass stars after they have exhausted their nuclear fuel.',
}
hover_text_sun_and_corona = (
'<b>The Sun and Its Atmosphere</b><br><br>'
'Visualization shows three main layers:<br>'
'* Photosphere (surface): radius 0.00465 AU, ~6,000K<br>'
'* Inner Corona: extends to 1.3 to 3 solar radii, >2,000,000K<br>'
'* Outer Corona: extends to 10 to 50 solar radii, ~1,000,000K<br><br>'
'Parker Solar Probe\'s closest approach: 8.8 solar radii<br><br>'
'The solar corona\'s range, especially in terms of solar radii, varies significantly between periods of low and maximum<br>'
'solar activity. Here\'s a breakdown of the inner and outer corona\'s extent:<br>'
'* The inner corona is the region closest to the Sun\'s surface, extending outward from the photosphere or chromosphere.<br>'
' It\'s characterized by high temperatures, intense magnetic fields, and dense plasma. The inner corona typically<br>'
' extends to about 1.3 to 3 solar radii (Rs) from the center of the Sun. This is a relatively consistent range that<br>'
' doesn\'t change dramatically with solar activity. However, the structures within the inner corona, such as coronal<br>'
' loops and streamers, will vary in size, shape, and number.<br>'
'* The outer corona is the very extended, tenuous region of the solar atmosphere that gradually merges with the solar<br>'
' wind. It\'s less dense and cooler than the inner corona, but still incredibly hot compared to the Sun\'s surface.<br>'
' The outer corona is much more variable. During solar minimum, the Sun\'s magnetic field is relatively simpler and<br>'
' more dipole-like. The outer corona is less extended, typically reaching out to around 5-10 Rs. It is often<br>'
' characterized by large, dark coronal holes at the poles and bright, elongated streamers near the equator. During<br>'
' solar maximum, the Sun\'s magnetic field is highly complex and dynamic. The outer corona becomes much more extended<br>'
' structured, reaching out to 20 Rs or even further in some cases. It is filled with numerous complex loops, streamers,<br>'
' and active regions.'
'The corona exhibits an unusual temperature inversion, with the outer atmosphere being much hotter '
'than the surface.<br>This "coronal heating problem" is one of the key mysteries being studied by '
'Parker Solar Probe.<br><br>'
'Marker sizes and transparencies are scaled to represent the actual extent of each layer.'
)
hover_text_sun = (
'<b>Sun</b><br>'
'Note: The Sun, our very own star, is a massive ball of hot plasma that sits at the center of our solar system.<br> '
'It\'s the source of all life and energy on Earth, so I\'ve colored it chlorophyll green in our plot!<br> '
'* Type: A yellow dwarf star (G-type main-sequence star).<br> '
'* Age: About 4.6 billion years old, and is expected to continue its current phase for about 5 billion years<br> '
'more, then evolve into a Red Giant.<br> '
'* Diameter: Roughly 1.4 million kilometers (865,000 miles), about 109 times the diameter of Earth.<br> '
'* Mass: About 333,000 times the mass of Earth<br> '
'* Composition: Primarily hydrogen (about 73%) and helium (about 25%), with trace amounts of other elements.<br> '
'* Surface Temperature: 5778 K, around 5,500 degrees Celsius, or 10,000 degrees Fahrenheit<br> '
'* Core Temperature: Around 15 million degrees Celsius (27 million degrees Fahrenheit)<br> '
'* Stellar Class: Main-sequence. Stars in the prime of their lives, fusing hydrogen into helium in their cores.<br> '
'* Absolute Magnitude: 4.83<br> '
'* Spectral Type: G2V<br> '
'* Object Type: Star<br> '
'The Sun is composed of several layers:<br> '
'* Core: The innermost region where nuclear fusion occurs, converting hydrogen into helium and releasing energy.<br> '
'* Radiative Zone: Energy from the core travels outward through this zone via radiation.<br> '
'* Convective Zone: Energy is transported through this zone via convection (the movement of hot plasma).<br> '
'* Photosphere: The visible surface of the Sun.<br> '
'* Chromosphere: A thin layer above the photosphere.<br> '
'* Corona: The outermost layer, a very hot and tenuous plasma that extends millions of kilometers into space.<br> '
'Standard for comparison to other stars:<br> '
'* Luminosity: 1.000000 Lsun<br> '
'* Mass: 1.00 Msun<br> '
'* Distance: 0 pc (0 ly)<br> '
'* Plotting marker size: 14 px '
)
# Note in note_frame
note_text = (
"What's an orrery? \n\n"
"An orrery is a model of the solar system! This model attempts to display celestial and human objects in both stationary "
"and animated 3D plots over different periods of time. It uses real-time data from NASA's Jet Propulsion Laboratory's Horizon System "
"to plot actual positions of objects. In addition, complete idealized orbits of the planets, asteroids, dwarf planets, and Kuiper "
"belt objects are calculated from their orbital parameters using Kepler's equations. Explore! \n\n"
"In addition to the solar system, you can also create 2D and 3D plots of our stellar neighborhood. There are four ways to do this: "
"by distance in light-years or by brightness as apparent magnitude, and in both modes in a 2D or a 3D plot.\n\n"
"You can plot our stellar neighborhood up to 100 light-years away in 2D and 3D, with a user defined entry in light-years.\n\n"
"The other way of selecting stars is by apparent magnitude. This method also plots 2D or 3D, but the star selection is quite "
"different. Instead of seeing all stars within a certain distance from the Sun, you see all stars visible to the unaided eye up "
"to a certain apparent, or visual magnitude, meaning how bright they appear, which is a function of how luminous they are and "
"their distance from us.\n\n"
"If you click the \"Move Camera to the Center\" button, the view will move to the position of the Sun.\n\n"
"The 3D plot is just that, you will "
"see stars plotted relative to the Sun in their actual positions, up to the selected distance in light-years, or up to the selected "
"apparent magnitude, regardless of the distance. In fact, you will begin to see the shape and tilt of the galaxy! You can also "
"use a drop down menu of bright stars and Messier Objects that are plotted, which will allow you to point to that object!\n\n"
"You can also see in all plots the hovertext with the stars' information, in some cases in detail as I add it. You can toggle "
"between full hovertext information and just the star's name using the buttons, \"Full Star Info\" and \"Star Names Only\".\n\n"
"The 2D star plot is the classic Hertzprung-Russell diagram of stars plotted by "
"luminosity, or absolute magnitude, meaning how intrinsically bright the star is, and temperature, which is related to the star's "
"spectral class and color. This is a more scientific plot that reveals a lot about the "
"kind of stars they are, and their place in stellar evolution. The 2D plots can be done both by distance and apparent magnitude.\n\n"
"More on the magnitude mode: You can select the magnitude "
"you wish to plot up to apparent magnitude 9, extremely faint stars, which is what you might be able to see from space, down to -1.44, which is the "
"apparent magnitude of the brightest star in the sky, Sirius, and everything in between as explained in the hovertext.\n\n"
"One nice feature of the 3D apparent magnitude plot, is that you can also plot Messier non-stellar objects, such as nebula and "
"open clusters! You can also see the stars in their "
"familiar constellations IF viewed from the Sun's position at the center of the plot. For example, if you use the \"Move Camera to "
"Center\" button to move your view to the position of the Sun, and keep the default magnitude of 4 and select the manual scale default setting of "
"1400 light-years distance, you will see the familiar Orion constellation with M42 the Orion Nebula! You can see other constellations "
"as well if you use the menu to select bright stars in a constellation. Hint: try the alpha stars! Experiment!\n\n"
"A crucial difference between the magnitude plot and the distance plot is that some stars that are visible are extremely far away, "
"thousands of light-years, yet will still be "
"visible because of how luminous they are, such as the Blue Supergiants! "
"On the other hand, nearer, fainter stars, may not be plotted at all, for example White Dwarfs. In fact, the greater the apparent magnitude "
"that you select, you will fetch more faint stars, which are farther aways, and you will begin to see the shape and tilt of the "
"galaxy! Warning: the higher the apparent magnitude you select, the more stars you will fetch and the longer your plot will take "
"to create, up to a minute and a half at apparent magnitude 9, the limit of visibity in space, say from the Space Station.\n\n"
"If the star 3D or 2D star field gets too crowded and you wish to see more detail, reduce the light-year distance, the apparent "
"magnitude, or reduce the scale in light-years in the case of 3D apparent magnitude plots.\n\n"
"In the case of 3D plots, you can also toggle the hovertext from detailed descriptions "
"to star name only using the \"Star Names Only\" toggle button.\n\n"
"In 3D plots, to see the star field from the view point of the Sun (us!) use the \"Move Camera to Center\" button.\n\n"
"The color scales follow the color of the black body radiation associated with star temperature, in other words, the star\'s "
"actual color. The Sun is colored chlorophyll green, to set it apart in the plot and because it represents the Sun\'s life-giving light! "
"Plants have evolved to use the most abundant parts of the Sun's visible light spectrum for photosynthesis (red and blue) "
"while reflecting the green light.\n\n"
"Solar System Objects:\nThe Solar sytem object selection menu is scrollable. Select the objects to plot.\n\n"
"Data availability is limited for space missions and comets. "
"Objects will only be plotted on dates the data is available. "
"For space missions and comets, be careful to enter a start date and number of days, weeks, months or years to plot that are "
"within the timeframes of all the objects to plot to avoid plotting errors. "
"For dates beyond 2199-12-29, the Horizons system does not provide data for most objects. "
"Objects like Dwarf Planet Sedna have orbital periods that are thousands of years long so the orbit will only plot partially "
"with actual positions. Full ideal orbits estimated from their orbital parameters using Kepler\'s equations are also plotted. "
"This is also the case for Dwarf Planet Pluto!\n\n"
"The Sun is visualized in detail with all its structural sections, core, radiative zone, convective zone and photosphere, "
"chromosphere, inner corona, outer corona, and solar wind (inner limit, termination shock and heliopause). See the hovertext.\n\n"
"We also visualize the inner and outer Oort clouds, the inferred source of comets. Manually select the scale "
"at 100000 AU to see this."
"This orrery is created using data from the JPL Horizons system (https://ssd.jpl.nasa.gov/horizons/app.html#/) "
"See the hyperlink on the orrery display. "
"Ensure you have an active internet connection, as data is fetched in real-time. Be patient when fetching a lot of object positions, "
"especially non-animated plots that show actual positions. \n\n"
"J2000 Ecliptic Coordinate System:\n"
"Object positions are fetched from the JPL Horizons system, which by default provides data in the J2000 ecliptic coordinate system. "
"This is a celestial coordinate system that aligns with the plane of Earth's orbit around the Sun (the ecliptic) and is fixed "
"relative to the stars as of the epoch J2000.0 (January 1, 2000).\n\n"
"Astronomical Units (AU):\n"
"The x, y, and z coordinates are measured in Astronomical Units (AU). "
"One AU is approximately the average distance from the Earth to the Sun, about 149.6 million kilometers or 93 million miles.\n\n"
"Explore and enjoy!\n\n"
"Python programming by Tony Quintanilla with assistance from Claude, ChatGPT and Gemini AI LLMs, January 2025. "
"Contact info: \"[email protected]\"."
)
# Function to map celestial objects to colors
def color_map(planet):
colors = {
'Sun': 'rgb(102, 187, 106)', # chlorophyll green
# 'Sun': 'rgb(255, 249, 240)', # Slightly warm white to represent 6000K at the Sun's surface. The inner corona is 2M K.
'Mercury': 'rgb(128, 128, 128)', # Description: Dark Gray reflecting Mercury's rocky and heavily cratered surface.
'Venus': 'rgb(255, 255, 224)',
'Earth': 'rgb(0, 102, 204)',
'Moon': 'rgb(211, 211, 211)',
'Mars': 'rgb(188, 39, 50)',
'Phobos': 'rgb(139, 0, 0)',
'Deimos': 'rgb(105, 105, 105)',
'Ceres': 'rgb(105, 105, 105)',
'Jupiter': 'rgb(255, 165, 0)',
'Io': 'rgb(255, 140, 0)',
'Europa': 'rgb(173, 216, 230)',
'Ganymede': 'rgb(150, 75, 0)',
'Callisto': 'rgb(169, 169, 169)',
'Saturn': 'rgb(210, 180, 140)',
'Titan': 'rgb(255, 215, 0)',
'Enceladus': 'rgb(192, 192, 192)',
'Rhea': 'rgb(211, 211, 211)',
'Dione': 'rgb(255, 182, 193)',
'Tethys': 'rgb(173, 216, 230)',
'Mimas': 'rgb(105, 105, 105)',
'Phoebe': 'rgb(0, 0, 139)',
'Uranus': 'rgb(173, 216, 230)',
'Titania': 'rgb(221, 160, 221)',
'Oberon': 'rgb(128, 0, 128)',
'Umbriel': 'rgb(148, 0, 211)',
'Ariel': 'rgb(144, 238, 144)',
'Miranda': 'rgb(0, 128, 0)',
'Neptune': 'rgb(0, 0, 255)',
'Triton': 'rgb(0, 255, 255)',
'Pluto': 'rgb(205, 92, 92)',
'Charon': 'rgb(105, 105, 105)',
'Haumea': 'rgb(128, 0, 128)',
'Makemake': 'rgb(255, 192, 203)',
'Eris': 'rgb(144, 238, 144)',
'Voyager 1': 'white',
'Voyager 1 to heliopause': 'white',
'Voyager 2': 'white',
'Cassini-Huygens': 'white',
'New Horizons': 'white',
'Juno': 'white',
'Galileo': 'white',
'Pioneer 10': 'white',
'Pioneer 11': 'white',
'Europa Clipper': 'white',
'OSIRIS-REx': 'white',
'Parker Solar Probe': 'white',
'James Webb Space Telescope': 'white',
'Rosetta': 'white',
'BepiColombo': 'white',
'Oumuamua': 'rgb(218, 165, 32)',
'2024 PT5': 'rgb(255, 140, 0)',
'Apophis': 'rgb(255, 140, 0)',
'Vesta': 'rgb(240, 128, 128)',
'Bennu': 'rgb(255, 255, 224)',
'Šteins': 'rgb(30, 144, 255)', # Added Šteins' color
'Ikeya-Seki': 'rgb(218, 165, 32)',
'West': 'rgb(218, 165, 32)',
'Halley': 'rgb(218, 165, 32)',
'Hyakutake': 'rgb(218, 165, 32)',
'Hale-Bopp': 'rgb(218, 165, 32)',
'McNaught': 'rgb(218, 165, 32)',
'NEOWISE': 'rgb(218, 165, 32)',
'Tsuchinshan-ATLAS': 'rgb(218, 165, 32)',
'ATLAS': 'rgb(218, 165, 32)',
'Churyumov-Gerasimenko': 'rgb(32, 178, 170)',
'Borisov': 'rgb(64, 224, 208)',
'SOHO: Solar and Heliospheric Observatory': 'white',
'Ryugu': 'white',
'Eros': 'white',
'Itokawa': 'white',
'Chang\'e': 'white',
'Perseverance Rover': 'white',
'DART Mission': 'white',
'Lucy Mission': 'white',
'Eris\' Moon Dysnomia': 'white',
'Pluto\'s Moons Nix and Hydra': 'white',
'Gaia': 'white',
'Hayabusa2': 'white',
'Nix': 'white',
'Hydra': 'rgb(218, 165, 32)',
'Quaoar': 'rgb(244, 164, 96)',
'Sedna': 'rgb(135, 206, 235)',
'Orcus': 'rgb(0, 100, 0)',
'Varuna': 'rgb(218, 165, 32)',
'Ixion': 'rgb(218, 165, 32)',
'GV9': 'rgb(128, 0, 128)',
'MS4': 'rgb(255, 0, 0)',
'OR10': 'rgb(255, 255, 255)',
}
return colors.get(planet, 'goldenrod')
# Dictionary mapping celestial object names to their descriptions
INFO = {
# Celestial objects
'Sun': 'The star at the center of our solar system.',
'Mercury': 'The smallest planet and closest to the Sun.',
'Venus': 'Second planet from the Sun, known for its thick atmosphere.',
'Earth': 'Our home planet, the third from the Sun.',
'Moon': 'Earth\'s only natural satellite. The Moon\'s orbit is actually inclined by about 5.145° to the ecliptic plane, '
'but approximately 28.545° to Earth\'s equatorial plane (this variation comes from Earth\'s own axial tilt of 23.4°). '
'The Moon\'s orbital parameters are not fixed but vary significantly over time due to precession of the nodes, '
'perturbations from the Sun\'s gravity, Earth\'s non-spherical shape, and other gravitational influences.',
'2024 PT5': 'In late September 2024, Earth temporarily captured a small asteroid into its orbit, leading to it being '
'dubbed Earth\'s "second moon". The object\'s official designation is 2024 PT5, but it was also referred to as a '
'"mini-moon" due to its small size. \n* Size: It\'s estimated to be only about 11 meters wide, making it incredibly '
'small compared to our permanent Moon.\n* Origin: It belongs to the Arjuna asteroid belt, a group of asteroids that '
'share similar orbits with Earth.\n* Temporary Capture: 2024 PT5 was only temporarily captured by Earth\'s gravity. '
'It entered our orbit on September 29, 2024, and is expected to depart on November 25, 2024.\n* Visibility: Due to its '
'small size, it\'s not visible to the naked eye and requires powerful telescopes to be observed.\n* While 2024 PT5 is '
'not a permanent addition to our celestial neighborhood, its temporary presence provided scientists with a valuable '
'opportunity to study near-Earth objects and learn more about the dynamics of our solar system.',
'Mars': 'Known as the Red Planet, fourth planet from the Sun.',
'Phobos': 'The larger and closer of Mars\'s two moons, spiraling inward towards Mars.',
'Deimos': 'The smaller and more distant moon of Mars, with a stable orbit.',
'Ceres': 'The largest object in the asteroid belt, considered a dwarf planet.',
'Apophis': 'Near-Earth asteroid with a close approach in 2029.',
'Vesta': 'Asteroid visited by NASA\'s Dawn mission.',
'Bennu': 'A near-Earth asteroid studied by the OSIRIS-REx mission.',
'Šteins': 'A main-belt asteroid visited by the Rosetta spacecraft.',
'Ryugu': 'Asteroid visited by the Japanese Hayabusa2 mission.',
'Eros': 'Asteroid explored by NASA\'s NEAR Shoemaker spacecraft.',
'Itokawa': 'Asteroid visited by the original Hayabusa mission.',
'Jupiter': 'The largest planet in our solar system, famous for its Great Red Spot.',
'Io': 'Jupiter moon. The most volcanically active body in the Solar System.',
'Europa': 'Jupiter moon. Covered with a smooth ice layer, potential subsurface ocean.',
'Ganymede': 'Jupiter moon. The largest moon in the Solar System, bigger than Mercury.',
'Callisto': 'Jupiter moon. Heavily cratered and geologically inactive.',
'Saturn': 'Known for its beautiful ring system, the sixth planet from the Sun.',
'Titan': 'Saturn moon. The second-largest moon in the Solar System, with a thick atmosphere.',
'Enceladus': 'Saturn moon. Known for its geysers ejecting water ice and vapor.',
'Rhea': 'Saturn moon. Saturn\'s second-largest moon, with extensive cratered surfaces.',
'Dione': 'Saturn moon. Features wispy terrains and numerous craters.',
'Tethys': 'Saturn moon. Notable for its large Ithaca Chasma canyon.',
'Mimas': 'Saturn moon. Known for the large Herschel Crater, resembling the Death Star.',
'Phoebe': 'Saturn moon. An irregular moon with a retrograde orbit around Saturn.',
'Uranus': 'The ice giant with a unique tilt, orbits the Sun on its side.',
'Titania': 'Uranus moon. The largest moon of Uranus, with a mix of heavily cratered and relatively younger regions.',
'Oberon': 'Uranus moon. The second-largest moon of Uranus, heavily cratered.',
'Umbriel': 'Uranus moon. Features a dark surface with numerous impact craters.',
'Ariel': 'Uranus moon. Exhibits a mix of heavily cratered regions and younger surfaces.',
'Miranda': 'Uranus moon. Known for its extreme geological features like canyons and terraced layers.',
'Neptune': 'The eighth and farthest known planet in the solar system.',
'Triton': 'Neptune\'s largest moon, has a retrograde orbit and geysers suggesting geological activity.',
'Pluto': 'Once considered the ninth planet, now classified as a dwarf planet.',
'Charon': 'Pluto\'s largest moon, forming a binary system with Pluto.',
'Nix': 'One of Pluto\'s moons.',
'Hydra': 'Another of Pluto\'s moons',
'Haumea': 'A dwarf planet known for its elongated shape and fast rotation.',
'Makemake': 'A dwarf planet located in the Kuiper Belt, discovered in 2005.',
'Eris': 'A distant dwarf planet, more massive than Pluto.',
'Quaoar': 'A large Kuiper Belt object with a ring system.',
'Sedna': 'A distant trans-Neptunian dwarf planet with a long orbit. \n* Sedna is a fascinating object with an incredibly '
'elongated orbit, meaning its distance from the Sun varies dramatically! \n* Mean distance to Sedna: 526 AU (approximately 79 '
'billion kilometers) - This places it far beyond Pluto and the Kuiper Belt. \n* Perihelion (closest to the Sun): 76 AU '
'\n* Aphelion (farthest from the Sun): A whopping 936 AU! \n* This makes it one of the most distant known objects in our solar system. '
'To put this in perspective, at its farthest point, Sedna is over 20 times farther from the Sun than Pluto is! This extreme '
'orbit is one of the reasons Sedna is so intriguing to astronomers. \n* It\'s thought that its unusual path might be due to '
'gravitational influences from a yet-undiscovered planet in the outer reaches of our solar system, sometimes referred to '
'as \"Planet Nine.\" \n* Sedna\'s long orbital period is another mind-boggling fact. It takes approximately 11,400 years for '
'it to complete one trip around the Sun. \n* Sedna is definitely not a Kuiper Belt object. Its orbit takes it far beyond the '
'Kuiper Belt\'s outer edge. It\'s considered a detached object, meaning its orbit is not significantly influenced by the '
'gravitational pull of Neptune, unlike Kuiper Belt objects. Some astronomers even categorize it as an inner Oort Cloud '
'object due to its immense distance. \n* As for its current distance, Sedna is currently at about 83.3 AU from the Sun. This '
'means it\'s relatively close to its perihelion (closest point) and is currently moving closer to the Sun.',
'Orcus': 'A large Kuiper Belt object with a moon named Vanth. Estimated to be about 910 km in diameter. '
'Discovered on February 17, 2004.',
'Varuna': 'A significant Kuiper Belt Object with a rapid rotation period.',
'Ixion': 'A significant Kuiper Belt Object without a known moon.',
'GV9': 'A binary Kuiper Belt Object providing precise mass measurements through its moon.',
'MS4': 'A large unnumbered Kuiper Belt Object with no known moons.',
'OR10': 'One of the largest known Kuiper Belt Objects with a highly inclined orbit.',
# Missions
'Voyager 1': 'The farthest human-made object from Earth, exploring interstellar space. Voyager 1 is a '
'space probe that was launched by NASA on September 5, 1977, to study the outer Solar System and interstellar space. It is the '
'farthest human-made object from Earth, at a distance of 165.2 AU (24.7 billion km; 15.4 billion mi) as of October 2024.\n '
'Here are some key dates in the Voyager 1 mission:\n * September 5, 1977, launched from Cape Canaveral, Florida.\n '
'* March 5, 1979, reaches Jupiter.\n * November 12, 1980, reaches Saturn.\n * February 14, 1990, takes the \'Pale Blue Dot\' '
'photograph of Earth from a distance of 6 billion kilometers (3.7 billion miles).\n * February 17, 1998, overtakes Pioneer 10 '
'to become the most distant human-made object from Earth.\n * August 25, 2012, crosses the heliopause and enters interstellar '
'space, becoming the first spacecraft to do so.\n Voyager 1 is still operational and continues to send data back to Earth. '
'It is expected to continue operating until at least 2025, when its radioisotope thermoelectric generators will no longer be '
'able to provide enough power to operate its scientific instruments.\n Voyager 1 mission was the first spacecraft to visit '
'Jupiter and Saturn. It discovered active volcanoes on Jupiter\'s moon Io. It revealed the complexity of Saturn\'s rings. '
'It was the first spacecraft to cross the heliopause and enter interstellar space. It is the farthest human-made object from '
'Earth. It is a testament to the ingenuity and perseverance of the scientists and engineers who designed, built, and operate '
'it. https://voyager.jpl.nasa.gov/mission/',
'Voyager 1 to heliopause': 'The farthest human-made object from Earth, exploring interstellar space. Voyager 1 is a space probe that was launched '
'by NASA on September 5, 1977, to study the outer Solar System and interstellar space. It is the farthest human-made object from '
'Earth, at a distance of 165.2 AU (24.7 billion km; 15.4 billion mi) as of October 2024.\n Here are some key dates in the '
'Voyager 1 mission:\n * September 5, 1977, launched from Cape Canaveral, Florida.\n * March 5, 1979, reaches Jupiter.\n '
'* November 12, 1980, reaches Saturn.\n * February 14, 1990, takes the \'Pale Blue Dot\' photograph of Earth from a distance of '
'6 billion kilometers (3.7 billion miles).\n * February 17, 1998, overtakes Pioneer 10 to become the most distant human-made object '
'from Earth.\n * August 25, 2012, crosses the heliopause and enters interstellar space, becoming the first spacecraft to do so. '
'Voyager 1: Crossed the heliopause in August 2012 at a distance of roughly 121 AU (astronomical units). That\'s about 18 billion '
'kilometers (11 billion miles) from the Sun\n '
'Voyager 1 is still operational and continues to send data back to Earth. It is expected to continue operating until at least 2025, '
'when its radioisotope thermoelectric generators will no longer be able to provide enough power to operate its scientific instruments.\n '
'Voyager 1 mission was the first spacecraft to visit Jupiter and Saturn. It discovered active volcanoes on Jupiter\'s moon Io. '
'It revealed the complexity of Saturn\'s rings. It was the first spacecraft to cross the heliopause and enter interstellar space. '
'It is the farthest human-made object from Earth. It is a testament to the ingenuity and perseverance of the scientists and '
'engineers who designed, built, and operate it. https://voyager.jpl.nasa.gov/mission/',
'Voyager 2': 'The only spacecraft to visit all four gas giants: Jupiter, Saturn, Uranus, and Neptune. '
'https://voyager.jpl.nasa.gov/mission/',
'Cassini-Huygens': 'Explored Saturn, its rings, and moons, and delivered the Huygens probe to Titan. '
'https://solarsystem.nasa.gov/missions/cassini/overview/',
'New Horizons': 'Flew past Pluto in 2015, now exploring the Kuiper Belt. '
'https://www.nasa.gov/mission_pages/newhorizons/main/index.html',
'Juno': 'Currently orbiting Jupiter, studying its atmosphere and magnetic field. '
'https://www.nasa.gov/mission_pages/juno/main/index.html',
'Galileo': 'Studied Jupiter and its major moons, including Europa and Ganymede. https://solarsystem.nasa.gov/missions/galileo/overview/',
'Pioneer 10': 'The first spacecraft to travel through the asteroid belt and make direct observations '
'of Jupiter. https://www.nasa.gov/centers/ames/missions/archive/pioneer.html',
'Pioneer 11': 'The first spacecraft to encounter Saturn and study its rings. '
'https://www.nasa.gov/centers/ames/missions/archive/pioneer.html',
'Europa Clipper': 'NASA\'s mission to explore Jupiter\'s moon Europa, launched October 14, 2024. No ephemeris available. '
'https://europa.nasa.gov/',
'OSIRIS-REx': 'NASA mission collected samples from asteroid Bennu and returned to Earth. '
'Arrived 2018-12-03. Left 2021-05-10. Sample recovered 2023-09-24. Mission ongoing. https://www.asteroidmission.org/',
'Parker Solar Probe':
'Studying the Sun\'s outer corona by flying closer to the Sun than any previous spacecraft.\n\n'
'Operating Region:\n'
'* Sun\'s surface (photosphere): ~0.00465 AU\n'
'* Inner corona: extends to ~2 to 3 solar radii or 0.01 AU\n'
'* Parker\'s closest approach: 3.8 million miles, 8.8 solar radii or 0.041 AU\n'
'* Outer corona: extends to ~50 solar radii or 0.2 AU\n'
'* For scale - Mercury\'s orbit: 0.387 AU\n\n'
'The corona\'s temperature paradoxically increases from ~6,000K at the Sun\'s surface '
'to over 2 million K in the inner corona. Parker Solar Probe is helping scientists '
'understand this coronal heating mystery.\n\n'
'Mission Timeline:\n'
'* Launch: August 12, 2018\n'
'* First perihelion: November 5, 2018\n'
'* Final closest approach: 8.8 solar radii at 7AM EST on December 24, 2024\n\n'
'* NOTE: To visualize the closest approach plot Paker on December 24, 2024, at 12 hours.'
'Website: https://www.nasa.gov/content/goddard/parker-solar-probe',
'James Webb Space Telescope': 'NASA\'s flagship infrared space telescope. https://www.jwst.nasa.gov/',
'Rosetta': 'European Space Agency, European Space Agency, mission that studied Comet '
'67p/Churyumov-Gerasimenko. Flyby Asteroid Steins 2008-09-05. Arrives at 67p 2014-08-6. Deployed Philae lander 2014-11-12. '
'Soft landing and termination 2016-09-30. https://rosetta.esa.int/',
'BepiColombo': 'BepiColombo is a mission to explore Mercury, the innermost and smallest planet in our solar system! '
'It\'s a joint endeavor by the European Space Agency (ESA) and the Japan Aerospace Exploration Agency (JAXA).\n '
'* The mission consists of two main spacecraft that journeyed to Mercury together: Mercury Planetary Orbiter (MPO) '
'built by ESA, it will study Mercury\'s surface and internal composition. And Mercury Magnetospheric Orbiter (Mio) '
'developed by JAXA, it will investigate Mercury\'s magnetic field and its interaction with the solar wind.\n '
'* BepiColombo was launched in October 2018 and is using a combination of gravity assists: flybys of Earth, Venus, '
'and Mercury itself to adjust its trajectory and slow down; solar electric propulsion: ion thrusters for fine-tuning '
'its path.\n '
'* Earth flyby: April 10, 2020\n* Venus flyby 1: October 15, 2020\n* Venus flyby 2: August 10, 2021\n'
'* Mercury flyby 1: October 1, 2021\n* Mercury flyby 2: June 23, 2022\n* Mercury flyby 3: June 20, 2023\n'
'* Mercury flyby 4: September 5, 2023\n* Mercury flyby 5: December 2, 2024\n* Mercury flyby 6: January 8, 2025\n'
'* Mercury Orbit Insertion: December 5, 2025\n'
'Each of these flybys has been essential in gradually slowing the spacecraft down enough to achieve Mercury orbit.\n '
'The January 8th flyby is the final gravitational assist before the spacecraft prepares for its historic orbit\n '
'insertion around Mercury later in 2025.'
'* BepiColombo is scheduled to arrive at Mercury in December 2025. Once there, the two orbiters will separate and '
'enter their respective orbits around Mercury.\n '
'* Challenges: Mercury experiences scorching temperatures of over 400°C (750°F). The spacecraft needs special '
'protection from the Sun\'s powerful radiation. Mercury\'s proximity to the Sun creates a strong gravitational pull.\n '
'* BepiColombo is the most comprehensive mission to Mercury to date, with two orbiters providing a detailed view of '
'the planet and its environment. It\'s a prime example of international cooperation in space exploration.\n '
'* Timeline:\n '
' * According to this model, the closest flyby of Mercury by BepiColombo occurred on January 8th, 2025, 6 UTC. '
'During this flyby, the spacecraft came within approximately 0.00001829 AU from Mercury\'s surface: 0.00001829 AU = 2,736 km '
'(from Mercury\'s center), Mercury radius = 2,440 km, actual flyby altitude ≈ 296 km above Mercury\'s surface!\n '
' * This is the statement from ESA, \"On 8 January 2025, the ESA/JAXA BepiColombo mission will fly just 295 km above '
'Mercury\'s surface, with a closest approach scheduled for 06:59 CET (05:59 UTC). It will use this opportunity to '
'photograph Mercury, make unique measurements of the planet\'s environment, and fine-tune science instrument operations '
'before the main mission begins. This sixth and final flyby will reduce the spacecraft\'s speed and change its direction, '
'readying it for entering orbit around the tiny planet in late 2026.\"\n '
' * December 2025 - November 2026: After the flyby, BepiColombo will still be in a trajectory that takes it around '
'the Sun, but it will be heavily influenced by Mercury\'s gravity. It will essentially be "captured" by Mercury, '
'but not yet in a stable orbit.\n '
' * November 2026: Finally, after a series of maneuvers, BepiColombo will achieve a stable orbit around Mercury. '
'The two orbiters (MPO and Mio) will then separate and begin their individual science missions.\n '
' * The BepiColombo mission has a planned duration of one Earth year of scientific observations at Mercury. This '
'nominal mission is set to begin in April 2027, after the orbiters have settled into their final orbits and '
'completed their commissioning phase.\n '
' * If the spacecraft remain in good health and there\'s continued scientific interest, the mission could be '
'prolonged for another one to two years. This would allow scientists to gather even more data and further deepen '
'our understanding of Mercury.\n '
'It\'s a complex dance with gravity, but this intricate approach is necessary to get BepiColombo into the right '
'position to study Mercury effectively!',
'SOHO: Solar and Heliospheric Observatory': 'Located at the L1 Lagrange point. https://sohowww.nascom.nasa.gov/',
'Gaia': 'European Space Agency mission at L2 mapping the Milky Way. https://www.cosmos.esa.int/web/gaia',
'Hayabusa2': 'Japan JAXA mission that returned samples from Ryugu. https://hayabusa2.jaxa.jp/en/',
'Chang\'e': 'China\'s lunar exploration program. http://www.clep.org.cn/',
'Perseverance Rover': 'NASA Mars rover and Ingenuity helicopter. https://mars.nasa.gov/mars2020/',
'DART Mission': 'NASA DART mission to test asteroid deflection. https://www.nasa.gov/dart \n* The DART mission '
'(Double Asteroid Redirection Test) was a groundbreaking NASA project that made history in planetary defense! It was the '
'first-ever mission to test a method of deflecting an asteroid by intentionally crashing a spacecraft into it.\n'
'* Planetary Defense: The primary goal was to demonstrate the kinetic impactor technique as a viable method for deflecting '
'potentially hazardous asteroids that could pose a threat to Earth.\n'
'* Didymos and Dimorphos: The target was a binary asteroid system consisting of Didymos (the larger asteroid) and its '
'smaller moonlet Dimorphos.\n'
'* Impactor: The DART spacecraft was relatively simple, essentially a box-shaped probe with solar panels and a navigation '
'system.\n'
'* LICIACube: It carried a small companion satellite called LICIACube (Light Italian CubeSat for Imaging of Asteroids) '
'provided by the Italian Space Agency, to observe the impact and its aftermath.\n'
'* Impact: September 26, 2022\n'
'* Location: Dimorphos, the smaller asteroid in the Didymos system\n'
'* Speed: Approximately 6.6 kilometers per second (14,760 miles per hour)\n'
'* Successful Impact: DART successfully impacted Dimorphos, altering its orbital period around Didymos.\n'
'* Momentum Transfer: The impact demonstrated that a kinetic impactor can effectively transfer momentum to an asteroid, '
'changing its trajectory.\n'
'* Deflection Measurement: Observations from ground-based telescopes and LICIACube confirmed that Dimorphos\'s orbit was '
'shortened by about 32 minutes, exceeding expectations.\n'
'* Planetary Protection: It demonstrated a viable technique for defending Earth from potentially hazardous asteroids.\n'
'* Technology Demonstration: It tested and validated new technologies for autonomous navigation and targeting of small '
'celestial bodies.\n'
'* Scientific Research: The impact provided valuable data on the composition and structure of asteroids.',
'Lucy Mission': 'NASA mission exploring Trojan asteroids around Jupiter. https://www.nasa.gov/lucy \n* The Lucy mission '
'is a groundbreaking NASA space probe that\'s on an ambitious journey to explore the Trojan asteroids, a unique population '
'of asteroids that share Jupiter\'s orbit around the Sun. These "Trojan swarms" are like fossils of our early solar system, '
'holding clues to the formation of the planets and the conditions that existed billions of years ago. \n* Lucy will visit a '
'total of eight asteroids. Main Belt Asteroids: 52246 Donaldjohanson; 152830 Dinkinesh. Trojan Asteroids: 3548 Eurybates '
'(and its satellite Queta); 15094 Polymele; 11351 Leucus; 21900 Orus; 617 Patroclus (and its binary companion Menoetius).',
# Comets
'Ikeya-Seki': 'Comet Ikeya-Seki, formally designated C/1965 S1, was a stunning sungrazing comet that put on quite a show '
'in 1965! It was one of the brightest comets of the 20th century and is a member of the Kreutz sungrazers, a family of '
'comets believed to have originated from a larger comet that broke apart long ago. As a Kreutz sungrazer, it provided valuable '
'information about these comets and their origins.\n Key dates and information:\n '
'* September 18, 1965: Kaoru Ikeya and Tsutomu Seki, two amateur astronomers in Japan, independently discovered the comet. '
'It was initially a faint telescopic object.\n * October 21, 1965: Ikeya-Seki reached perihelion, its closest point to the Sun.'
'It passed incredibly close, a mere 450,000 km (280,000 mi) above the Sun\'s surface! This made it briefly visible in daylight. '
'The intense heat caused the comet\'s nucleus to fragment into at least three pieces. The breakup of its nucleus offered '
'scientists a rare opportunity to study the composition and behavior of comets.\n * Late October - November 1965: '
'After perihelion, Ikeya-Seki developed a spectacularly long tail, stretching across the sky for millions of miles. '
'It was a breathtaking sight for observers.\n * Post-1965: The comet faded from view as it moved away from the Sun. '
'Though it\'s still out there, with an orbital period estimated to be roughly 880 years, we won\'t see it again for a '
'very long time.',
'West': 'Notable comet for its bright and impressive tail.',
'Halley': 'Most famous comet, returns every 76 years.',
'Hyakutake': 'Comet passed very close to Earth in 1996.',
'Hale-Bopp': 'Comet Hale-Bopp: Visible to the naked eye for 18 months.',
'McNaught': 'Known as the Great Comet of 2007. January 12, 2007.',
'NEOWISE': 'Brightest comet visible from the Northern Hemisphere in decades.',
'Tsuchinshan-ATLAS': 'Discovered independently by the Purple Mountain Observatory in China (Tsuchinshan) in January 2023 '
'and the Asteroid Terrestrial-impact Last Alert System (ATLAS) in South Africa in February 2023.\n * It originates from the '
'Oort cloud, meaning it takes tens of thousands of years to orbit the Sun.\n * It orbits the Sun in the opposite direction '
'to most planets.\n * It reached its closest point to the Sun (perihelion) on September 27, 2024, at a distance of 0.39 AU\n '
'* It still reached a peak magnitude of around -4.9 in early October 2024, making it the brightest comet in over 25 years!\n '
'* It was easily visible to the naked eye and presented a stunning sight with its long, wispy tail.\n * It made its closest '
'approach to Earth on October 12, 2024. At that time, it was about 0.47 AU from Earth.',
'Churyumov-Gerasimenko': 'Comet visited by the Rosetta spacecraft.',
'Borisov': 'Second interstellar object detected.',
'Oumuamua': 'First known interstellar object detected passing through the Solar System.',
'ATLAS': 'Comet C/2024 G3 (ATLAS) is creating quite a buzz in the Southern Hemisphere!',
}
# Define positions for stellar class labels with different x positions and fonts
stellar_class_labels = [
{
'text': 'Supergiants',
'x': 0.2,
'y': 5.5,
'font': dict(color='lightblue', size=14, family='Arial')
},
{
'text': 'Supergiants',
'x': 0.66,
'y': 5.5,
'font': dict(color='red', size=14, family='Arial')
},
{
'text': 'Bright Giants',
'x': 0.22,
'y': 3.7,
'font': dict(color='lightblue', size=14, family='Arial')
},
{
'text': 'Bright Giants',
'x': 0.857,
'y': 3.7,
'font': dict(color='red', size=14, family='Arial')
},
{
'text': 'Carbon Stars',
'x': 0.96,
'y': 3.0,
'font': dict(color='red', size=14, family='Arial')
},
{
'text': 'Giants',
'x': 0.25,
'y': 2.25,
'font': dict(color='lightblue', size=14, family='Arial')
},
{
'text': 'Giants',
'x': 0.83,
'y': 2.25,
'font': dict(color='red', size=14, family='Arial')
},
{
'text': 'Subgiants',
'x': 0.2,
'y': 1.0,
'font': dict(color='lightblue', size=14, family='Arial')
},
{
'text': 'Subgiants',
'x': 0.75,
'y': 1.0,
'font': dict(color='red', size=14, family='Arial')
},