pg_orrery/src/constellation_data.c
Ryan Malloy 501872d45d v0.15.0: constellation full name lookup, rise/set status diagnostics
constellation_full_name(text) returns full IAU name from 3-letter
abbreviation (88-entry static table, IMMUTABLE). Returns NULL for
invalid input — composable with constellation() in queries.

Three rise_set_status functions classify body visibility as
'rises_and_sets', 'circumpolar', or 'never_rises' by sampling
elevation at 48 points across 24h. Separate diagnostic path —
called only when rise/set returns NULL, zero cost in normal case.

147 → 151 SQL objects. 25 → 26 regression suites. All pass.
2026-02-25 19:38:52 -07:00

472 lines
19 KiB
C

/*
* constellation_data.c -- Roman (1987) IAU constellation boundary table
*
* 357 boundary segments from CDS catalog VI/42. Sorted by descending
* declination (as in the original catalog). Coordinates are B1875.0
* equatorial: RA in hours, Dec in degrees.
*
* The lookup algorithm scans from the top (north celestial pole) down.
* First entry where point.dec >= entry.dec AND entry.ra_lower <= point.ra
* < entry.ra_upper is the match.
*
* Using float (not double) — boundary precision is 4 decimal places,
* well within float32's 7-digit significand.
*/
#include "constellation_data.h"
const roman_boundary roman_boundaries[] = {
{ 0.0000f, 24.0000f, 88.0000f, "UMi" },
{ 8.0000f, 14.5000f, 86.5000f, "UMi" },
{ 21.0000f, 23.0000f, 86.1667f, "UMi" },
{ 18.0000f, 21.0000f, 86.0000f, "UMi" },
{ 0.0000f, 8.0000f, 85.0000f, "Cep" },
{ 9.1667f, 10.6667f, 82.0000f, "Cam" },
{ 0.0000f, 5.0000f, 80.0000f, "Cep" },
{ 10.6667f, 14.5000f, 80.0000f, "Cam" },
{ 17.5000f, 18.0000f, 80.0000f, "UMi" },
{ 20.1667f, 21.0000f, 80.0000f, "Dra" },
{ 0.0000f, 3.5083f, 77.0000f, "Cep" },
{ 11.5000f, 13.5833f, 77.0000f, "Cam" },
{ 16.5333f, 17.5000f, 75.0000f, "UMi" },
{ 20.1667f, 20.6667f, 75.0000f, "Cep" },
{ 7.9667f, 9.1667f, 73.5000f, "Cam" },
{ 9.1667f, 11.3333f, 73.5000f, "Dra" },
{ 13.0000f, 16.5333f, 70.0000f, "UMi" },
{ 3.1000f, 3.4167f, 68.0000f, "Cas" },
{ 20.4167f, 20.6667f, 67.0000f, "Dra" },
{ 11.3333f, 12.0000f, 66.5000f, "Dra" },
{ 0.0000f, 0.3333f, 66.0000f, "Cep" },
{ 14.0000f, 15.6667f, 66.0000f, "UMi" },
{ 23.5833f, 24.0000f, 66.0000f, "Cep" },
{ 12.0000f, 13.5000f, 64.0000f, "Dra" },
{ 13.5000f, 14.4167f, 63.0000f, "Dra" },
{ 23.1667f, 23.5833f, 63.0000f, "Cep" },
{ 6.1000f, 7.0000f, 62.0000f, "Cam" },
{ 20.0000f, 20.4167f, 61.5000f, "Dra" },
{ 20.5367f, 20.6000f, 60.9167f, "Cep" },
{ 7.0000f, 7.9667f, 60.0000f, "Cam" },
{ 7.9667f, 8.4167f, 60.0000f, "UMa" },
{ 19.7667f, 20.0000f, 59.5000f, "Dra" },
{ 20.0000f, 20.5367f, 59.5000f, "Cep" },
{ 22.8667f, 23.1667f, 59.0833f, "Cep" },
{ 0.0000f, 2.4333f, 58.5000f, "Cas" },
{ 19.4167f, 19.7667f, 58.0000f, "Dra" },
{ 1.7000f, 1.9083f, 57.5000f, "Cas" },
{ 2.4333f, 3.1000f, 57.0000f, "Cas" },
{ 3.1000f, 3.1667f, 57.0000f, "Cam" },
{ 22.3167f, 22.8667f, 56.2500f, "Cep" },
{ 5.0000f, 6.1000f, 56.0000f, "Cam" },
{ 14.0333f, 14.4167f, 55.5000f, "UMa" },
{ 14.4167f, 19.4167f, 55.5000f, "Dra" },
{ 3.1667f, 3.3333f, 55.0000f, "Cam" },
{ 22.1333f, 22.3167f, 55.0000f, "Cep" },
{ 20.6000f, 21.9667f, 54.8333f, "Cep" },
{ 0.0000f, 1.7000f, 54.0000f, "Cas" },
{ 6.1000f, 6.5000f, 54.0000f, "Lyn" },
{ 12.0833f, 13.5000f, 53.0000f, "UMa" },
{ 15.2500f, 15.7500f, 53.0000f, "Dra" },
{ 21.9667f, 22.1333f, 52.7500f, "Cep" },
{ 3.3333f, 5.0000f, 52.5000f, "Cam" },
{ 22.8667f, 23.3333f, 52.5000f, "Cas" },
{ 15.7500f, 17.0000f, 51.5000f, "Dra" },
{ 2.0417f, 2.5167f, 50.5000f, "Per" },
{ 17.0000f, 18.2333f, 50.5000f, "Dra" },
{ 0.0000f, 1.3667f, 50.0000f, "Cas" },
{ 1.3667f, 1.6667f, 50.0000f, "Per" },
{ 6.5000f, 6.8000f, 50.0000f, "Lyn" },
{ 23.3333f, 24.0000f, 50.0000f, "Cas" },
{ 13.5000f, 14.0333f, 48.5000f, "UMa" },
{ 0.0000f, 1.1167f, 48.0000f, "Cas" },
{ 23.5833f, 24.0000f, 48.0000f, "Cas" },
{ 18.1750f, 18.2333f, 47.5000f, "Her" },
{ 18.2333f, 19.0833f, 47.5000f, "Dra" },
{ 19.0833f, 19.1667f, 47.5000f, "Cyg" },
{ 1.6667f, 2.0417f, 47.0000f, "Per" },
{ 8.4167f, 9.1667f, 47.0000f, "UMa" },
{ 0.1667f, 0.8667f, 46.0000f, "Cas" },
{ 12.0000f, 12.0833f, 45.0000f, "UMa" },
{ 6.8000f, 7.3667f, 44.5000f, "Lyn" },
{ 21.9083f, 21.9667f, 44.0000f, "Cyg" },
{ 21.8750f, 21.9083f, 43.7500f, "Cyg" },
{ 19.1667f, 19.4000f, 43.5000f, "Cyg" },
{ 9.1667f, 10.1667f, 42.0000f, "UMa" },
{ 10.1667f, 10.7833f, 40.0000f, "UMa" },
{ 15.4333f, 15.7500f, 40.0000f, "Boo" },
{ 15.7500f, 16.3333f, 40.0000f, "Her" },
{ 9.2500f, 9.5833f, 39.7500f, "Lyn" },
{ 0.0000f, 2.5167f, 36.7500f, "And" },
{ 2.5167f, 2.5667f, 36.7500f, "Per" },
{ 19.3583f, 19.4000f, 36.5000f, "Lyr" },
{ 4.5000f, 4.6917f, 36.0000f, "Per" },
{ 21.7333f, 21.8750f, 36.0000f, "Cyg" },
{ 21.8750f, 22.0000f, 36.0000f, "Lac" },
{ 6.5333f, 7.3667f, 35.5000f, "Aur" },
{ 7.3667f, 7.7500f, 35.5000f, "Lyn" },
{ 0.0000f, 2.0000f, 35.0000f, "And" },
{ 22.0000f, 22.8167f, 35.0000f, "Lac" },
{ 22.8167f, 22.8667f, 34.5000f, "Lac" },
{ 22.8667f, 23.5000f, 34.5000f, "And" },
{ 2.5667f, 2.7167f, 34.0000f, "Per" },
{ 10.7833f, 11.0000f, 34.0000f, "UMa" },
{ 12.0000f, 12.3333f, 34.0000f, "CVn" },
{ 7.7500f, 9.2500f, 33.5000f, "Lyn" },
{ 9.2500f, 9.8833f, 33.5000f, "LMi" },
{ 0.7167f, 1.4083f, 33.0000f, "And" },
{ 15.1833f, 15.4333f, 33.0000f, "Boo" },
{ 23.5000f, 23.7500f, 32.0833f, "And" },
{ 12.3333f, 13.2500f, 32.0000f, "CVn" },
{ 23.7500f, 24.0000f, 31.3333f, "And" },
{ 13.9583f, 14.0333f, 30.7500f, "CVn" },
{ 2.4167f, 2.7167f, 30.6667f, "Tri" },
{ 2.7167f, 4.5000f, 30.6667f, "Per" },
{ 4.5000f, 4.7500f, 30.0000f, "Aur" },
{ 18.1750f, 19.3583f, 30.0000f, "Lyr" },
{ 11.0000f, 12.0000f, 29.0000f, "UMa" },
{ 19.6667f, 20.9167f, 29.0000f, "Cyg" },
{ 4.7500f, 5.8833f, 28.5000f, "Aur" },
{ 9.8833f, 10.5000f, 28.5000f, "LMi" },
{ 13.2500f, 13.9583f, 28.5000f, "CVn" },
{ 0.0000f, 0.0667f, 28.0000f, "And" },
{ 1.4083f, 1.6667f, 28.0000f, "Tri" },
{ 5.8833f, 6.5333f, 28.0000f, "Aur" },
{ 7.8833f, 8.0000f, 28.0000f, "Gem" },
{ 20.9167f, 21.7333f, 28.0000f, "Cyg" },
{ 19.2583f, 19.6667f, 27.5000f, "Cyg" },
{ 1.9167f, 2.4167f, 27.2500f, "Tri" },
{ 16.1667f, 16.3333f, 27.0000f, "CrB" },
{ 15.0833f, 15.1833f, 26.0000f, "Boo" },
{ 15.1833f, 16.1667f, 26.0000f, "CrB" },
{ 18.3667f, 18.8667f, 26.0000f, "Lyr" },
{ 10.7500f, 11.0000f, 25.5000f, "LMi" },
{ 18.8667f, 19.2583f, 25.5000f, "Lyr" },
{ 1.6667f, 1.9167f, 25.0000f, "Tri" },
{ 0.7167f, 0.8500f, 23.7500f, "Psc" },
{ 10.5000f, 10.7500f, 23.5000f, "LMi" },
{ 21.2500f, 21.4167f, 23.5000f, "Vul" },
{ 5.7000f, 5.8833f, 22.8333f, "Tau" },
{ 0.0667f, 0.1417f, 22.0000f, "And" },
{ 15.9167f, 16.0333f, 22.0000f, "Ser" },
{ 5.8833f, 6.2167f, 21.5000f, "Gem" },
{ 19.8333f, 20.2500f, 21.2500f, "Vul" },
{ 18.8667f, 19.2500f, 21.0833f, "Vul" },
{ 0.1417f, 0.8500f, 21.0000f, "And" },
{ 20.2500f, 20.5667f, 20.5000f, "Vul" },
{ 7.8083f, 7.8833f, 20.0000f, "Gem" },
{ 20.5667f, 21.2500f, 19.5000f, "Vul" },
{ 19.2500f, 19.8333f, 19.1667f, "Vul" },
{ 3.2833f, 3.3667f, 19.0000f, "Ari" },
{ 18.8667f, 19.0000f, 18.5000f, "Sge" },
{ 5.7000f, 5.7667f, 18.0000f, "Ori" },
{ 6.2167f, 6.3083f, 17.5000f, "Gem" },
{ 19.0000f, 19.8333f, 16.1667f, "Sge" },
{ 4.9667f, 5.3333f, 16.0000f, "Tau" },
{ 15.9167f, 16.0833f, 16.0000f, "Her" },
{ 19.8333f, 20.2500f, 15.7500f, "Sge" },
{ 4.6167f, 4.9667f, 15.5000f, "Tau" },
{ 5.3333f, 5.6000f, 15.5000f, "Tau" },
{ 12.8333f, 13.5000f, 15.0000f, "Com" },
{ 17.2500f, 18.2500f, 14.3333f, "Her" },
{ 11.8667f, 12.8333f, 14.0000f, "Com" },
{ 7.5000f, 7.8083f, 13.5000f, "Gem" },
{ 16.7500f, 17.2500f, 12.8333f, "Her" },
{ 0.0000f, 0.1417f, 12.5000f, "Peg" },
{ 5.6000f, 5.7667f, 12.5000f, "Tau" },
{ 7.0000f, 7.5000f, 12.5000f, "Gem" },
{ 21.1167f, 21.3333f, 12.5000f, "Peg" },
{ 6.3083f, 6.9333f, 12.0000f, "Gem" },
{ 18.2500f, 18.8667f, 12.0000f, "Her" },
{ 20.8750f, 21.0500f, 11.8333f, "Del" },
{ 21.0500f, 21.1167f, 11.8333f, "Peg" },
{ 11.5167f, 11.8667f, 11.0000f, "Leo" },
{ 6.2417f, 6.3083f, 10.0000f, "Ori" },
{ 6.9333f, 7.0000f, 10.0000f, "Gem" },
{ 7.8083f, 7.9250f, 10.0000f, "Cnc" },
{ 23.8333f, 24.0000f, 10.0000f, "Peg" },
{ 1.6667f, 3.2833f, 9.9167f, "Ari" },
{ 20.1417f, 20.3000f, 8.5000f, "Del" },
{ 13.5000f, 15.0833f, 8.0000f, "Boo" },
{ 22.7500f, 23.8333f, 7.5000f, "Peg" },
{ 7.9250f, 9.2500f, 7.0000f, "Cnc" },
{ 9.2500f, 10.7500f, 7.0000f, "Leo" },
{ 18.2500f, 18.6622f, 6.2500f, "Oph" },
{ 18.6622f, 18.8667f, 6.2500f, "Aql" },
{ 20.8333f, 20.8750f, 6.0000f, "Del" },
{ 7.0000f, 7.0167f, 5.5000f, "CMi" },
{ 18.2500f, 18.4250f, 4.5000f, "Ser" },
{ 16.0833f, 16.7500f, 4.0000f, "Her" },
{ 18.2500f, 18.4250f, 3.0000f, "Oph" },
{ 21.4667f, 21.6667f, 2.7500f, "Peg" },
{ 0.0000f, 2.0000f, 2.0000f, "Psc" },
{ 18.5833f, 18.8667f, 2.0000f, "Ser" },
{ 20.3000f, 20.8333f, 2.0000f, "Del" },
{ 20.8333f, 21.3333f, 2.0000f, "Equ" },
{ 21.3333f, 21.4667f, 2.0000f, "Peg" },
{ 22.0000f, 22.7500f, 2.0000f, "Peg" },
{ 21.6667f, 22.0000f, 1.7500f, "Peg" },
{ 7.0167f, 7.2000f, 1.5000f, "CMi" },
{ 3.5833f, 4.6167f, 0.0000f, "Tau" },
{ 4.6167f, 4.6667f, 0.0000f, "Ori" },
{ 7.2000f, 8.0833f, 0.0000f, "CMi" },
{ 14.6667f, 15.0833f, 0.0000f, "Vir" },
{ 17.8333f, 18.2500f, 0.0000f, "Oph" },
{ 2.6500f, 3.2833f, -1.7500f, "Cet" },
{ 3.2833f, 3.5833f, -1.7500f, "Tau" },
{ 15.0833f, 16.2667f, -3.2500f, "Ser" },
{ 4.6667f, 5.0833f, -4.0000f, "Ori" },
{ 5.8333f, 6.2417f, -4.0000f, "Ori" },
{ 17.8333f, 17.9667f, -4.0000f, "Ser" },
{ 18.2500f, 18.5833f, -4.0000f, "Ser" },
{ 18.5833f, 18.8667f, -4.0000f, "Aql" },
{ 22.7500f, 23.8333f, -4.0000f, "Psc" },
{ 10.7500f, 11.5167f, -6.0000f, "Leo" },
{ 11.5167f, 11.8333f, -6.0000f, "Vir" },
{ 0.0000f, 0.3333f, -7.0000f, "Psc" },
{ 23.8333f, 24.0000f, -7.0000f, "Psc" },
{ 14.2500f, 14.6667f, -8.0000f, "Vir" },
{ 15.9167f, 16.2667f, -8.0000f, "Oph" },
{ 20.0000f, 20.5333f, -9.0000f, "Aql" },
{ 21.3333f, 21.8667f, -9.0000f, "Aqr" },
{ 17.1667f, 17.9667f, -10.0000f, "Oph" },
{ 5.8333f, 8.0833f, -11.0000f, "Mon" },
{ 4.9167f, 5.0833f, -11.0000f, "Eri" },
{ 5.0833f, 5.8333f, -11.0000f, "Ori" },
{ 8.0833f, 8.3667f, -11.0000f, "Hya" },
{ 9.5833f, 10.7500f, -11.0000f, "Sex" },
{ 11.8333f, 12.8333f, -11.0000f, "Vir" },
{ 17.5833f, 17.6667f, -11.6667f, "Oph" },
{ 18.8667f, 20.0000f, -12.0333f, "Aql" },
{ 4.8333f, 4.9167f, -14.5000f, "Eri" },
{ 20.5333f, 21.3333f, -15.0000f, "Aqr" },
{ 17.1667f, 18.2500f, -16.0000f, "Ser" },
{ 18.2500f, 18.8667f, -16.0000f, "Sct" },
{ 8.3667f, 8.5833f, -17.0000f, "Hya" },
{ 16.2667f, 16.3750f, -18.2500f, "Oph" },
{ 8.5833f, 9.0833f, -19.0000f, "Hya" },
{ 10.7500f, 10.8333f, -19.0000f, "Crt" },
{ 16.2667f, 16.3750f, -19.2500f, "Sco" },
{ 15.6667f, 15.9167f, -20.0000f, "Lib" },
{ 12.5833f, 12.8333f, -22.0000f, "Crv" },
{ 12.8333f, 14.2500f, -22.0000f, "Vir" },
{ 9.0833f, 9.7500f, -24.0000f, "Hya" },
{ 1.6667f, 2.6500f, -24.3833f, "Cet" },
{ 2.6500f, 3.7500f, -24.3833f, "Eri" },
{ 10.8333f, 11.8333f, -24.5000f, "Crt" },
{ 11.8333f, 12.5833f, -24.5000f, "Crv" },
{ 14.2500f, 14.9167f, -24.5000f, "Lib" },
{ 16.2667f, 16.7500f, -24.5833f, "Oph" },
{ 0.0000f, 1.6667f, -25.5000f, "Cet" },
{ 21.3333f, 21.8667f, -25.5000f, "Cap" },
{ 21.8667f, 23.8333f, -25.5000f, "Aqr" },
{ 23.8333f, 24.0000f, -25.5000f, "Cet" },
{ 9.7500f, 10.2500f, -26.5000f, "Hya" },
{ 4.7000f, 4.8333f, -27.2500f, "Eri" },
{ 4.8333f, 6.1167f, -27.2500f, "Lep" },
{ 20.0000f, 21.3333f, -28.0000f, "Cap" },
{ 10.2500f, 10.5833f, -29.1667f, "Hya" },
{ 12.5833f, 14.9167f, -29.5000f, "Hya" },
{ 14.9167f, 15.6667f, -29.5000f, "Lib" },
{ 15.6667f, 16.0000f, -29.5000f, "Sco" },
{ 4.5833f, 4.7000f, -30.0000f, "Eri" },
{ 16.7500f, 17.6000f, -30.0000f, "Oph" },
{ 17.6000f, 17.8333f, -30.0000f, "Sgr" },
{ 10.5833f, 10.8333f, -31.1667f, "Hya" },
{ 6.1167f, 7.3667f, -33.0000f, "CMa" },
{ 12.2500f, 12.5833f, -33.0000f, "Hya" },
{ 10.8333f, 12.2500f, -35.0000f, "Hya" },
{ 3.5000f, 3.7500f, -36.0000f, "For" },
{ 8.3667f, 9.3667f, -36.7500f, "Pyx" },
{ 4.2667f, 4.5833f, -37.0000f, "Eri" },
{ 17.8333f, 19.1667f, -37.0000f, "Sgr" },
{ 21.3333f, 23.0000f, -37.0000f, "PsA" },
{ 23.0000f, 23.3333f, -37.0000f, "Scl" },
{ 3.0000f, 3.5000f, -39.5833f, "For" },
{ 9.3667f, 11.0000f, -39.7500f, "Ant" },
{ 0.0000f, 1.6667f, -40.0000f, "Scl" },
{ 1.6667f, 3.0000f, -40.0000f, "For" },
{ 3.8667f, 4.2667f, -40.0000f, "Eri" },
{ 23.3333f, 24.0000f, -40.0000f, "Scl" },
{ 14.1667f, 14.9167f, -42.0000f, "Cen" },
{ 15.6667f, 16.0000f, -42.0000f, "Lup" },
{ 16.0000f, 16.4208f, -42.0000f, "Sco" },
{ 4.8333f, 5.0000f, -43.0000f, "Cae" },
{ 5.0000f, 6.5833f, -43.0000f, "Col" },
{ 8.0000f, 8.3667f, -43.0000f, "Pup" },
{ 3.4167f, 3.8667f, -44.0000f, "Eri" },
{ 16.4208f, 17.8333f, -45.5000f, "Sco" },
{ 17.8333f, 19.1667f, -45.5000f, "CrA" },
{ 19.1667f, 20.3333f, -45.5000f, "Sgr" },
{ 20.3333f, 21.3333f, -45.5000f, "Mic" },
{ 3.0000f, 3.4167f, -46.0000f, "Eri" },
{ 4.5000f, 4.8333f, -46.5000f, "Cae" },
{ 15.3333f, 15.6667f, -48.0000f, "Lup" },
{ 0.0000f, 2.3333f, -48.1667f, "Phe" },
{ 2.6667f, 3.0000f, -49.0000f, "Eri" },
{ 4.0833f, 4.2667f, -49.0000f, "Hor" },
{ 4.2667f, 4.5000f, -49.0000f, "Cae" },
{ 21.3333f, 22.0000f, -50.0000f, "Gru" },
{ 6.0000f, 8.0000f, -50.7500f, "Pup" },
{ 8.0000f, 8.1667f, -50.7500f, "Vel" },
{ 2.4167f, 2.6667f, -51.0000f, "Eri" },
{ 3.8333f, 4.0833f, -51.0000f, "Hor" },
{ 0.0000f, 1.8333f, -51.5000f, "Phe" },
{ 6.0000f, 6.1667f, -52.5000f, "Car" },
{ 8.1667f, 8.4500f, -53.0000f, "Vel" },
{ 3.5000f, 3.8333f, -53.1667f, "Hor" },
{ 3.8333f, 4.0000f, -53.1667f, "Dor" },
{ 0.0000f, 1.5833f, -53.5000f, "Phe" },
{ 2.1667f, 2.4167f, -54.0000f, "Eri" },
{ 4.5000f, 5.0000f, -54.0000f, "Pic" },
{ 15.0500f, 15.3333f, -54.0000f, "Lup" },
{ 8.4500f, 8.8333f, -54.5000f, "Vel" },
{ 6.1667f, 6.5000f, -55.0000f, "Car" },
{ 11.8333f, 12.8333f, -55.0000f, "Cen" },
{ 14.1667f, 15.0500f, -55.0000f, "Lup" },
{ 15.0500f, 15.3333f, -55.0000f, "Nor" },
{ 4.0000f, 4.3333f, -56.5000f, "Dor" },
{ 8.8333f, 11.0000f, -56.5000f, "Vel" },
{ 11.0000f, 11.2500f, -56.5000f, "Cen" },
{ 17.5000f, 18.0000f, -57.0000f, "Ara" },
{ 18.0000f, 20.3333f, -57.0000f, "Tel" },
{ 22.0000f, 23.3333f, -57.0000f, "Gru" },
{ 3.2000f, 3.5000f, -57.5000f, "Hor" },
{ 5.0000f, 5.5000f, -57.5000f, "Pic" },
{ 6.5000f, 6.8333f, -58.0000f, "Car" },
{ 0.0000f, 1.3333f, -58.5000f, "Phe" },
{ 1.3333f, 2.1667f, -58.5000f, "Eri" },
{ 23.3333f, 24.0000f, -58.5000f, "Phe" },
{ 4.3333f, 4.5833f, -59.0000f, "Dor" },
{ 15.3333f, 16.4208f, -60.0000f, "Nor" },
{ 20.3333f, 21.3333f, -60.0000f, "Ind" },
{ 5.5000f, 6.0000f, -61.0000f, "Pic" },
{ 15.1667f, 15.3333f, -61.0000f, "Cir" },
{ 16.4208f, 16.5833f, -61.0000f, "Ara" },
{ 14.9167f, 15.1667f, -63.5833f, "Cir" },
{ 16.5833f, 16.7500f, -63.5833f, "Ara" },
{ 6.0000f, 6.8333f, -64.0000f, "Pic" },
{ 6.8333f, 9.0333f, -64.0000f, "Car" },
{ 11.2500f, 11.8333f, -64.0000f, "Cen" },
{ 11.8333f, 12.8333f, -64.0000f, "Cru" },
{ 12.8333f, 14.5333f, -64.0000f, "Cen" },
{ 13.5000f, 13.6667f, -65.0000f, "Cir" },
{ 16.7500f, 16.8333f, -65.0000f, "Ara" },
{ 2.1667f, 3.2000f, -67.5000f, "Hor" },
{ 3.2000f, 4.5833f, -67.5000f, "Ret" },
{ 14.7500f, 14.9167f, -67.5000f, "Cir" },
{ 16.8333f, 17.5000f, -67.5000f, "Ara" },
{ 17.5000f, 18.0000f, -67.5000f, "Pav" },
{ 22.0000f, 23.3333f, -67.5000f, "Tuc" },
{ 4.5833f, 6.5833f, -70.0000f, "Dor" },
{ 13.6667f, 14.7500f, -70.0000f, "Cir" },
{ 14.7500f, 17.0000f, -70.0000f, "TrA" },
{ 0.0000f, 1.3333f, -75.0000f, "Tuc" },
{ 3.5000f, 4.5833f, -75.0000f, "Hyi" },
{ 6.5833f, 9.0333f, -75.0000f, "Vol" },
{ 9.0333f, 11.2500f, -75.0000f, "Car" },
{ 11.2500f, 13.6667f, -75.0000f, "Mus" },
{ 18.0000f, 21.3333f, -75.0000f, "Pav" },
{ 21.3333f, 23.3333f, -75.0000f, "Ind" },
{ 23.3333f, 24.0000f, -75.0000f, "Tuc" },
{ 0.7500f, 1.3333f, -76.0000f, "Tuc" },
{ 0.0000f, 3.5000f, -82.5000f, "Hyi" },
{ 7.6667f, 13.6667f, -82.5000f, "Cha" },
{ 13.6667f, 18.0000f, -82.5000f, "Aps" },
{ 3.5000f, 7.6667f, -85.0000f, "Men" },
{ 0.0000f, 24.0000f, -90.0000f, "Oct" },
};
const int roman_boundary_count = sizeof(roman_boundaries) / sizeof(roman_boundaries[0]);
const constellation_name constellation_names[] = {
{ "And", "Andromeda" },
{ "Ant", "Antlia" },
{ "Aps", "Apus" },
{ "Aqr", "Aquarius" },
{ "Aql", "Aquila" },
{ "Ara", "Ara" },
{ "Ari", "Aries" },
{ "Aur", "Auriga" },
{ "Boo", "Bootes" },
{ "Cae", "Caelum" },
{ "Cam", "Camelopardalis" },
{ "Cnc", "Cancer" },
{ "CVn", "Canes Venatici" },
{ "CMa", "Canis Major" },
{ "CMi", "Canis Minor" },
{ "Cap", "Capricornus" },
{ "Car", "Carina" },
{ "Cas", "Cassiopeia" },
{ "Cen", "Centaurus" },
{ "Cep", "Cepheus" },
{ "Cet", "Cetus" },
{ "Cha", "Chamaeleon" },
{ "Cir", "Circinus" },
{ "Col", "Columba" },
{ "Com", "Coma Berenices" },
{ "CrA", "Corona Australis" },
{ "CrB", "Corona Borealis" },
{ "Crv", "Corvus" },
{ "Crt", "Crater" },
{ "Cru", "Crux" },
{ "Cyg", "Cygnus" },
{ "Del", "Delphinus" },
{ "Dor", "Dorado" },
{ "Dra", "Draco" },
{ "Equ", "Equuleus" },
{ "Eri", "Eridanus" },
{ "For", "Fornax" },
{ "Gem", "Gemini" },
{ "Gru", "Grus" },
{ "Her", "Hercules" },
{ "Hor", "Horologium" },
{ "Hya", "Hydra" },
{ "Hyi", "Hydrus" },
{ "Ind", "Indus" },
{ "Lac", "Lacerta" },
{ "Leo", "Leo" },
{ "LMi", "Leo Minor" },
{ "Lep", "Lepus" },
{ "Lib", "Libra" },
{ "Lup", "Lupus" },
{ "Lyn", "Lynx" },
{ "Lyr", "Lyra" },
{ "Men", "Mensa" },
{ "Mic", "Microscopium" },
{ "Mon", "Monoceros" },
{ "Mus", "Musca" },
{ "Nor", "Norma" },
{ "Oct", "Octans" },
{ "Oph", "Ophiuchus" },
{ "Ori", "Orion" },
{ "Pav", "Pavo" },
{ "Peg", "Pegasus" },
{ "Per", "Perseus" },
{ "Phe", "Phoenix" },
{ "Pic", "Pictor" },
{ "Psc", "Pisces" },
{ "PsA", "Piscis Austrinus" },
{ "Pup", "Puppis" },
{ "Pyx", "Pyxis" },
{ "Ret", "Reticulum" },
{ "Sge", "Sagitta" },
{ "Sgr", "Sagittarius" },
{ "Sco", "Scorpius" },
{ "Scl", "Sculptor" },
{ "Sct", "Scutum" },
{ "Ser", "Serpens" },
{ "Sex", "Sextans" },
{ "Tau", "Taurus" },
{ "Tel", "Telescopium" },
{ "Tri", "Triangulum" },
{ "TrA", "Triangulum Australe" },
{ "Tuc", "Tucana" },
{ "UMa", "Ursa Major" },
{ "UMi", "Ursa Minor" },
{ "Vel", "Vela" },
{ "Vir", "Virgo" },
{ "Vol", "Volans" },
{ "Vul", "Vulpecula" },
};
const int constellation_name_count = sizeof(constellation_names) / sizeof(constellation_names[0]);