From 244dd251eb1aee674a0bc3cb548cb0f7e0395d68 Mon Sep 17 00:00:00 2001 From: "Craig C." Date: Fri, 23 Oct 2026 13:32:59 +0300 Subject: [PATCH 1/6] build: a label for every star, not just the IAU-named ones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit star-names.json now has an entry for all 2887 stars in stars.bin: - The 324 IAU-named stars as before: [index, "Sarin", "Hercules"]. - 1801 more with a Bayer letter or Flamsteed number from the catalogue's name field: [index, "ζ Herculis", "Hercules", 0], where 0 says the label already names the constellation. - The other 762, mostly faint southern stars: [index, "HR 104"]. The constellation names move to scripts/constellation-names.mjs, with their genitives, so the next build script can share them. stars.bin is unchanged byte for byte. 19 KB gzipped, up from 3 KB; it still loads after the stars. --- apps/site/public/star-names.json | 2 +- scripts/build-stars.mjs | 164 +++++++++++---------------- scripts/constellation-names.mjs | 183 +++++++++++++++++++++++++++++++ 3 files changed, 251 insertions(+), 98 deletions(-) create mode 100644 scripts/constellation-names.mjs diff --git a/apps/site/public/star-names.json b/apps/site/public/star-names.json index c725a2f..300015f 100644 --- a/apps/site/public/star-names.json +++ b/apps/site/public/star-names.json @@ -1 +1 @@ -[[1,"Alpheratz","Andromeda"],[2,"Caph","Cassiopeia"],[11,"Algenib","Pegasus"],[25,"Ankaa","Phoenix"],[43,"Fulu","Cassiopeia"],[50,"Schedar","Cassiopeia"],[56,"Diphda","Cetus"],[67,"Achird","Cassiopeia"],[82,"Castula","Cassiopeia"],[104,"Mirach","Andromeda"],[105,"Wurren","Phoenix"],[111,"Revati","Pisces"],[120,"Adhil","Andromeda"],[123,"Ruchbah","Cassiopeia"],[129,"Polaris","Ursa Minor"],[134,"Alpherg","Pisces"],[138,"Titawin","Andromeda"],[140,"Nembus","Andromeda"],[142,"Achernar","Eridanus"],[152,"Torcular","Pisces"],[158,"Baten Kaitos","Cetus"],[159,"Segin","Cassiopeia"],[161,"Mothallah","Triangulum"],[163,"Mesarthim","Aries"],[166,"Sheratan","Aries"],[186,"Alrescha","Pisces"],[189,"Almach","Andromeda"],[194,"Hamal","Aries"],[210,"Mira","Cetus"],[250,"Kaffaljidhma","Cetus"],[257,"Lilii Borea","Aries"],[258,"Miram","Perseus"],[261,"Bharani","Aries"],[267,"Angetenar","Eridanus"],[275,"Azha","Eridanus"],[287,"Acamar","Eridanus"],[290,"Menkar","Cetus"],[300,"Algol","Perseus"],[302,"Misam","Perseus"],[304,"Botein","Aries"],[307,"Dalim","Fornax"],[311,"Zibal","Eridanus"],[328,"Mirfak","Perseus"],[344,"Ran","Eridanus"],[354,"Atik","Perseus"],[357,"Rana","Eridanus"],[359,"Celaeno","Taurus"],[360,"Electra","Taurus"],[362,"Taygeta","Taurus"],[365,"Maia","Taurus"],[368,"Merope","Taurus"],[370,"Alcyone","Taurus"],[376,"Atlas","Taurus"],[377,"Pleione","Taurus"],[395,"Menkib","Perseus"],[397,"Zaurak","Eridanus"],[420,"Beid","Eridanus"],[433,"Keid","Eridanus"],[445,"Prima Hyadum","Taurus"],[454,"Secunda Hyadum","Taurus"],[463,"Beemim","Eridanus"],[468,"Ain","Taurus"],[470,"Chamukuy","Taurus"],[482,"Aldebaran","Taurus"],[485,"Theemin","Eridanus"],[495,"Sceptrum","Eridanus"],[515,"Tabit","Orion"],[529,"Hassaleh","Auriga"],[535,"Almaaz","Auriga"],[538,"Saclateni","Auriga"],[547,"Haedus","Auriga"],[558,"Cursa","Eridanus"],[574,"Capella","Auriga"],[576,"Rigel","Orion"],[605,"Bellatrix","Orion"],[606,"Elnath","Taurus"],[614,"Nihal","Lepus"],[622,"Mintaka","Orion"],[627,"Arneb","Lepus"],[633,"Meissa","Orion"],[638,"Hatysa","Orion"],[640,"Alnilam","Orion"],[642,"Tianguan","Taurus"],[652,"Alnitak","Orion"],[656,"Phact","Columba"],[669,"Saiph","Orion"],[683,"Wazn","Columba"],[688,"Betelgeuse","Orion"],[695,"Menkalinan","Auriga"],[699,"Mahasim","Auriga"],[723,"Elkurud","Columba"],[734,"Propus","Gemini"],[753,"Furud","Canis Major"],[754,"Tejat","Gemini"],[757,"Mirzam","Canis Major"],[761,"Canopus","Carina"],[784,"Alhena","Gemini"],[798,"Mebsuta","Gemini"],[803,"Alzirr","Gemini"],[806,"Sirius","Canis Major"],[843,"Adhara","Canis Major"],[847,"Nganurganity","Canis Major"],[850,"Mekbuda","Gemini"],[853,"Muliphein","Canis Major"],[862,"Wezen","Canis Major"],[892,"Wasat","Gemini"],[915,"Aludra","Canis Major"],[918,"Gomeisa","Canis Minor"],[936,"Castor","Gemini"],[943,"Jishui","Gemini"],[947,"Procyon","Canis Minor"],[960,"Pollux","Gemini"],[980,"Azmidi","Puppis"],[1015,"Naos","Puppis"],[1021,"Tureis","Puppis"],[1040,"Tarf","Cancer"],[1044,"Alsciaukat","Lynx"],[1051,"Avior","Carina"],[1056,"Muscida","Ursa Major"],[1074,"Minchir","Hydra"],[1089,"Asellus Borealis","Cancer"],[1096,"Asellus Australis","Cancer"],[1102,"Ashlesha","Hydra"],[1104,"Alsephina","Vela"],[1127,"Talitha","Ursa Major"],[1129,"Acubens","Cancer"],[1137,"Alkaphrah","Ursa Major"],[1151,"Nahn","Cancer"],[1153,"Suhail","Vela"],[1173,"Miaplacidus","Carina"],[1179,"Aspidiske","Carina"],[1190,"Markeb","Vela"],[1191,"Intercrus","Ursa Major"],[1192,"Alphard","Hydra"],[1204,"Alterf","Leo"],[1231,"Ukdah","Hydra"],[1233,"Subra","Leo"],[1251,"Zhang","Hydra"],[1252,"Rasalas","Leo"],[1257,"Felis","Hydra"],[1271,"Regulus","Leo"],[1280,"Adhafera","Leo"],[1281,"Tania Borealis","Ursa Major"],[1288,"Algieba","Leo"],[1292,"Tania Australis","Ursa Major"],[1358,"Praecipua","Leo Minor"],[1367,"Chalawan","Ursa Major"],[1369,"Alkes","Crater"],[1374,"Merak","Ursa Major"],[1377,"Dubhe","Ursa Major"],[1393,"Zosma","Leo"],[1394,"Chertan","Leo"],[1400,"Alula Australis","Ursa Major"],[1401,"Alula Borealis","Ursa Major"],[1421,"Giausar","Draco"],[1451,"Taiyangshou","Ursa Major"],[1462,"Denebola","Leo"],[1465,"Zavijava","Virgo"],[1469,"Phecda","Ursa Major"],[1489,"Alchiba","Corvus"],[1496,"Imai","Crux"],[1497,"Megrez","Ursa Major"],[1498,"Gienah","Corvus"],[1507,"Zaniah","Virgo"],[1513,"Ginan","Crux"],[1522,"Acrux","Crux"],[1533,"Algorab","Corvus"],[1535,"Gacrux","Crux"],[1543,"Chara","Canes Venatici"],[1544,"Kraz","Corvus"],[1559,"Porrima","Virgo"],[1567,"La Superba","Canes Venatici"],[1571,"Mimosa","Crux"],[1572,"Tianyi","Draco"],[1584,"Alioth","Ursa Major"],[1587,"Minelauva","Virgo"],[1589,"Cor Caroli","Canes Venatici"],[1590,"Taiyi","Draco"],[1596,"Vindemiatrix","Virgo"],[1605,"Diadem","Coma Berenices"],[1633,"Mizar","Ursa Major"],[1635,"Spica","Virgo"],[1637,"Alcor","Ursa Major"],[1648,"Heze","Virgo"],[1668,"Alkaid","Ursa Major"],[1681,"Muphrid","Boötes"],[1691,"Hadar","Centaurus"],[1694,"Menkent","Centaurus"],[1696,"Thuban","Draco"],[1705,"Kang","Virgo"],[1713,"Syrma","Virgo"],[1715,"Arcturus","Boötes"],[1718,"Xuange","Boötes"],[1721,"Khambalia","Virgo"],[1739,"Elgafar","Virgo"],[1746,"Seginus","Boötes"],[1751,"Rigil Kentaurus","Centaurus"],[1752,"Toliman","Centaurus"],[1771,"Izar","Boötes"],[1778,"Zubenelgenubi","Libra"],[1790,"Kochab","Ursa Minor"],[1801,"Nekkar","Boötes"],[1802,"Brachium","Libra"],[1828,"Zubeneschamali","Libra"],[1846,"Alkalurops","Boötes"],[1847,"Pherkad","Ursa Minor"],[1852,"Edasich","Draco"],[1854,"Nusakan","Corona Borealis"],[1866,"Zubenelhakrabi","Libra"],[1869,"Alphecca","Corona Borealis"],[1890,"Unukalhai","Serpens"],[1894,"Gudja","Serpens"],[1917,"Iklil","Scorpius"],[1924,"Fang","Scorpius"],[1927,"Dschubba","Scorpius"],[1943,"Acrab","Scorpius"],[1950,"Marsic","Hercules"],[1959,"Jabbah","Scorpius"],[1968,"Yed Prior","Ophiuchus"],[1974,"Yed Posterior","Ophiuchus"],[1979,"Alniyat","Scorpius"],[1997,"Cujam","Hercules"],[2004,"Athebyne","Draco"],[2005,"Antares","Scorpius"],[2013,"Kornephoros","Hercules"],[2014,"Marfik","Ophiuchus"],[2022,"Paikauhale","Scorpius"],[2032,"Atria","Triangulum Australe"],[2040,"Larawag","Scorpius"],[2043,"Xamidimura","Scorpius"],[2045,"Pipirima","Scorpius"],[2072,"Sabik","Ophiuchus"],[2076,"Aldhibah","Draco"],[2078,"Guniibuu","Ophiuchus"],[2079,"Rasalgethi","Hercules"],[2081,"Sarin","Hercules"],[2113,"Lesath","Scorpius"],[2117,"Maasym","Hercules"],[2118,"Shaula","Scorpius"],[2119,"Rastaban","Draco"],[2123,"Sargas","Scorpius"],[2126,"Rasalhague","Ophiuchus"],[2136,"Cervantes","Ara"],[2140,"Cebalrai","Ophiuchus"],[2146,"Fuyue","Scorpius"],[2148,"Dziban","Draco"],[2157,"Grumium","Draco"],[2164,"Eltanin","Draco"],[2181,"Alnasl","Sagittarius"],[2192,"Yildun","Ursa Minor"],[2198,"Polis","Sagittarius"],[2211,"Kaus Media","Sagittarius"],[2221,"Kaus Australis","Sagittarius"],[2232,"Kaus Borealis","Sagittarius"],[2245,"Fafnir","Draco"],[2260,"Vega","Lyra"],[2286,"Sheliak","Lyra"],[2289,"Ainalrami","Sagittarius"],[2293,"Nunki","Sagittarius"],[2303,"Alya","Serpens"],[2315,"Sulafat","Lyra"],[2321,"Ascella","Sagittarius"],[2333,"Polaris Australis","Octans"],[2335,"Okab","Aquila"],[2340,"Meridiana","Corona Australis"],[2344,"Albaldah","Sagittarius"],[2351,"Aladfar","Lyra"],[2355,"Altais","Draco"],[2365,"Arkab Prior","Sagittarius"],[2368,"Arkab Posterior","Sagittarius"],[2369,"Rukbat","Sagittarius"],[2381,"Anser","Vulpecula"],[2383,"Albireo","Cygnus"],[2398,"Alsafi","Draco"],[2403,"Sham","Sagitta"],[2415,"Tarazed","Aquila"],[2416,"Fawaris","Cygnus"],[2423,"Altair","Aquila"],[2435,"Libertas","Aquila"],[2436,"Terebellum","Sagittarius"],[2437,"Alshain","Aquila"],[2489,"Algedi","Capricornus"],[2494,"Alshat","Capricornus"],[2495,"Dabih","Capricornus"],[2496,"Peacock","Pavo"],[2498,"Sadr","Cygnus"],[2509,"Aldulfin","Delphinus"],[2519,"Rotanev","Delphinus"],[2530,"Sualocin","Delphinus"],[2533,"Deneb","Cygnus"],[2544,"Aljanah","Cygnus"],[2545,"Albali","Aquarius"],[2569,"Musica","Delphinus"],[2595,"Kitalpha","Equuleus"],[2603,"Alderamin","Cepheus"],[2622,"Sadalsuud","Aquarius"],[2623,"Alfirk","Cepheus"],[2628,"Bunda","Aquarius"],[2632,"Nashira","Capricornus"],[2640,"Azelfafage","Cygnus"],[2643,"Enif","Pegasus"],[2651,"Deneb Algedi","Capricornus"],[2659,"Aldhanab","Grus"],[2672,"Sadalmelik","Aquarius"],[2674,"Kurhah","Cepheus"],[2677,"Alnair","Grus"],[2685,"Biham","Pegasus"],[2705,"Ancha","Aquarius"],[2712,"Sadachbia","Aquarius"],[2741,"Situla","Aquarius"],[2750,"Homam","Pegasus"],[2751,"Tiaki","Grus"],[2756,"Matar","Pegasus"],[2765,"Sadalbari","Pegasus"],[2774,"Skat","Aquarius"],[2778,"Fomalhaut","Piscis Austrinus"],[2779,"Helvetios","Pegasus"],[2788,"Fumalsamakah","Pisces"],[2790,"Scheat","Pegasus"],[2793,"Markab","Pegasus"],[2824,"Salm","Pegasus"],[2830,"Alkarab","Pegasus"],[2836,"Veritate","Andromeda"],[2848,"Errai","Cepheus"]] \ No newline at end of file +[[0,"33 Piscium","Pisces",0],[1,"Alpheratz","Andromeda"],[2,"Caph","Cassiopeia"],[3,"κ¹ Sculptoris","Sculptor",0],[4,"ε Phoenicis","Phoenix",0],[5,"22 Andromedae","Andromeda",0],[6,"γ³ Octantis","Octans",0],[7,"6 Ceti","Cetus",0],[8,"κ² Sculptoris","Sculptor",0],[9,"θ Sculptoris","Sculptor",0],[10,"HR 37"],[11,"Algenib","Pegasus"],[12,"χ Pegasi","Pegasus",0],[13,"HR 46"],[14,"7 Ceti","Cetus",0],[15,"θ Andromedae","Andromeda",0],[16,"σ Andromedae","Andromeda",0],[17,"ι Ceti","Cetus",0],[18,"ζ Tucanae","Tucana",0],[19,"41 Piscium","Pisces",0],[20,"ρ Andromedae","Andromeda",0],[21,"ι Sculptoris","Sculptor",0],[22,"HR 85"],[23,"12 Cassiopeiae","Cassiopeia",0],[24,"β Hydri","Hydrus",0],[25,"Ankaa","Phoenix"],[26,"κ Phoenicis","Phoenix",0],[27,"47 Piscium","Pisces",0],[28,"HR 104"],[29,"η Sculptoris","Sculptor",0],[30,"HR 109"],[31,"28 Andromedae","Andromeda",0],[32,"HR 118"],[33,"λ Cassiopeiae","Cassiopeia",0],[34,"λ¹ Phoenicis","Phoenix",0],[35,"β¹ Tucanae","Tucana",0],[36,"β² Tucanae","Tucana",0],[37,"κ Cassiopeiae","Cassiopeia",0],[38,"52 Piscium","Pisces",0],[39,"β³ Tucanae","Tucana",0],[40,"13 Ceti","Cetus",0],[41,"HR 144"],[42,"HR 152"],[43,"Fulu","Cassiopeia"],[44,"π Andromedae","Andromeda",0],[45,"HR 157"],[46,"ε Andromedae","Andromeda",0],[47,"HR 164"],[48,"δ Andromedae","Andromeda",0],[49,"55 Piscium","Pisces",0],[50,"Schedar","Cassiopeia"],[51,"32 Andromedae","Andromeda",0],[52,"ξ Cassiopeiae","Cassiopeia",0],[53,"μ Phoenicis","Phoenix",0],[54,"π Cassiopeiae","Cassiopeia",0],[55,"ρ Tucanae","Tucana",0],[56,"Diphda","Cetus"],[57,"η Phoenicis","Phoenix",0],[58,"ο Cassiopeiae","Cassiopeia",0],[59,"φ¹ Ceti","Cetus",0],[60,"HR 196"],[61,"HR 197"],[62,"23 Cassiopeiae","Cassiopeia",0],[63,"HR 210"],[64,"57 Piscium","Pisces",0],[65,"58 Piscium","Pisces",0],[66,"ζ Andromedae","Andromeda",0],[67,"Achird","Cassiopeia"],[68,"ν Cassiopeiae","Cassiopeia",0],[69,"δ Piscium","Pisces",0],[70,"64 Piscium","Pisces",0],[71,"ν Andromedae","Andromeda",0],[72,"HR 233"],[73,"φ² Ceti","Cetus",0],[74,"λ Hydri","Hydrus",0],[75,"ρ Phoenicis","Phoenix",0],[76,"HR 244"],[77,"HR 247"],[78,"20 Ceti","Cetus",0],[79,"υ¹ Cassiopeiae","Cassiopeia",0],[80,"36 Andromedae","Andromeda",0],[81,"γ Cassiopeiae","Cassiopeia",0],[82,"Castula","Cassiopeia"],[83,"φ³ Ceti","Cetus",0],[84,"μ Andromedae","Andromeda",0],[85,"λ² Tucanae","Tucana",0],[86,"η Andromedae","Andromeda",0],[87,"68 Piscium","Pisces",0],[88,"α Sculptoris","Sculptor",0],[89,"HR 285"],[90,"σ Piscium","Pisces",0],[91,"σ Sculptoris","Sculptor",0],[92,"ε Piscium","Pisces",0],[93,"25 Ceti","Cetus",0],[94,"HR 299"],[95,"ψ¹ Piscium","Pisces",0],[96,"μ Cassiopeiae","Cassiopeia",0],[97,"β Phoenicis","Phoenix",0],[98,"41 Andromedae","Andromeda",0],[99,"υ Phoenicis","Phoenix",0],[100,"ι Tucanae","Tucana",0],[101,"η Ceti","Cetus",0],[102,"φ Andromedae","Andromeda",0],[103,"31 Cassiopeiae","Cassiopeia",0],[104,"Mirach","Andromeda"],[105,"Wurren","Phoenix"],[106,"θ Cassiopeiae","Cassiopeia",0],[107,"82 Piscium","Pisces",0],[108,"χ Piscium","Pisces",0],[109,"τ Piscium","Pisces",0],[110,"φ Piscium","Pisces",0],[111,"Revati","Pisces"],[112,"37 Ceti","Cetus",0],[113,"ν Phoenicis","Phoenix",0],[114,"39 Ceti","Cetus",0],[115,"κ Tucanae","Tucana",0],[116,"89 Piscium","Pisces",0],[117,"φ Cassiopeiae","Cassiopeia",0],[118,"υ Piscium","Pisces",0],[119,"91 Piscium","Pisces",0],[120,"Adhil","Andromeda"],[121,"ψ Cassiopeiae","Cassiopeia",0],[122,"θ Ceti","Cetus",0],[123,"Ruchbah","Cassiopeia"],[124,"HR 408"],[125,"46 Ceti","Cetus",0],[126,"ρ Piscium","Pisces",0],[127,"94 Piscium","Pisces",0],[128,"ω Andromedae","Andromeda",0],[129,"Polaris","Ursa Minor"],[130,"γ Phoenicis","Phoenix",0],[131,"49 Andromedae","Andromeda",0],[132,"48 Ceti","Cetus",0],[133,"μ Piscium","Pisces",0],[134,"Alpherg","Pisces"],[135,"δ Phoenicis","Phoenix",0],[136,"χ Cassiopeiae","Cassiopeia",0],[137,"40 Cassiopeiae","Cassiopeia",0],[138,"Titawin","Andromeda"],[139,"50 Ceti","Cetus",0],[140,"Nembus","Andromeda"],[141,"χ Andromedae","Andromeda",0],[142,"Achernar","Eridanus"],[143,"τ Andromedae","Andromeda",0],[144,"42 Cassiopeiae","Cassiopeia",0],[145,"HR 483"],[146,"ν Piscium","Pisces",0],[147,"107 Piscium","Pisces",0],[148,"φ Persei","Perseus",0],[149,"π Sculptoris","Sculptor",0],[150,"HR 500"],[151,"τ Ceti","Cetus",0],[152,"Torcular","Pisces"],[153,"HR 513"],[154,"ε Sculptoris","Sculptor",0],[155,"HR 519"],[156,"HR 520"],[157,"χ Ceti","Cetus",0],[158,"Baten Kaitos","Cetus"],[159,"Segin","Cassiopeia"],[160,"55 Andromedae","Andromeda",0],[161,"Mothallah","Triangulum"],[162,"γ¹ Arietis","Aries",0],[163,"Mesarthim","Aries"],[164,"ω Cassiopeiae","Cassiopeia",0],[165,"ξ Piscium","Pisces",0],[166,"Sheratan","Aries"],[167,"ψ Phoenicis","Phoenix",0],[168,"φ Phoenicis","Phoenix",0],[169,"ι Arietis","Aries",0],[170,"56 Ceti","Cetus",0],[171,"χ Eridani","Eridanus",0],[172,"HR 567"],[173,"λ Arietis","Aries",0],[174,"η² Hydri","Hydrus",0],[175,"HR 574"],[176,"48 Cassiopeiae","Cassiopeia",0],[177,"50 Cassiopeiae","Cassiopeia",0],[178,"47 Cassiopeiae","Cassiopeia",0],[179,"57 Ceti","Cetus",0],[180,"υ Ceti","Cetus",0],[181,"4 Persei","Perseus",0],[182,"α Hydri","Hydrus",0],[183,"49 Cassiopeiae","Cassiopeia",0],[184,"π Fornacis","Fornax",0],[185,"α Piscium","Pisces",0],[186,"Alrescha","Pisces"],[187,"ε Trianguli","Triangulum",0],[188,"χ Phoenicis","Phoenix",0],[189,"Almach","Andromeda"],[190,"γ² Andromedae","Andromeda",0],[191,"60 Ceti","Cetus",0],[192,"ν Fornacis","Fornax",0],[193,"κ Arietis","Aries",0],[194,"Hamal","Aries"],[195,"58 Andromedae","Andromeda",0],[196,"β Trianguli","Triangulum",0],[197,"14 Arietis","Aries",0],[198,"6 Trianguli","Triangulum",0],[199,"60 Andromedae","Andromeda",0],[200,"HR 645"],[201,"η Arietis","Aries",0],[202,"ξ¹ Ceti","Cetus",0],[203,"μ Fornacis","Fornax",0],[204,"7 Trianguli","Triangulum",0],[205,"δ Trianguli","Triangulum",0],[206,"γ Trianguli","Triangulum",0],[207,"62 Andromedae","Andromeda",0],[208,"φ Eridani","Eridanus",0],[209,"10 Trianguli","Triangulum",0],[210,"Mira","Cetus"],[211,"9 Persei","Perseus",0],[212,"69 Ceti","Cetus",0],[213,"70 Ceti","Cetus",0],[214,"HR 692"],[215,"64 Andromedae","Andromeda",0],[216,"κ Fornacis","Fornax",0],[217,"65 Andromedae","Andromeda",0],[218,"ξ Arietis","Aries",0],[219,"δ Hydri","Hydrus",0],[220,"ι Cassiopeiae","Cassiopeia",0],[221,"ρ Ceti","Cetus",0],[222,"λ Horologii","Horologium",0],[223,"κ Hydri","Hydrus",0],[224,"12 Trianguli","Triangulum",0],[225,"ξ² Ceti","Cetus",0],[226,"κ Eridani","Eridanus",0],[227,"φ Fornacis","Fornax",0],[228,"14 Trianguli","Triangulum",0],[229,"HR 737"],[230,"75 Ceti","Cetus",0],[231,"σ Ceti","Cetus",0],[232,"HR 743"],[233,"ω Fornacis","Fornax",0],[234,"15 Trianguli","Triangulum",0],[235,"ν Ceti","Cetus",0],[236,"HR 758"],[237,"ν Arietis","Aries",0],[238,"μ Hydri","Hydrus",0],[239,"η Horologii","Horologium",0],[240,"δ Ceti","Cetus",0],[241,"ε Ceti","Cetus",0],[242,"33 Arietis","Aries",0],[243,"12 Persei","Perseus",0],[244,"HR 789"],[245,"ι Eridani","Eridanus",0],[246,"θ Persei","Perseus",0],[247,"14 Persei","Perseus",0],[248,"35 Arietis","Aries",0],[249,"ζ Horologii","Horologium",0],[250,"Kaffaljidhma","Cetus"],[251,"ε Hydri","Hydrus",0],[252,"ι Horologii","Horologium",0],[253,"π Ceti","Cetus",0],[254,"38 Arietis","Aries",0],[255,"μ Ceti","Cetus",0],[256,"τ¹ Eridani","Eridanus",0],[257,"Lilii Borea","Aries"],[258,"Miram","Perseus"],[259,"π Arietis","Aries",0],[260,"ζ Hydri","Hydrus",0],[261,"Bharani","Aries"],[262,"16 Persei","Perseus",0],[263,"β Fornacis","Fornax",0],[264,"17 Persei","Perseus",0],[265,"γ² Fornacis","Fornax",0],[266,"σ Arietis","Aries",0],[267,"Angetenar","Eridanus"],[268,"η³ Fornacis","Fornax",0],[269,"ν Horologii","Horologium",0],[270,"τ Persei","Perseus",0],[271,"20 Persei","Perseus",0],[272,"HR 868"],[273,"ν Hydri","Hydrus",0],[274,"21 Persei","Perseus",0],[275,"Azha","Eridanus"],[276,"HR 875"],[277,"π Persei","Perseus",0],[278,"HR 881"],[279,"24 Persei","Perseus",0],[280,"4 Eridani","Eridanus",0],[281,"HR 885"],[282,"ε Arietis","Aries",0],[283,"ε Arietis","Aries",0],[284,"HR 890"],[285,"HR 892"],[286,"λ Ceti","Cetus",0],[287,"Acamar","Eridanus"],[288,"θ² Eridani","Eridanus",0],[289,"β Horologii","Horologium",0],[290,"Menkar","Cetus"],[291,"γ Persei","Perseus",0],[292,"ρ² Eridani","Eridanus",0],[293,"HR 918"],[294,"τ³ Eridani","Eridanus",0],[295,"ρ Persei","Perseus",0],[296,"ρ³ Eridani","Eridanus",0],[297,"HR 932"],[298,"μ Horologii","Horologium",0],[299,"HR 935"],[300,"Algol","Perseus"],[301,"ι Persei","Perseus",0],[302,"Misam","Perseus"],[303,"ω Persei","Perseus",0],[304,"Botein","Aries"],[305,"HR 961"],[306,"94 Ceti","Cetus",0],[307,"Dalim","Fornax"],[308,"HR 969"],[309,"ζ Arietis","Aries",0],[310,"30 Persei","Perseus",0],[311,"Zibal","Eridanus"],[312,"HR 985"],[313,"29 Persei","Perseus",0],[314,"31 Persei","Perseus",0],[315,"HR 991"],[316,"95 Ceti","Cetus",0],[317,"15 Eridani","Eridanus",0],[318,"κ¹ Ceti","Cetus",0],[319,"HR 999"],[320,"32 Persei","Perseus",0],[321,"τ⁴ Eridani","Eridanus",0],[322,"τ¹ Arietis","Aries",0],[323,"HR 1008"],[324,"HR 1009"],[325,"ζ² Reticuli","Reticulum",0],[326,"HR 1011"],[327,"τ² Arietis","Aries",0],[328,"Mirfak","Perseus"],[329,"64 Arietis","Aries",0],[330,"ο Tauri","Taurus",0],[331,"HR 1034"],[332,"HR 1035"],[333,"ξ Tauri","Taurus",0],[334,"HR 1040"],[335,"34 Persei","Perseus",0],[336,"HR 1046"],[337,"σ Persei","Perseus",0],[338,"4 Tauri","Taurus",0],[339,"HR 1063"],[340,"5 Tauri","Taurus",0],[341,"36 Persei","Perseus",0],[342,"17 Eridani","Eridanus",0],[343,"κ Reticuli","Reticulum",0],[344,"Ran","Eridanus"],[345,"ψ Persei","Perseus",0],[346,"τ⁵ Eridani","Eridanus",0],[347,"20 Eridani","Eridanus",0],[348,"10 Tauri","Taurus",0],[349,"HR 1105"],[350,"HR 1106"],[351,"δ Persei","Perseus",0],[352,"40 Persei","Perseus",0],[353,"HR 1129"],[354,"Atik","Perseus"],[355,"δ Fornacis","Fornax",0],[356,"ν Persei","Perseus",0],[357,"Rana","Eridanus"],[358,"HR 1138"],[359,"Celaeno","Taurus"],[360,"Electra","Taurus"],[361,"HR 1143"],[362,"Taygeta","Taurus"],[363,"24 Eridani","Eridanus",0],[364,"γ Camelopardalis","Camelopardalis",0],[365,"Maia","Taurus"],[366,"29 Tauri","Taurus",0],[367,"HR 1155"],[368,"Merope","Taurus"],[369,"π Eridani","Eridanus",0],[370,"Alcyone","Taurus"],[371,"HR 1172"],[372,"τ⁶ Eridani","Eridanus",0],[373,"30 Tauri","Taurus",0],[374,"β Reticuli","Reticulum",0],[375,"42 Persei","Perseus",0],[376,"Atlas","Taurus"],[377,"Pleione","Taurus"],[378,"τ⁷ Eridani","Eridanus",0],[379,"HR 1188"],[380,"HR 1189"],[381,"HR 1190"],[382,"HR 1195"],[383,"30 Eridani","Eridanus",0],[384,"ζ Persei","Perseus",0],[385,"HR 1204"],[386,"HR 1205"],[387,"HR 1207"],[388,"γ Hydri","Hydrus",0],[389,"43 Persei","Perseus",0],[390,"32 Eridani","Eridanus",0],[391,"τ⁸ Eridani","Eridanus",0],[392,"HR 1214"],[393,"HR 1215"],[394,"ε Persei","Perseus",0],[395,"Menkib","Perseus"],[396,"HR 1230"],[397,"Zaurak","Eridanus"],[398,"λ Tauri","Taurus",0],[399,"τ⁹ Eridani","Eridanus",0],[400,"HR 1242"],[401,"35 Eridani","Eridanus",0],[402,"δ Reticuli","Reticulum",0],[403,"HR 1249"],[404,"ν Tauri","Taurus",0],[405,"36 Tauri","Taurus",0],[406,"40 Tauri","Taurus",0],[407,"HR 1254"],[408,"37 Tauri","Taurus",0],[409,"HR 1257"],[410,"λ Persei","Perseus",0],[411,"γ Reticuli","Reticulum",0],[412,"ι Reticuli","Reticulum",0],[413,"41 Tauri","Taurus",0],[414,"ψ Tauri","Taurus",0],[415,"48 Persei","Perseus",0],[416,"ω¹ Tauri","Taurus",0],[417,"44 Tauri","Taurus",0],[418,"HR 1288"],[419,"37 Eridani","Eridanus",0],[420,"Beid","Eridanus"],[421,"δ Horologii","Horologium",0],[422,"μ Persei","Perseus",0],[423,"HR 1304"],[424,"52 Persei","Perseus",0],[425,"46 Tauri","Taurus",0],[426,"47 Tauri","Taurus",0],[427,"HR 1314"],[428,"HR 1315"],[429,"HR 1317"],[430,"39 Eridani","Eridanus",0],[431,"μ Tauri","Taurus",0],[432,"HR 1324"],[433,"Keid","Eridanus"],[434,"α Horologii","Horologium",0],[435,"HR 1327"],[436,"ω² Tauri","Taurus",0],[437,"HR 1330"],[438,"HR 1335"],[439,"α Reticuli","Reticulum",0],[440,"γ Doradus","Dorado",0],[441,"53 Tauri","Taurus",0],[442,"HR 1340"],[443,"56 Tauri","Taurus",0],[444,"54 Persei","Perseus",0],[445,"Prima Hyadum","Taurus"],[446,"υ⁴ Eridani","Eridanus",0],[447,"φ Tauri","Taurus",0],[448,"53 Persei","Perseus",0],[449,"ε Reticuli","Reticulum",0],[450,"58 Tauri","Taurus",0],[451,"HR 1364"],[452,"HR 1367"],[453,"χ Tauri","Taurus",0],[454,"Secunda Hyadum","Taurus"],[455,"δ² Tauri","Taurus",0],[456,"66 Tauri","Taurus",0],[457,"ξ Eridani","Eridanus",0],[458,"κ¹ Tauri","Taurus",0],[459,"κ² Tauri","Taurus",0],[460,"δ³ Tauri","Taurus",0],[461,"HR 1390"],[462,"υ Tauri","Taurus",0],[463,"Beemim","Eridanus"],[464,"71 Tauri","Taurus",0],[465,"η Reticuli","Reticulum",0],[466,"π Tauri","Taurus",0],[467,"75 Tauri","Taurus",0],[468,"Ain","Taurus"],[469,"θ¹ Tauri","Taurus",0],[470,"Chamukuy","Taurus"],[471,"79 Tauri","Taurus",0],[472,"HR 1427"],[473,"81 Tauri","Taurus",0],[474,"83 Tauri","Taurus",0],[475,"45 Eridani","Eridanus",0],[476,"δ Caeli","Caelum",0],[477,"ρ Tauri","Taurus",0],[478,"47 Eridani","Eridanus",0],[479,"HR 1452"],[480,"υ¹ Eridani","Eridanus",0],[481,"58 Persei","Perseus",0],[482,"Aldebaran","Taurus"],[483,"88 Tauri","Taurus",0],[484,"ν Eridani","Eridanus",0],[485,"Theemin","Eridanus"],[486,"α Doradus","Dorado",0],[487,"2 Camelopardalis","Camelopardalis",0],[488,"3 Camelopardalis","Camelopardalis",0],[489,"HR 1469"],[490,"90 Tauri","Taurus",0],[491,"51 Eridani","Eridanus",0],[492,"σ¹ Tauri","Taurus",0],[493,"σ² Tauri","Taurus",0],[494,"HR 1480"],[495,"Sceptrum","Eridanus"],[496,"HR 1483"],[497,"93 Tauri","Taurus",0],[498,"HR 1487"],[499,"HR 1492"],[500,"59 Persei","Perseus",0],[501,"54 Eridani","Eridanus",0],[502,"τ Tauri","Taurus",0],[503,"α Caeli","Caelum",0],[504,"β Caeli","Caelum",0],[505,"HR 1507"],[506,"4 Camelopardalis","Camelopardalis",0],[507,"λ Pictoris","Pictor",0],[508,"HR 1519"],[509,"μ Eridani","Eridanus",0],[510,"HR 1523"],[511,"HR 1527"],[512,"κ Doradus","Dorado",0],[513,"HR 1533"],[514,"α Camelopardalis","Camelopardalis",0],[515,"Tabit","Orion"],[516,"π² Orionis","Orion",0],[517,"97 Tauri","Taurus",0],[518,"60 Eridani","Eridanus",0],[519,"2 Aurigae","Auriga",0],[520,"π⁴ Orionis","Orion",0],[521,"ο¹ Orionis","Orion",0],[522,"ω Eridani","Eridanus",0],[523,"5 Orionis","Orion",0],[524,"π⁵ Orionis","Orion",0],[525,"7 Camelopardalis","Camelopardalis",0],[526,"6 Orionis","Orion",0],[527,"π¹ Orionis","Orion",0],[528,"HR 1571"],[529,"Hassaleh","Auriga"],[530,"ο² Orionis","Orion",0],[531,"HR 1585"],[532,"ω Aurigae","Auriga",0],[533,"π⁶ Orionis","Orion",0],[534,"β Camelopardalis","Camelopardalis",0],[535,"Almaaz","Auriga"],[536,"63 Eridani","Eridanus",0],[537,"64 Eridani","Eridanus",0],[538,"Saclateni","Auriga"],[539,"ψ Eridani","Eridanus",0],[540,"ι Tauri","Taurus",0],[541,"HR 1621"],[542,"11 Camelopardalis","Camelopardalis",0],[543,"HR 1628"],[544,"η Mensae","Mensa",0],[545,"9 Aurigae","Auriga",0],[546,"11 Orionis","Orion",0],[547,"Haedus","Auriga"],[548,"HR 1643"],[549,"η¹ Pictoris","Pictor",0],[550,"γ¹ Caeli","Caelum",0],[551,"ε Leporis","Lepus",0],[552,"104 Tauri","Taurus",0],[553,"66 Eridani","Eridanus",0],[554,"106 Tauri","Taurus",0],[555,"103 Tauri","Taurus",0],[556,"η² Pictoris","Pictor",0],[557,"14 Orionis","Orion",0],[558,"Cursa","Eridanus"],[559,"16 Orionis","Orion",0],[560,"68 Eridani","Eridanus",0],[561,"ζ Doradus","Dorado",0],[562,"15 Orionis","Orion",0],[563,"β Mensae","Mensa",0],[564,"λ Eridani","Eridanus",0],[565,"HR 1684"],[566,"HR 1686"],[567,"μ Aurigae","Auriga",0],[568,"HR 1695"],[569,"ι Leporis","Lepus",0],[570,"ρ Orionis","Orion",0],[571,"μ Leporis","Lepus",0],[572,"κ Leporis","Lepus",0],[573,"14 Aurigae","Auriga",0],[574,"Capella","Auriga"],[575,"HR 1709"],[576,"Rigel","Orion"],[577,"HR 1722"],[578,"HR 1723"],[579,"16 Aurigae","Auriga",0],[580,"λ Aurigae","Auriga",0],[581,"HR 1732"],[582,"τ Orionis","Orion",0],[583,"HR 1737"],[584,"109 Tauri","Taurus",0],[585,"19 Aurigae","Auriga",0],[586,"ο Columbae","Columba",0],[587,"θ Doradus","Dorado",0],[588,"21 Orionis","Orion",0],[589,"ρ Aurigae","Auriga",0],[590,"16 Camelopardalis","Camelopardalis",0],[591,"λ Leporis","Lepus",0],[592,"ν Leporis","Lepus",0],[593,"HR 1762"],[594,"22 Orionis","Orion",0],[595,"ζ Pictoris","Pictor",0],[596,"23 Orionis","Orion",0],[597,"HR 1771"],[598,"σ Aurigae","Auriga",0],[599,"111 Tauri","Taurus",0],[600,"8 Leporis","Lepus",0],[601,"29 Orionis","Orion",0],[602,"27 Orionis","Orion",0],[603,"η Orionis","Orion",0],[604,"ψ¹ Orionis","Orion",0],[605,"Bellatrix","Orion"],[606,"Elnath","Taurus"],[607,"17 Camelopardalis","Camelopardalis",0],[608,"φ Aurigae","Auriga",0],[609,"115 Tauri","Taurus",0],[610,"114 Tauri","Taurus",0],[611,"ψ² Orionis","Orion",0],[612,"116 Tauri","Taurus",0],[613,"118 Tauri","Taurus",0],[614,"Nihal","Lepus"],[615,"31 Orionis","Orion",0],[616,"λ Doradus","Dorado",0],[617,"32 Orionis","Orion",0],[618,"33 Orionis","Orion",0],[619,"χ Aurigae","Auriga",0],[620,"119 Tauri","Taurus",0],[621,"HR 1847"],[622,"Mintaka","Orion"],[623,"υ Orionis","Orion",0],[624,"HR 1856"],[625,"HR 1861"],[626,"ε Columbae","Columba",0],[627,"Arneb","Lepus"],[628,"HR 1868"],[629,"38 Orionis","Orion",0],[630,"121 Tauri","Taurus",0],[631,"φ¹ Orionis","Orion",0],[632,"HR 1877"],[633,"Meissa","Orion"],[634,"HR 1887"],[635,"42 Orionis","Orion",0],[636,"θ¹ Orionis","Orion",0],[637,"θ² Orionis","Orion",0],[638,"Hatysa","Orion"],[639,"45 Orionis","Orion",0],[640,"Alnilam","Orion"],[641,"φ² Orionis","Orion",0],[642,"Tianguan","Taurus"],[643,"26 Aurigae","Auriga",0],[644,"HR 1917"],[645,"β Doradus","Dorado",0],[646,"125 Tauri","Taurus",0],[647,"σ Orionis","Orion",0],[648,"ω Orionis","Orion",0],[649,"ν² Columbae","Columba",0],[650,"49 Orionis","Orion",0],[651,"126 Tauri","Taurus",0],[652,"Alnitak","Orion"],[653,"ζ Orionis","Orion",0],[654,"HR 1952"],[655,"γ Mensae","Mensa",0],[656,"Phact","Columba"],[657,"HR 1958"],[658,"51 Orionis","Orion",0],[659,"ο Aurigae","Auriga",0],[660,"HR 1973"],[661,"γ Leporis","Lepus",0],[662,"130 Tauri","Taurus",0],[663,"133 Tauri","Taurus",0],[664,"τ Aurigae","Auriga",0],[665,"μ Columbae","Columba",0],[666,"ζ Leporis","Lepus",0],[667,"52 Orionis","Orion",0],[668,"132 Tauri","Taurus",0],[669,"Saiph","Orion"],[670,"HR 2008"],[671,"134 Tauri","Taurus",0],[672,"υ Aurigae","Auriga",0],[673,"ν Aurigae","Auriga",0],[674,"δ Doradus","Dorado",0],[675,"β Pictoris","Pictor",0],[676,"HR 2021"],[677,"31 Camelopardalis","Camelopardalis",0],[678,"ξ Aurigae","Auriga",0],[679,"55 Orionis","Orion",0],[680,"136 Tauri","Taurus",0],[681,"δ Leporis","Lepus",0],[682,"56 Orionis","Orion",0],[683,"Wazn","Columba"],[684,"γ Pictoris","Pictor",0],[685,"χ¹ Orionis","Orion",0],[686,"HR 2049"],[687,"λ Columbae","Columba",0],[688,"Betelgeuse","Orion"],[689,"HR 2063"],[690,"ε Doradus","Dorado",0],[691,"δ Aurigae","Auriga",0],[692,"139 Tauri","Taurus",0],[693,"η Leporis","Lepus",0],[694,"ξ Columbae","Columba",0],[695,"Menkalinan","Auriga"],[696,"π Aurigae","Auriga",0],[697,"σ Columbae","Columba",0],[698,"HR 2094"],[699,"Mahasim","Auriga"],[700,"HR 2102"],[701,"60 Orionis","Orion",0],[702,"γ Columbae","Columba",0],[703,"2 Monocerotis","Monoceros",0],[704,"HR 2113"],[705,"η Columbae","Columba",0],[706,"μ Orionis","Orion",0],[707,"κ Mensae","Mensa",0],[708,"3 Monocerotis","Monoceros",0],[709,"64 Orionis","Orion",0],[710,"1 Geminorum","Gemini",0],[711,"χ² Orionis","Orion",0],[712,"HR 2140"],[713,"HR 2142"],[714,"40 Aurigae","Auriga",0],[715,"17 Leporis","Lepus",0],[716,"37 Camelopardalis","Camelopardalis",0],[717,"HR 2154"],[718,"θ Leporis","Lepus",0],[719,"ν Orionis","Orion",0],[720,"HR 2163"],[721,"36 Camelopardalis","Camelopardalis",0],[722,"19 Leporis","Lepus",0],[723,"Elkurud","Columba"],[724,"HR 2180"],[725,"π² Columbae","Columba",0],[726,"HR 2196"],[727,"69 Orionis","Orion",0],[728,"ξ Orionis","Orion",0],[729,"40 Camelopardalis","Camelopardalis",0],[730,"HR 2205"],[731,"HR 2209"],[732,"δ Pictoris","Pictor",0],[733,"1 Lyncis","Lynx",0],[734,"Propus","Gemini"],[735,"κ Aurigae","Auriga",0],[736,"71 Orionis","Orion",0],[737,"ν Doradus","Dorado",0],[738,"72 Orionis","Orion",0],[739,"γ Monocerotis","Monoceros",0],[740,"73 Orionis","Orion",0],[741,"2 Lyncis","Lynx",0],[742,"74 Orionis","Orion",0],[743,"HR 2244"],[744,"η² Doradus","Dorado",0],[745,"75 Orionis","Orion",0],[746,"κ Columbae","Columba",0],[747,"HR 2260"],[748,"α Mensae","Mensa",0],[749,"45 Aurigae","Auriga",0],[750,"HR 2267"],[751,"7 Monocerotis","Monoceros",0],[752,"HR 2275"],[753,"Furud","Canis Major"],[754,"Tejat","Gemini"],[755,"ψ¹ Aurigae","Auriga",0],[756,"5 Lyncis","Lynx",0],[757,"Mirzam","Canis Major"],[758,"δ Columbae","Columba",0],[759,"ε Monocerotis","Monoceros",0],[760,"HR 2305"],[761,"Canopus","Carina"],[762,"HR 2334"],[763,"ν Geminorum","Gemini",0],[764,"10 Monocerotis","Monoceros",0],[765,"β Monocerotis","Monoceros",0],[766,"β Monocerotis","Monoceros",0],[767,"λ Canis Majoris","Canis Major",0],[768,"HR 2375"],[769,"π² Doradus","Dorado",0],[770,"HR 2379"],[771,"HR 2381"],[772,"HR 2384"],[773,"13 Monocerotis","Monoceros",0],[774,"ξ¹ Canis Majoris","Canis Major",0],[775,"HR 2389"],[776,"HR 2395"],[777,"49 Aurigae","Auriga",0],[778,"HR 2399"],[779,"HR 2401"],[780,"HR 2405"],[781,"HR 2411"],[782,"ξ² Canis Majoris","Canis Major",0],[783,"ψ³ Aurigae","Auriga",0],[784,"Alhena","Gemini"],[785,"ψ² Aurigae","Auriga",0],[786,"ν² Canis Majoris","Canis Major",0],[787,"HR 2435"],[788,"ν³ Canis Majoris","Canis Major",0],[789,"HR 2447"],[790,"HR 2450"],[791,"ν Puppis","Puppis",0],[792,"15 Monocerotis","Monoceros",0],[793,"ψ⁴ Aurigae","Auriga",0],[794,"HR 2462"],[795,"26 Geminorum","Gemini",0],[796,"HR 2469"],[797,"12 Lyncis","Lynx",0],[798,"Mebsuta","Gemini"],[799,"13 Lyncis","Lynx",0],[800,"30 Geminorum","Gemini",0],[801,"28 Geminorum","Gemini",0],[802,"ψ⁵ Aurigae","Auriga",0],[803,"Alzirr","Gemini"],[804,"ψ⁶ Aurigae","Auriga",0],[805,"42 Camelopardalis","Camelopardalis",0],[806,"Sirius","Canis Major"],[807,"10 Canis Majoris","Canis Major",0],[808,"HR 2498"],[809,"17 Monocerotis","Monoceros",0],[810,"11 Canis Majoris","Canis Major",0],[811,"18 Monocerotis","Monoceros",0],[812,"HR 2508"],[813,"43 Camelopardalis","Camelopardalis",0],[814,"ψ⁷ Aurigae","Auriga",0],[815,"HR 2518"],[816,"14 Lyncis","Lynx",0],[817,"HR 2522"],[818,"HR 2523"],[819,"HR 2527"],[820,"36 Geminorum","Gemini",0],[821,"κ Canis Majoris","Canis Major",0],[822,"θ Geminorum","Gemini",0],[823,"HR 2548"],[824,"HR 2549"],[825,"α Pictoris","Pictor",0],[826,"τ Puppis","Puppis",0],[827,"HR 2554"],[828,"15 Lyncis","Lynx",0],[829,"38 Geminorum","Gemini",0],[830,"15 Canis Majoris","Canis Major",0],[831,"HR 2572"],[832,"θ Canis Majoris","Canis Major",0],[833,"ο¹ Canis Majoris","Canis Major",0],[834,"16 Lyncis","Lynx",0],[835,"π Canis Majoris","Canis Major",0],[836,"μ Canis Majoris","Canis Major",0],[837,"HR 2595"],[838,"ι Canis Majoris","Canis Major",0],[839,"ι Volantis","Volans",0],[840,"HR 2607"],[841,"HR 2608"],[842,"HR 2609"],[843,"Adhara","Canis Major"],[844,"HR 2619"],[845,"ω Geminorum","Gemini",0],[846,"HR 2639"],[847,"Nganurganity","Canis Major"],[848,"19 Monocerotis","Monoceros",0],[849,"HR 2649"],[850,"Mekbuda","Gemini"],[851,"HR 2652"],[852,"ο² Canis Majoris","Canis Major",0],[853,"Muliphein","Canis Major"],[854,"HR 2662"],[855,"HR 2666"],[856,"HR 2672"],[857,"HR 2674"],[858,"HR 2678"],[859,"HR 2683"],[860,"45 Geminorum","Gemini",0],[861,"θ Mensae","Mensa",0],[862,"Wezen","Canis Major"],[863,"63 Aurigae","Auriga",0],[864,"τ Geminorum","Gemini",0],[865,"20 Monocerotis","Monoceros",0],[866,"HR 2702"],[867,"HR 2703"],[868,"21 Monocerotis","Monoceros",0],[869,"HR 2708"],[870,"δ Monocerotis","Monoceros",0],[871,"18 Lyncis","Lynx",0],[872,"51 Geminorum","Gemini",0],[873,"HR 2719"],[874,"HR 2727"],[875,"HR 2729"],[876,"γ² Volantis","Volans",0],[877,"HR 2740"],[878,"HR 2742"],[879,"27 Canis Majoris","Canis Major",0],[880,"HR 2746"],[881,"HR 2748"],[882,"ω Canis Majoris","Canis Major",0],[883,"HR 2751"],[884,"HR 2756"],[885,"HR 2758"],[886,"HR 2762"],[887,"λ Geminorum","Gemini",0],[888,"HR 2764"],[889,"HR 2766"],[890,"HR 2770"],[891,"π Puppis","Puppis",0],[892,"Wasat","Gemini"],[893,"29 Canis Majoris","Canis Major",0],[894,"τ Canis Majoris","Canis Major",0],[895,"19 Lyncis","Lynx",0],[896,"HR 2786"],[897,"HR 2787"],[898,"HR 2790"],[899,"HR 2791"],[900,"65 Aurigae","Auriga",0],[901,"56 Geminorum","Gemini",0],[902,"HR 2796"],[903,"δ Volantis","Volans",0],[904,"66 Aurigae","Auriga",0],[905,"57 Geminorum","Gemini",0],[906,"HR 2812"],[907,"HR 2815"],[908,"21 Lyncis","Lynx",0],[909,"HR 2819"],[910,"1 Canis Minoris","Canis Minor",0],[911,"ι Geminorum","Gemini",0],[912,"HR 2822"],[913,"HR 2823"],[914,"HR 2825"],[915,"Aludra","Canis Major"],[916,"ε Canis Minoris","Canis Minor",0],[917,"HR 2834"],[918,"Gomeisa","Canis Minor"],[919,"63 Geminorum","Gemini",0],[920,"22 Lyncis","Lynx",0],[921,"η Canis Minoris","Canis Minor",0],[922,"ρ Geminorum","Gemini",0],[923,"γ Canis Minoris","Canis Minor",0],[924,"64 Geminorum","Gemini",0],[925,"65 Geminorum","Gemini",0],[926,"HR 2862"],[927,"6 Canis Minoris","Canis Minor",0],[928,"HR 2874"],[929,"HR 2875"],[930,"HR 2877"],[931,"σ Puppis","Puppis",0],[932,"δ¹ Canis Minoris","Canis Minor",0],[933,"HR 2881"],[934,"68 Geminorum","Gemini",0],[935,"α Geminorum","Gemini",0],[936,"Castor","Gemini"],[937,"HR 2896"],[938,"HR 2902"],[939,"υ Geminorum","Gemini",0],[940,"HR 2906"],[941,"HR 2922"],[942,"25 Monocerotis","Monoceros",0],[943,"Jishui","Gemini"],[944,"HR 2934"],[945,"HR 2937"],[946,"74 Geminorum","Gemini",0],[947,"Procyon","Canis Minor"],[948,"HR 2944"],[949,"24 Lyncis","Lynx",0],[950,"HR 2948"],[951,"HR 2949"],[952,"HR 2959"],[953,"HR 2961"],[954,"HR 2969"],[955,"α Monocerotis","Monoceros",0],[956,"σ Geminorum","Gemini",0],[957,"HR 2981"],[958,"76 Geminorum","Gemini",0],[959,"κ Geminorum","Gemini",0],[960,"Pollux","Gemini"],[961,"1 Puppis","Puppis",0],[962,"3 Puppis","Puppis",0],[963,"HR 2998"],[964,"HR 2999"],[965,"HR 3002"],[966,"81 Geminorum","Gemini",0],[967,"11 Canis Minoris","Canis Minor",0],[968,"π Geminorum","Gemini",0],[969,"HR 3014"],[970,"4 Puppis","Puppis",0],[971,"HR 3017"],[972,"HR 3018"],[973,"ζ Volantis","Volans",0],[974,"5 Puppis","Puppis",0],[975,"ο Puppis","Puppis",0],[976,"HR 3035"],[977,"HR 3037"],[978,"HR 3043"],[979,"6 Puppis","Puppis",0],[980,"Azmidi","Puppis"],[981,"HR 3046"],[982,"HR 3055"],[983,"ζ Canis Minoris","Canis Minor",0],[984,"9 Puppis","Puppis",0],[985,"26 Lyncis","Lynx",0],[986,"φ Geminorum","Gemini",0],[987,"HR 3075"],[988,"HR 3079"],[989,"HR 3080"],[990,"HR 3082"],[991,"HR 3084"],[992,"HR 3085"],[993,"85 Geminorum","Gemini",0],[994,"HR 3089"],[995,"HR 3090"],[996,"HR 3091"],[997,"11 Puppis","Puppis",0],[998,"14 Canis Minoris","Canis Minor",0],[999,"HR 3113"],[1000,"HR 3114"],[1001,"HR 3116"],[1002,"χ Carinae","Carina",0],[1003,"HR 3121"],[1004,"27 Monocerotis","Monoceros",0],[1005,"12 Puppis","Puppis",0],[1006,"HR 3129"],[1007,"HR 3131"],[1008,"HR 3140"],[1009,"28 Monocerotis","Monoceros",0],[1010,"HR 3145"],[1011,"χ Geminorum","Gemini",0],[1012,"HR 3153"],[1013,"HR 3159"],[1014,"8 Cancri","Cancer",0],[1015,"Naos","Puppis"],[1016,"HR 3170"],[1017,"27 Lyncis","Lynx",0],[1018,"μ² Cancri","Cancer",0],[1019,"HR 3182"],[1020,"HR 3183"],[1021,"Tureis","Puppis"],[1022,"HR 3187"],[1023,"ζ Monocerotis","Monoceros",0],[1024,"16 Puppis","Puppis",0],[1025,"HR 3204"],[1026,"γ¹ Velorum","Vela",0],[1027,"γ² Velorum","Vela",0],[1028,"19 Puppis","Puppis",0],[1029,"HR 3212"],[1030,"HR 3213"],[1031,"HR 3220"],[1032,"ε Volantis","Volans",0],[1033,"HR 3225"],[1034,"HR 3226"],[1035,"20 Puppis","Puppis",0],[1036,"HR 3237"],[1037,"HR 3240"],[1038,"HR 3243"],[1039,"HR 3244"],[1040,"Tarf","Cancer"],[1041,"HR 3260"],[1042,"χ Cancri","Cancer",0],[1043,"HR 3270"],[1044,"Alsciaukat","Lynx"],[1045,"HR 3280"],[1046,"HR 3282"],[1047,"HR 3283"],[1048,"HR 3294"],[1049,"κ¹ Volantis","Volans",0],[1050,"HR 3306"],[1051,"Avior","Carina"],[1052,"HR 3314"],[1053,"HR 3315"],[1054,"α Chamaeleontis","Chamaeleon",0],[1055,"27 Cancri","Cancer",0],[1056,"Muscida","Ursa Major"],[1057,"HR 3326"],[1058,"HR 3330"],[1059,"η Volantis","Volans",0],[1060,"θ Chamaeleontis","Chamaeleon",0],[1061,"β Volantis","Volans",0],[1062,"HR 3350"],[1063,"2 Ursae Majoris","Ursa Major",0],[1064,"θ Cancri","Cancer",0],[1065,"HR 3358"],[1066,"HR 3359"],[1067,"η Cancri","Cancer",0],[1068,"HR 3367"],[1069,"π² Ursae Majoris","Ursa Major",0],[1070,"HR 3407"],[1071,"δ Hydrae","Hydra",0],[1072,"HR 3414"],[1073,"HR 3415"],[1074,"Minchir","Hydra"],[1075,"η Pyxidis","Pyxis",0],[1076,"34 Lyncis","Lynx",0],[1077,"HR 3426"],[1078,"HR 3430"],[1079,"6 Hydrae","Hydra",0],[1080,"HR 3432"],[1081,"ζ Pyxidis","Pyxis",0],[1082,"β Pyxidis","Pyxis",0],[1083,"HR 3439"],[1084,"HR 3440"],[1085,"9 Hydrae","Hydra",0],[1086,"HR 3442"],[1087,"HR 3445"],[1088,"HR 3447"],[1089,"Asellus Borealis","Cancer"],[1090,"HR 3452"],[1091,"η Hydrae","Hydra",0],[1092,"HR 3456"],[1093,"HR 3457"],[1094,"HR 3459"],[1095,"θ Volantis","Volans",0],[1096,"Asellus Australis","Cancer"],[1097,"HR 3467"],[1098,"α Pyxidis","Pyxis",0],[1099,"ι Cancri","Cancer",0],[1100,"HR 3476"],[1101,"HR 3477"],[1102,"Ashlesha","Hydra"],[1103,"12 Hydrae","Hydra",0],[1104,"Alsephina","Vela"],[1105,"HR 3486"],[1106,"HR 3487"],[1107,"ρ Hydrae","Hydra",0],[1108,"HR 3494"],[1109,"HR 3498"],[1110,"14 Hydrae","Hydra",0],[1111,"η Chamaeleontis","Chamaeleon",0],[1112,"35 Lyncis","Lynx",0],[1113,"HR 3512"],[1114,"HR 3514"],[1115,"γ Pyxidis","Pyxis",0],[1116,"HR 3520"],[1117,"HR 3527"],[1118,"57 Cancri","Cancer",0],[1119,"HR 3537"],[1120,"ρ² Cancri","Cancer",0],[1121,"ζ Hydrae","Hydra",0],[1122,"60 Cancri","Cancer",0],[1123,"HR 3551"],[1124,"σ² Cancri","Cancer",0],[1125,"δ Pyxidis","Pyxis",0],[1126,"ο¹ Cancri","Cancer",0],[1127,"Talitha","Ursa Major"],[1128,"HR 3571"],[1129,"Acubens","Cancer"],[1130,"HR 3574"],[1131,"σ³ Cancri","Cancer",0],[1132,"ρ Ursae Majoris","Ursa Major",0],[1133,"HR 3579"],[1134,"HR 3582"],[1135,"HR 3588"],[1136,"HR 3591"],[1137,"Alkaphrah","Ursa Major"],[1138,"ν Cancri","Cancer",0],[1139,"HR 3598"],[1140,"HR 3605"],[1141,"σ¹ Ursae Majoris","Ursa Major",0],[1142,"HR 3612"],[1143,"ω Hydrae","Hydra",0],[1144,"HR 3614"],[1145,"α Volantis","Volans",0],[1146,"σ² Ursae Majoris","Ursa Major",0],[1147,"15 Ursae Majoris","Ursa Major",0],[1148,"τ Cancri","Cancer",0],[1149,"κ Cancri","Cancer",0],[1150,"τ Ursae Majoris","Ursa Major",0],[1151,"Nahn","Cancer"],[1152,"κ Pyxidis","Pyxis",0],[1153,"Suhail","Vela"],[1154,"20 Hydrae","Hydra",0],[1155,"HR 3642"],[1156,"HR 3643"],[1157,"16 Ursae Majoris","Ursa Major",0],[1158,"36 Lyncis","Lynx",0],[1159,"HR 3654"],[1160,"HR 3659"],[1161,"17 Ursae Majoris","Ursa Major",0],[1162,"18 Ursae Majoris","Ursa Major",0],[1163,"HR 3663"],[1164,"θ Hydrae","Hydra",0],[1165,"π² Cancri","Cancer",0],[1166,"HR 3674"],[1167,"ζ Octantis","Octans",0],[1168,"HR 3679"],[1169,"23 Hydrae","Hydra",0],[1170,"HR 3682"],[1171,"24 Hydrae","Hydra",0],[1172,"HR 3684"],[1173,"Miaplacidus","Carina"],[1174,"38 Lyncis","Lynx",0],[1175,"HR 3692"],[1176,"HR 3694"],[1177,"HR 3696"],[1178,"HR 3698"],[1179,"Aspidiske","Carina"],[1180,"HR 3703"],[1181,"α Lyncis","Lynx",0],[1182,"26 Hydrae","Hydra",0],[1183,"27 Hydrae","Hydra",0],[1184,"HR 3712"],[1185,"θ Pyxidis","Pyxis",0],[1186,"HR 3720"],[1187,"HR 3728"],[1188,"κ Leonis","Leo",0],[1189,"λ Pyxidis","Pyxis",0],[1190,"Markeb","Vela"],[1191,"Intercrus","Ursa Major"],[1192,"Alphard","Hydra"],[1193,"HR 3749"],[1194,"HR 3750"],[1195,"HR 3751"],[1196,"HR 3753"],[1197,"ω Leonis","Leo",0],[1198,"23 Ursae Majoris","Ursa Major",0],[1199,"τ¹ Hydrae","Hydra",0],[1200,"ε Antliae","Antlia",0],[1201,"8 Leonis Minoris","Leo Minor",0],[1202,"HR 3770"],[1203,"24 Ursae Majoris","Ursa Major",0],[1204,"Alterf","Leo"],[1205,"θ Ursae Majoris","Ursa Major",0],[1206,"HR 3777"],[1207,"6 Leonis","Leo",0],[1208,"ξ Leonis","Leo",0],[1209,"HR 3784"],[1210,"ψ Velorum","Vela",0],[1211,"τ² Hydrae","Hydra",0],[1212,"ι Chamaeleontis","Chamaeleon",0],[1213,"26 Ursae Majoris","Ursa Major",0],[1214,"10 Leonis Minoris","Leo Minor",0],[1215,"HR 3803"],[1216,"HR 3807"],[1217,"HR 3808"],[1218,"HR 3809"],[1219,"11 Leonis Minoris","Leo Minor",0],[1220,"HR 3817"],[1221,"HR 3819"],[1222,"HR 3821"],[1223,"HR 3825"],[1224,"10 Leonis","Leo",0],[1225,"42 Lyncis","Lynx",0],[1226,"HR 3834"],[1227,"HR 3836"],[1228,"27 Ursae Majoris","Ursa Major",0],[1229,"HR 3840"],[1230,"HR 3842"],[1231,"Ukdah","Hydra"],[1232,"κ Hydrae","Hydra",0],[1233,"Subra","Leo"],[1234,"HR 3856"],[1235,"HR 3858"],[1236,"ζ Chamaeleontis","Chamaeleon",0],[1237,"HR 3862"],[1238,"HR 3863"],[1239,"ψ Leonis","Leo",0],[1240,"HR 3870"],[1241,"θ Antliae","Antlia",0],[1242,"ε Leonis","Leo",0],[1243,"HR 3881"],[1244,"HR 3884"],[1245,"υ Ursae Majoris","Ursa Major",0],[1246,"υ Carinae","Carina",0],[1247,"φ Ursae Majoris","Ursa Major",0],[1248,"HR 3898"],[1249,"22 Leonis","Leo",0],[1250,"ν Chamaeleontis","Chamaeleon",0],[1251,"Zhang","Hydra"],[1252,"Rasalas","Leo"],[1253,"γ Sextantis","Sextans",0],[1254,"HR 3912"],[1255,"31 Ursae Majoris","Ursa Major",0],[1256,"HR 3919"],[1257,"Felis","Hydra"],[1258,"19 Leonis Minoris","Leo Minor",0],[1259,"ν Leonis","Leo",0],[1260,"HR 3939"],[1261,"φ Velorum","Vela",0],[1262,"η Antliae","Antlia",0],[1263,"π Leonis","Leo",0],[1264,"20 Leonis Minoris","Leo Minor",0],[1265,"υ² Hydrae","Hydra",0],[1266,"21 Leonis Minoris","Leo Minor",0],[1267,"η Leonis","Leo",0],[1268,"HR 3976"],[1269,"31 Leonis","Leo",0],[1270,"α Sextantis","Sextans",0],[1271,"Regulus","Leo"],[1272,"HR 3990"],[1273,"HR 3991"],[1274,"λ Hydrae","Hydra",0],[1275,"HR 3995"],[1276,"HR 4017"],[1277,"HR 4023"],[1278,"23 Leonis Minoris","Leo Minor",0],[1279,"HR 4025"],[1280,"Adhafera","Leo"],[1281,"Tania Borealis","Ursa Major"],[1282,"37 Leonis","Leo",0],[1283,"ω Carinae","Carina",0],[1284,"ε Sextantis","Sextans",0],[1285,"HR 4049"],[1286,"HR 4050"],[1287,"40 Leonis","Leo",0],[1288,"Algieba","Leo"],[1289,"γ² Leonis","Leo",0],[1290,"HR 4062"],[1291,"HR 4063"],[1292,"Tania Australis","Ursa Major"],[1293,"HR 4072"],[1294,"HR 4074"],[1295,"HR 4080"],[1296,"28 Leonis Minoris","Leo Minor",0],[1297,"HR 4084"],[1298,"HR 4086"],[1299,"HR 4089"],[1300,"30 Leonis Minoris","Leo Minor",0],[1301,"μ Hydrae","Hydra",0],[1302,"β Leonis Minoris","Leo Minor",0],[1303,"HR 4102"],[1304,"α Antliae","Antlia",0],[1305,"HR 4110"],[1306,"36 Ursae Majoris","Ursa Major",0],[1307,"HR 4114"],[1308,"δ Sextantis","Sextans",0],[1309,"β Sextantis","Sextans",0],[1310,"HR 4120"],[1311,"HR 4126"],[1312,"46 Leonis","Leo",0],[1313,"HR 4132"],[1314,"ρ Leonis","Leo",0],[1315,"HR 4134"],[1316,"HR 4138"],[1317,"HR 4140"],[1318,"37 Ursae Majoris","Ursa Major",0],[1319,"HR 4142"],[1320,"HR 4143"],[1321,"44 Hydrae","Hydra",0],[1322,"48 Leonis","Leo",0],[1323,"HR 4153"],[1324,"HR 4159"],[1325,"HR 4162"],[1326,"HR 4163"],[1327,"HR 4164"],[1328,"37 Leonis Minoris","Leo Minor",0],[1329,"HR 4167"],[1330,"HR 4169"],[1331,"φ³ Hydrae","Hydra",0],[1332,"γ Chamaeleontis","Chamaeleon",0],[1333,"HR 4177"],[1334,"38 Ursae Majoris","Ursa Major",0],[1335,"HR 4180"],[1336,"HR 4181"],[1337,"HR 4191"],[1338,"41 Leonis Minoris","Leo Minor",0],[1339,"HR 4196"],[1340,"HR 4198"],[1341,"θ Carinae","Carina",0],[1342,"HR 4200"],[1343,"42 Leonis Minoris","Leo Minor",0],[1344,"HR 4205"],[1345,"51 Leonis","Leo",0],[1346,"52 Leonis","Leo",0],[1347,"HR 4214"],[1348,"μ Velorum","Vela",0],[1349,"HR 4219"],[1350,"HR 4220"],[1351,"HR 4221"],[1352,"HR 4222"],[1353,"53 Leonis","Leo",0],[1354,"δ¹ Chamaeleontis","Chamaeleon",0],[1355,"ν Hydrae","Hydra",0],[1356,"δ² Chamaeleontis","Chamaeleon",0],[1357,"44 Ursae Majoris","Ursa Major",0],[1358,"Praecipua","Leo Minor"],[1359,"ω Ursae Majoris","Ursa Major",0],[1360,"HR 4250"],[1361,"HR 4251"],[1362,"HR 4253"],[1363,"HR 4257"],[1364,"46 Ursae Majoris","Ursa Major",0],[1365,"54 Leonis","Leo",0],[1366,"ι Antliae","Antlia",0],[1367,"Chalawan","Ursa Major"],[1368,"HR 4280"],[1369,"Alkes","Crater"],[1370,"49 Ursae Majoris","Ursa Major",0],[1371,"58 Leonis","Leo",0],[1372,"HR 4293"],[1373,"59 Leonis","Leo",0],[1374,"Merak","Ursa Major"],[1375,"61 Leonis","Leo",0],[1376,"60 Leonis","Leo",0],[1377,"Dubhe","Ursa Major"],[1378,"HR 4305"],[1379,"χ Leonis","Leo",0],[1380,"HR 4313"],[1381,"χ¹ Hydrae","Hydra",0],[1382,"HR 4325"],[1383,"HR 4327"],[1384,"HR 4334"],[1385,"ψ Ursae Majoris","Ursa Major",0],[1386,"HR 4337"],[1387,"HR 4338"],[1388,"β Crateris","Crater",0],[1389,"HR 4350"],[1390,"HR 4352"],[1391,"HR 4355"],[1392,"69 Leonis","Leo",0],[1393,"Zosma","Leo"],[1394,"Chertan","Leo"],[1395,"72 Leonis","Leo",0],[1396,"73 Leonis","Leo",0],[1397,"φ Leonis","Leo",0],[1398,"75 Leonis","Leo",0],[1399,"ξ Ursae Majoris","Ursa Major",0],[1400,"Alula Australis","Ursa Major"],[1401,"Alula Borealis","Ursa Major"],[1402,"55 Ursae Majoris","Ursa Major",0],[1403,"δ Crateris","Crater",0],[1404,"σ Leonis","Leo",0],[1405,"π Centauri","Centaurus",0],[1406,"56 Ursae Majoris","Ursa Major",0],[1407,"λ Crateris","Crater",0],[1408,"HR 4396"],[1409,"ι Leonis","Leo",0],[1410,"79 Leonis","Leo",0],[1411,"HR 4401"],[1412,"ε Crateris","Crater",0],[1413,"γ Crateris","Crater",0],[1414,"HR 4409"],[1415,"HR 4413"],[1416,"HR 4415"],[1417,"τ Leonis","Leo",0],[1418,"57 Ursae Majoris","Ursa Major",0],[1419,"HR 4423"],[1420,"87 Leonis","Leo",0],[1421,"Giausar","Draco"],[1422,"HR 4439"],[1423,"ο¹ Centauri","Centaurus",0],[1424,"ο² Centauri","Centaurus",0],[1425,"HR 4449"],[1426,"ξ Hydrae","Hydra",0],[1427,"HR 4453"],[1428,"HR 4460"],[1429,"2 Draconis","Draco",0],[1430,"HR 4462"],[1431,"HR 4466"],[1432,"λ Centauri","Centaurus",0],[1433,"θ Crateris","Crater",0],[1434,"υ Leonis","Leo",0],[1435,"HR 4475"],[1436,"HR 4476"],[1437,"ω Virginis","Virgo",0],[1438,"HR 4487"],[1439,"ι Crateris","Crater",0],[1440,"HR 4492"],[1441,"ο Hydrae","Hydra",0],[1442,"92 Leonis","Leo",0],[1443,"61 Ursae Majoris","Ursa Major",0],[1444,"HR 4499"],[1445,"HR 4503"],[1446,"3 Draconis","Draco",0],[1447,"HR 4511"],[1448,"ζ Crateris","Crater",0],[1449,"ξ Virginis","Virgo",0],[1450,"ν Virginis","Virgo",0],[1451,"Taiyangshou","Ursa Major"],[1452,"HR 4519"],[1453,"λ Muscae","Musca",0],[1454,"HR 4521"],[1455,"HR 4522"],[1456,"HR 4523"],[1457,"HR 4526"],[1458,"93 Leonis","Leo",0],[1459,"4 Virginis","Virgo",0],[1460,"μ Muscae","Musca",0],[1461,"HR 4532"],[1462,"Denebola","Leo"],[1463,"HR 4537"],[1464,"HR 4538"],[1465,"Zavijava","Virgo"],[1466,"HR 4546"],[1467,"HR 4549"],[1468,"β Hydrae","Hydra",0],[1469,"Phecda","Ursa Major"],[1470,"HR 4558"],[1471,"η Crateris","Crater",0],[1472,"HR 4576"],[1473,"ε Chamaeleontis","Chamaeleon",0],[1474,"7 Virginis","Virgo",0],[1475,"π Virginis","Virgo",0],[1476,"HR 4590"],[1477,"67 Ursae Majoris","Ursa Major",0],[1478,"θ¹ Crucis","Crux",0],[1479,"HR 4600"],[1480,"θ² Crucis","Crux",0],[1481,"HR 4604"],[1482,"κ Chamaeleontis","Chamaeleon",0],[1483,"ο Virginis","Virgo",0],[1484,"η Crucis","Crux",0],[1485,"HR 4617"],[1486,"HR 4618"],[1487,"HR 4620"],[1488,"δ Centauri","Centaurus",0],[1489,"Alchiba","Corvus"],[1490,"HR 4625"],[1491,"ε Corvi","Corvus",0],[1492,"3 Corvi","Corvus",0],[1493,"ρ Centauri","Centaurus",0],[1494,"HR 4646"],[1495,"HR 4652"],[1496,"Imai","Crux"],[1497,"Megrez","Ursa Major"],[1498,"Gienah","Corvus"],[1499,"6 Comae Berenices","Coma Berenices",0],[1500,"7 Comae Berenices","Coma Berenices",0],[1501,"HR 4668"],[1502,"ε Muscae","Musca",0],[1503,"β Chamaeleontis","Chamaeleon",0],[1504,"ζ Crucis","Crux",0],[1505,"HR 4682"],[1506,"HR 4687"],[1507,"Zaniah","Virgo"],[1508,"3 Canum Venaticorum","Canes Venatici",0],[1509,"16 Virginis","Virgo",0],[1510,"ζ Corvi","Corvus",0],[1511,"11 Comae Berenices","Coma Berenices",0],[1512,"HR 4699"],[1513,"Ginan","Crux"],[1514,"ζ² Muscae","Musca",0],[1515,"HR 4706"],[1516,"12 Comae Berenices","Coma Berenices",0],[1517,"HR 4712"],[1518,"5 Canum Venaticorum","Canes Venatici",0],[1519,"13 Comae Berenices","Coma Berenices",0],[1520,"6 Canum Venaticorum","Canes Venatici",0],[1521,"HR 4729"],[1522,"Acrux","Crux"],[1523,"α² Crucis","Crux",0],[1524,"HR 4732"],[1525,"14 Comae Berenices","Coma Berenices",0],[1526,"γ Comae Berenices","Coma Berenices",0],[1527,"16 Comae Berenices","Coma Berenices",0],[1528,"HR 4739"],[1529,"σ Centauri","Centaurus",0],[1530,"HR 4748"],[1531,"17 Comae Berenices","Coma Berenices",0],[1532,"18 Comae Berenices","Coma Berenices",0],[1533,"Algorab","Corvus"],[1534,"74 Ursae Majoris","Ursa Major",0],[1535,"Gacrux","Crux"],[1536,"4 Draconis","Draco",0],[1537,"21 Comae Berenices","Coma Berenices",0],[1538,"HR 4768"],[1539,"γ Muscae","Musca",0],[1540,"η Corvi","Corvus",0],[1541,"21 Virginis","Virgo",0],[1542,"HR 4783"],[1543,"Chara","Canes Venatici"],[1544,"Kraz","Corvus"],[1545,"κ Draconis","Draco",0],[1546,"23 Comae Berenices","Coma Berenices",0],[1547,"24 Comae Berenices","Coma Berenices",0],[1548,"HR 4794"],[1549,"6 Draconis","Draco",0],[1550,"α Muscae","Musca",0],[1551,"HR 4800"],[1552,"τ Centauri","Centaurus",0],[1553,"HR 4803"],[1554,"χ Virginis","Virgo",0],[1555,"26 Comae Berenices","Coma Berenices",0],[1556,"HR 4817"],[1557,"γ Centauri","Centaurus",0],[1558,"HR 4823"],[1559,"Porrima","Virgo"],[1560,"γ Virginis","Virgo",0],[1561,"ρ Virginis","Virgo",0],[1562,"HR 4830"],[1563,"HR 4831"],[1564,"HR 4839"],[1565,"ι Crucis","Crux",0],[1566,"β Muscae","Musca",0],[1567,"La Superba","Canes Venatici"],[1568,"32 Virginis","Virgo",0],[1569,"HR 4848"],[1570,"27 Comae Berenices","Coma Berenices",0],[1571,"Mimosa","Crux"],[1572,"Tianyi","Draco"],[1573,"ι Octantis","Octans",0],[1574,"HR 4874"],[1575,"31 Comae Berenices","Coma Berenices",0],[1576,"HR 4888"],[1577,"HR 4889"],[1578,"HR 4893"],[1579,"35 Comae Berenices","Coma Berenices",0],[1580,"λ Crucis","Crux",0],[1581,"μ¹ Crucis","Crux",0],[1582,"μ² Crucis","Crux",0],[1583,"ψ Virginis","Virgo",0],[1584,"Alioth","Ursa Major"],[1585,"HR 4906"],[1586,"HR 4908"],[1587,"Minelauva","Virgo"],[1588,"HR 4913"],[1589,"Cor Caroli","Canes Venatici"],[1590,"Taiyi","Draco"],[1591,"36 Comae Berenices","Coma Berenices",0],[1592,"δ Muscae","Musca",0],[1593,"37 Comae Berenices","Coma Berenices",0],[1594,"9 Draconis","Draco",0],[1595,"78 Ursae Majoris","Ursa Major",0],[1596,"Vindemiatrix","Virgo"],[1597,"ξ¹ Centauri","Centaurus",0],[1598,"HR 4940"],[1599,"ξ² Centauri","Centaurus",0],[1600,"14 Canum Venaticorum","Canes Venatici",0],[1601,"41 Comae Berenices","Coma Berenices",0],[1602,"49 Virginis","Virgo",0],[1603,"ψ Hydrae","Hydra",0],[1604,"θ Virginis","Virgo",0],[1605,"Diadem","Coma Berenices"],[1606,"α Comae Berenices","Coma Berenices",0],[1607,"HR 4973"],[1608,"HR 4975"],[1609,"HR 4979"],[1610,"53 Virginis","Virgo",0],[1611,"β Comae Berenices","Coma Berenices",0],[1612,"HR 4989"],[1613,"η Muscae","Musca",0],[1614,"55 Virginis","Virgo",0],[1615,"HR 4997"],[1616,"57 Virginis","Virgo",0],[1617,"HR 5002"],[1618,"HR 5006"],[1619,"59 Virginis","Virgo",0],[1620,"HR 5013"],[1621,"σ Virginis","Virgo",0],[1622,"20 Canum Venaticorum","Canes Venatici",0],[1623,"61 Virginis","Virgo",0],[1624,"γ Hydrae","Hydra",0],[1625,"21 Canum Venaticorum","Canes Venatici",0],[1626,"HR 5026"],[1627,"ι Centauri","Centaurus",0],[1628,"HR 5035"],[1629,"HR 5041"],[1630,"ι¹ Muscae","Musca",0],[1631,"63 Virginis","Virgo",0],[1632,"HR 5048"],[1633,"Mizar","Ursa Major"],[1634,"ζ Ursae Majoris","Ursa Major",0],[1635,"Spica","Virgo"],[1636,"HR 5058"],[1637,"Alcor","Ursa Major"],[1638,"68 Virginis","Virgo",0],[1639,"69 Virginis","Virgo",0],[1640,"HR 5071"],[1641,"70 Virginis","Virgo",0],[1642,"HR 5080"],[1643,"HR 5085"],[1644,"HR 5089"],[1645,"74 Virginis","Virgo",0],[1646,"76 Virginis","Virgo",0],[1647,"78 Virginis","Virgo",0],[1648,"Heze","Virgo"],[1649,"HR 5110"],[1650,"24 Canum Venaticorum","Canes Venatici",0],[1651,"25 Canum Venaticorum","Canes Venatici",0],[1652,"ε Centauri","Centaurus",0],[1653,"HR 5139"],[1654,"HR 5140"],[1655,"HR 5141"],[1656,"82 Ursae Majoris","Ursa Major",0],[1657,"82 Virginis","Virgo",0],[1658,"83 Ursae Majoris","Ursa Major",0],[1659,"84 Virginis","Virgo",0],[1660,"1 Centauri","Centaurus",0],[1661,"HR 5172"],[1662,"HR 5174"],[1663,"HR 5176"],[1664,"87 Virginis","Virgo",0],[1665,"τ Boötis","Boötes",0],[1666,"HR 5186"],[1667,"ν Centauri","Centaurus",0],[1668,"Alkaid","Ursa Major"],[1669,"2 Centauri","Centaurus",0],[1670,"μ Centauri","Centaurus",0],[1671,"89 Virginis","Virgo",0],[1672,"υ Boötis","Boötes",0],[1673,"6 Boötis","Boötes",0],[1674,"HR 5207"],[1675,"3 Centauri","Centaurus",0],[1676,"HR 5219"],[1677,"4 Centauri","Centaurus",0],[1678,"10 Draconis","Draco",0],[1679,"ζ Centauri","Centaurus",0],[1680,"90 Virginis","Virgo",0],[1681,"Muphrid","Boötes"],[1682,"HR 5241"],[1683,"9 Boötis","Boötes",0],[1684,"φ Centauri","Centaurus",0],[1685,"υ¹ Centauri","Centaurus",0],[1686,"47 Hydrae","Hydra",0],[1687,"υ² Centauri","Centaurus",0],[1688,"θ Apodis","Apus",0],[1689,"τ Virginis","Virgo",0],[1690,"HR 5265"],[1691,"Hadar","Centaurus"],[1692,"χ Centauri","Centaurus",0],[1693,"π Hydrae","Hydra",0],[1694,"Menkent","Centaurus"],[1695,"95 Virginis","Virgo",0],[1696,"Thuban","Draco"],[1697,"HR 5297"],[1698,"HR 5299"],[1699,"13 Boötis","Boötes",0],[1700,"HR 5301"],[1701,"η Apodis","Apus",0],[1702,"12 Boötis","Boötes",0],[1703,"50 Hydrae","Hydra",0],[1704,"HR 5313"],[1705,"Kang","Virgo"],[1706,"HR 5316"],[1707,"4 Ursae Minoris","Ursa Minor",0],[1708,"κ² Boötis","Boötes",0],[1709,"15 Boötis","Boötes",0],[1710,"HR 5332"],[1711,"HR 5334"],[1712,"ε Apodis","Apus",0],[1713,"Syrma","Virgo"],[1714,"δ Octantis","Octans",0],[1715,"Arcturus","Boötes"],[1716,"HR 5349"],[1717,"ι Boötis","Boötes",0],[1718,"Xuange","Boötes"],[1719,"ι Lupi","Lupus",0],[1720,"HR 5358"],[1721,"Khambalia","Virgo"],[1722,"HR 5361"],[1723,"HR 5364"],[1724,"18 Boötis","Boötes",0],[1725,"υ Virginis","Virgo",0],[1726,"ψ Centauri","Centaurus",0],[1727,"20 Boötis","Boötes",0],[1728,"HR 5371"],[1729,"HR 5378"],[1730,"51 Hydrae","Hydra",0],[1731,"HR 5386"],[1732,"HR 5390"],[1733,"HR 5392"],[1734,"τ¹ Lupi","Lupus",0],[1735,"τ² Lupi","Lupus",0],[1736,"θ Boötis","Boötes",0],[1737,"22 Boötis","Boötes",0],[1738,"52 Hydrae","Hydra",0],[1739,"Elgafar","Virgo"],[1740,"106 Virginis","Virgo",0],[1741,"HR 5412"],[1742,"HR 5413"],[1743,"σ Lupi","Lupus",0],[1744,"ρ Boötis","Boötes",0],[1745,"5 Ursae Minoris","Ursa Minor",0],[1746,"Seginus","Boötes"],[1747,"η Centauri","Centaurus",0],[1748,"σ Boötis","Boötes",0],[1749,"HR 5450"],[1750,"ρ Lupi","Lupus",0],[1751,"Rigil Kentaurus","Centaurus"],[1752,"Toliman","Centaurus"],[1753,"α Circini","Circinus",0],[1754,"33 Boötis","Boötes",0],[1755,"α Lupi","Lupus",0],[1756,"α Apodis","Apus",0],[1757,"HR 5471"],[1758,"π¹ Boötis","Boötes",0],[1759,"ζ Boötis","Boötes",0],[1760,"ζ Boötis","Boötes",0],[1761,"31 Boötis","Boötes",0],[1762,"HR 5482"],[1763,"HR 5485"],[1764,"μ Virginis","Virgo",0],[1765,"HR 5489"],[1766,"34 Boötis","Boötes",0],[1767,"HR 5495"],[1768,"54 Hydrae","Hydra",0],[1769,"ο Boötis","Boötes",0],[1770,"ε Boötis","Boötes",0],[1771,"Izar","Boötes"],[1772,"109 Virginis","Virgo",0],[1773,"56 Hydrae","Hydra",0],[1774,"μ Librae","Libra",0],[1775,"58 Hydrae","Hydra",0],[1776,"ο Lupi","Lupus",0],[1777,"α¹ Librae","Libra",0],[1778,"Zubenelgenubi","Libra"],[1779,"11 Librae","Libra",0],[1780,"HR 5540"],[1781,"HR 5541"],[1782,"HR 5543"],[1783,"ξ Boötis","Boötes",0],[1784,"HR 5546"],[1785,"12 Librae","Libra",0],[1786,"θ Circini","Circinus",0],[1787,"HR 5552"],[1788,"HR 5556"],[1789,"HR 5558"],[1790,"Kochab","Ursa Minor"],[1791,"ξ² Librae","Libra",0],[1792,"16 Librae","Libra",0],[1793,"β Lupi","Lupus",0],[1794,"κ Centauri","Centaurus",0],[1795,"δ Librae","Libra",0],[1796,"HR 5589"],[1797,"η Circini","Circinus",0],[1798,"HR 5595"],[1799,"ω Boötis","Boötes",0],[1800,"110 Virginis","Virgo",0],[1801,"Nekkar","Boötes"],[1802,"Brachium","Libra"],[1803,"π Lupi","Lupus",0],[1804,"π Lupi","Lupus",0],[1805,"HR 5607"],[1806,"ψ Boötis","Boötes",0],[1807,"44 Boötis","Boötes",0],[1808,"ν Librae","Libra",0],[1809,"λ Lupi","Lupus",0],[1810,"45 Boötis","Boötes",0],[1811,"HR 5635"],[1812,"κ¹ Lupi","Lupus",0],[1813,"ζ Lupi","Lupus",0],[1814,"HR 5651"],[1815,"ι¹ Librae","Libra",0],[1816,"1 Lupi","Lupus",0],[1817,"δ Circini","Circinus",0],[1818,"ε Circini","Circinus",0],[1819,"HR 5667"],[1820,"β Circini","Circinus",0],[1821,"γ Trianguli Australis","Triangulum Australe",0],[1822,"3 Serpentis","Serpens",0],[1823,"χ Boötis","Boötes",0],[1824,"HR 5678"],[1825,"HR 5680"],[1826,"δ Boötis","Boötes",0],[1827,"μ Lupi","Lupus",0],[1828,"Zubeneschamali","Libra"],[1829,"2 Lupi","Lupus",0],[1830,"HR 5691"],[1831,"5 Serpentis","Serpens",0],[1832,"δ Lupi","Lupus",0],[1833,"ν¹ Lupi","Lupus",0],[1834,"γ Circini","Circinus",0],[1835,"φ¹ Lupi","Lupus",0],[1836,"ε Lupi","Lupus",0],[1837,"6 Serpentis","Serpens",0],[1838,"φ² Lupi","Lupus",0],[1839,"11 Ursae Minoris","Ursa Minor",0],[1840,"50 Boötis","Boötes",0],[1841,"υ Lupi","Lupus",0],[1842,"ε Librae","Libra",0],[1843,"HR 5724"],[1844,"HR 5726"],[1845,"κ¹ Apodis","Apus",0],[1846,"Alkalurops","Boötes"],[1847,"Pherkad","Ursa Minor"],[1848,"HR 5736"],[1849,"τ¹ Serpentis","Serpens",0],[1850,"HR 5741"],[1851,"HR 5742"],[1852,"Edasich","Draco"],[1853,"10 Serpentis","Serpens",0],[1854,"Nusakan","Corona Borealis"],[1855,"ν¹ Boötis","Boötes",0],[1856,"ζ⁴ Librae","Libra",0],[1857,"ε Trianguli Australis","Triangulum Australe",0],[1858,"ν² Boötis","Boötes",0],[1859,"36 Librae","Libra",0],[1860,"γ Lupi","Lupus",0],[1861,"37 Librae","Libra",0],[1862,"θ Coronae Borealis","Corona Borealis",0],[1863,"HR 5780"],[1864,"HR 5781"],[1865,"HR 5784"],[1866,"Zubenelhakrabi","Libra"],[1867,"δ Serpentis","Serpens",0],[1868,"δ Serpentis","Serpens",0],[1869,"Alphecca","Corona Borealis"],[1870,"υ Librae","Libra",0],[1871,"ω Lupi","Lupus",0],[1872,"HR 5798"],[1873,"μ Coronae Borealis","Corona Borealis",0],[1874,"16 Serpentis","Serpens",0],[1875,"τ Librae","Libra",0],[1876,"41 Librae","Libra",0],[1877,"ψ¹ Lupi","Lupus",0],[1878,"φ Boötis","Boötes",0],[1879,"42 Librae","Libra",0],[1880,"HR 5825"],[1881,"θ Ursae Minoris","Ursa Minor",0],[1882,"ζ² Coronae Borealis","Corona Borealis",0],[1883,"HR 5837"],[1884,"κ Librae","Libra",0],[1885,"ψ² Lupi","Lupus",0],[1886,"ι Serpentis","Serpens",0],[1887,"χ Serpentis","Serpens",0],[1888,"η Librae","Libra",0],[1889,"γ Coronae Borealis","Corona Borealis",0],[1890,"Unukalhai","Serpens"],[1891,"25 Serpentis","Serpens",0],[1892,"β Serpentis","Serpens",0],[1893,"λ Serpentis","Serpens",0],[1894,"Gudja","Serpens"],[1895,"μ Serpentis","Serpens",0],[1896,"χ Lupi","Lupus",0],[1897,"1 Scorpii","Scorpius",0],[1898,"HR 5886"],[1899,"ω Serpentis","Serpens",0],[1900,"δ Coronae Borealis","Corona Borealis",0],[1901,"κ Trianguli Australis","Triangulum Australe",0],[1902,"ε Serpentis","Serpens",0],[1903,"HR 5894"],[1904,"36 Serpentis","Serpens",0],[1905,"β Trianguli Australis","Triangulum Australe",0],[1906,"ρ Serpentis","Serpens",0],[1907,"κ Coronae Borealis","Corona Borealis",0],[1908,"λ Librae","Libra",0],[1909,"ζ Ursae Minoris","Ursa Minor",0],[1910,"2 Scorpii","Scorpius",0],[1911,"HR 5906"],[1912,"HR 5907"],[1913,"θ Librae","Libra",0],[1914,"χ Herculis","Hercules",0],[1915,"HR 5924"],[1916,"ξ¹ Lupi","Lupus",0],[1917,"Iklil","Scorpius"],[1918,"2 Herculis","Hercules",0],[1919,"γ Serpentis","Serpens",0],[1920,"λ Coronae Borealis","Corona Borealis",0],[1921,"48 Librae","Libra",0],[1922,"HR 5942"],[1923,"HR 5943"],[1924,"Fang","Scorpius"],[1925,"ε Coronae Borealis","Corona Borealis",0],[1926,"η Lupi","Lupus",0],[1927,"Dschubba","Scorpius"],[1928,"49 Librae","Libra",0],[1929,"HR 5958"],[1930,"HR 5960"],[1931,"ι¹ Normae","Norma",0],[1932,"η Normae","Norma",0],[1933,"5 Herculis","Hercules",0],[1934,"HR 5967"],[1935,"ρ Coronae Borealis","Corona Borealis",0],[1936,"HR 5969"],[1937,"ι Coronae Borealis","Corona Borealis",0],[1938,"π Serpentis","Serpens",0],[1939,"ξ Scorpii","Scorpius",0],[1940,"ξ Scorpii","Scorpius",0],[1941,"δ Normae","Norma",0],[1942,"υ Herculis","Hercules",0],[1943,"Acrab","Scorpius"],[1944,"β² Scorpii","Scorpius",0],[1945,"θ Draconis","Draco",0],[1946,"θ Lupi","Lupus",0],[1947,"ω¹ Scorpii","Scorpius",0],[1948,"ω² Scorpii","Scorpius",0],[1949,"HR 6001"],[1950,"Marsic","Hercules"],[1951,"HR 6016"],[1952,"HR 6017"],[1953,"τ Coronae Borealis","Corona Borealis",0],[1954,"δ¹ Apodis","Apus",0],[1955,"δ² Apodis","Apus",0],[1956,"φ Herculis","Hercules",0],[1957,"κ Normae","Norma",0],[1958,"HR 6025"],[1959,"Jabbah","Scorpius"],[1960,"13 Scorpii","Scorpius",0],[1961,"δ Trianguli Australis","Triangulum Australe",0],[1962,"ψ Scorpii","Scorpius",0],[1963,"16 Scorpii","Scorpius",0],[1964,"θ Normae","Norma",0],[1965,"9 Herculis","Hercules",0],[1966,"χ Scorpii","Scorpius",0],[1967,"HR 6055"],[1968,"Yed Prior","Ophiuchus"],[1969,"γ¹ Normae","Norma",0],[1970,"18 Scorpii","Scorpius",0],[1971,"HR 6070"],[1972,"λ Normae","Norma",0],[1973,"γ² Normae","Norma",0],[1974,"Yed Posterior","Ophiuchus"],[1975,"HR 6077"],[1976,"19 Ursae Minoris","Ursa Minor",0],[1977,"ο Scorpii","Scorpius",0],[1978,"HR 6083"],[1979,"Alniyat","Scorpius"],[1980,"HR 6086"],[1981,"HR 6091"],[1982,"τ Herculis","Hercules",0],[1983,"σ Serpentis","Serpens",0],[1984,"HR 6094"],[1985,"γ Herculis","Hercules",0],[1986,"ζ Trianguli Australis","Triangulum Australe",0],[1987,"HR 6100"],[1988,"γ Apodis","Apus",0],[1989,"ξ Coronae Borealis","Corona Borealis",0],[1990,"ψ Ophiuchi","Ophiuchus",0],[1991,"ν¹ Coronae Borealis","Corona Borealis",0],[1992,"ν² Coronae Borealis","Corona Borealis",0],[1993,"ι Trianguli Australis","Triangulum Australe",0],[1994,"ρ Ophiuchi","Ophiuchus",0],[1995,"ε Normae","Norma",0],[1996,"η Ursae Minoris","Ursa Minor",0],[1997,"Cujam","Hercules"],[1998,"χ Ophiuchi","Ophiuchus",0],[1999,"HR 6125"],[2000,"HR 6126"],[2001,"HR 6128"],[2002,"υ Ophiuchi","Ophiuchus",0],[2003,"HR 6131"],[2004,"Athebyne","Draco"],[2005,"Antares","Scorpius"],[2006,"HR 6135"],[2007,"HR 6136"],[2008,"22 Scorpii","Scorpius",0],[2009,"HR 6142"],[2010,"HR 6143"],[2011,"30 Herculis","Hercules",0],[2012,"φ Ophiuchi","Ophiuchus",0],[2013,"Kornephoros","Hercules"],[2014,"Marfik","Ophiuchus"],[2015,"HR 6152"],[2016,"ω Ophiuchi","Ophiuchus",0],[2017,"μ Normae","Norma",0],[2018,"29 Herculis","Hercules",0],[2019,"15 Draconis","Draco",0],[2020,"β Apodis","Apus",0],[2021,"HR 6164"],[2022,"Paikauhale","Scorpius"],[2023,"HR 6166"],[2024,"σ Herculis","Hercules",0],[2025,"ζ Ophiuchi","Ophiuchus",0],[2026,"17 Draconis","Draco",0],[2027,"HR 6196"],[2028,"HR 6199"],[2029,"42 Herculis","Hercules",0],[2030,"HR 6204"],[2031,"ζ Herculis","Hercules",0],[2032,"Atria","Triangulum Australe"],[2033,"η Herculis","Hercules",0],[2034,"HR 6221"],[2035,"18 Draconis","Draco",0],[2036,"43 Herculis","Hercules",0],[2037,"η Arae","Ara",0],[2038,"45 Herculis","Hercules",0],[2039,"HR 6237"],[2040,"Larawag","Scorpius"],[2041,"20 Ophiuchi","Ophiuchus",0],[2042,"HR 6245"],[2043,"Xamidimura","Scorpius"],[2044,"47 Herculis","Hercules",0],[2045,"Pipirima","Scorpius"],[2046,"52 Herculis","Hercules",0],[2047,"HR 6260"],[2048,"ζ¹ Scorpii","Scorpius",0],[2049,"51 Herculis","Hercules",0],[2050,"ζ² Scorpii","Scorpius",0],[2051,"53 Herculis","Hercules",0],[2052,"23 Ophiuchi","Ophiuchus",0],[2053,"ι Ophiuchi","Ophiuchus",0],[2054,"ζ Arae","Ara",0],[2055,"HR 6287"],[2056,"27 Scorpii","Scorpius",0],[2057,"54 Herculis","Hercules",0],[2058,"ε¹ Arae","Ara",0],[2059,"κ Ophiuchi","Ophiuchus",0],[2060,"ε² Arae","Ara",0],[2061,"19 Draconis","Draco",0],[2062,"HR 6316"],[2063,"30 Ophiuchi","Ophiuchus",0],[2064,"ε Ursae Minoris","Ursa Minor",0],[2065,"ε Herculis","Hercules",0],[2066,"59 Herculis","Hercules",0],[2067,"HR 6334"],[2068,"HR 6337"],[2069,"60 Herculis","Hercules",0],[2070,"HR 6371"],[2071,"HR 6377"],[2072,"Sabik","Ophiuchus"],[2073,"η Scorpii","Scorpius",0],[2074,"HR 6388"],[2075,"37 Ophiuchi","Ophiuchus",0],[2076,"Aldhibah","Draco"],[2077,"36 Ophiuchi","Ophiuchus",0],[2078,"Guniibuu","Ophiuchus"],[2079,"Rasalgethi","Hercules"],[2080,"α² Herculis","Hercules",0],[2081,"Sarin","Hercules"],[2082,"ι Apodis","Apus",0],[2083,"41 Ophiuchi","Ophiuchus",0],[2084,"HR 6416"],[2085,"ζ Apodis","Apus",0],[2086,"π Herculis","Hercules",0],[2087,"ο Ophiuchi","Ophiuchus",0],[2088,"68 Herculis","Hercules",0],[2089,"HR 6433"],[2090,"69 Herculis","Hercules",0],[2091,"ξ Ophiuchi","Ophiuchus",0],[2092,"ν Serpentis","Serpens",0],[2093,"ι Arae","Ara",0],[2094,"HR 6452"],[2095,"θ Ophiuchi","Ophiuchus",0],[2096,"HR 6455"],[2097,"70 Herculis","Hercules",0],[2098,"72 Herculis","Hercules",0],[2099,"43 Ophiuchi","Ophiuchus",0],[2100,"HR 6460"],[2101,"β Arae","Ara",0],[2102,"γ Arae","Ara",0],[2103,"κ Arae","Ara",0],[2104,"HR 6477"],[2105,"ρ Herculis","Hercules",0],[2106,"ρ Herculis","Hercules",0],[2107,"44 Ophiuchi","Ophiuchus",0],[2108,"45 Ophiuchi","Ophiuchus",0],[2109,"HR 6493"],[2110,"σ Ophiuchi","Ophiuchus",0],[2111,"δ Arae","Ara",0],[2112,"HR 6507"],[2113,"Lesath","Scorpius"],[2114,"α Arae","Ara",0],[2115,"HR 6516"],[2116,"51 Ophiuchi","Ophiuchus",0],[2117,"Maasym","Hercules"],[2118,"Shaula","Scorpius"],[2119,"Rastaban","Draco"],[2120,"σ Arae","Ara",0],[2121,"HR 6546"],[2122,"π Arae","Ara",0],[2123,"Sargas","Scorpius"],[2124,"ν¹ Draconis","Draco",0],[2125,"ν² Draconis","Draco",0],[2126,"Rasalhague","Ophiuchus"],[2127,"ξ Serpentis","Serpens",0],[2128,"27 Draconis","Draco",0],[2129,"μ Ophiuchi","Ophiuchus",0],[2130,"λ Arae","Ara",0],[2131,"26 Draconis","Draco",0],[2132,"82 Herculis","Hercules",0],[2133,"κ Scorpii","Scorpius",0],[2134,"ο Serpentis","Serpens",0],[2135,"η Pavonis","Pavo",0],[2136,"Cervantes","Ara"],[2137,"ι Herculis","Hercules",0],[2138,"58 Ophiuchi","Ophiuchus",0],[2139,"ω Draconis","Draco",0],[2140,"Cebalrai","Ophiuchus"],[2141,"ι¹ Scorpii","Scorpius",0],[2142,"3 Sagittarii","Sagittarius",0],[2143,"μ Herculis","Hercules",0],[2144,"HR 6628"],[2145,"γ Ophiuchi","Ophiuchus",0],[2146,"Fuyue","Scorpius"],[2147,"ι² Scorpii","Scorpius",0],[2148,"Dziban","Draco"],[2149,"87 Herculis","Hercules",0],[2150,"HR 6654"],[2151,"30 Draconis","Draco",0],[2152,"HR 6675"],[2153,"90 Herculis","Hercules",0],[2154,"HR 6682"],[2155,"89 Herculis","Hercules",0],[2156,"HR 6686"],[2157,"Grumium","Draco"],[2158,"HR 6693"],[2159,"θ Herculis","Hercules",0],[2160,"ν Ophiuchi","Ophiuchus",0],[2161,"4 Sagittarii","Sagittarius",0],[2162,"35 Draconis","Draco",0],[2163,"ξ Herculis","Hercules",0],[2164,"Eltanin","Draco"],[2165,"ν Herculis","Hercules",0],[2166,"ζ Serpentis","Serpens",0],[2167,"66 Ophiuchi","Ophiuchus",0],[2168,"93 Herculis","Hercules",0],[2169,"67 Ophiuchi","Ophiuchus",0],[2170,"χ Octantis","Octans",0],[2171,"68 Ophiuchi","Ophiuchus",0],[2172,"7 Sagittarii","Sagittarius",0],[2173,"ψ² Draconis","Draco",0],[2174,"95 Herculis","Hercules",0],[2175,"95 Herculis","Hercules",0],[2176,"τ Ophiuchi","Ophiuchus",0],[2177,"96 Herculis","Hercules",0],[2178,"γ¹ Sagittarii","Sagittarius",0],[2179,"θ Arae","Ara",0],[2180,"π Pavonis","Pavo",0],[2181,"Alnasl","Sagittarius"],[2182,"70 Ophiuchi","Ophiuchus",0],[2183,"ι Pavonis","Pavo",0],[2184,"98 Herculis","Hercules",0],[2185,"HR 6766"],[2186,"71 Ophiuchi","Ophiuchus",0],[2187,"72 Ophiuchi","Ophiuchus",0],[2188,"99 Herculis","Hercules",0],[2189,"ο Herculis","Hercules",0],[2190,"ε Telescopii","Telescopium",0],[2191,"102 Herculis","Hercules",0],[2192,"Yildun","Ursa Minor"],[2193,"HR 6791"],[2194,"HR 6793"],[2195,"101 Herculis","Hercules",0],[2196,"11 Sagittarii","Sagittarius",0],[2197,"HR 6804"],[2198,"Polis","Sagittarius"],[2199,"104 Herculis","Hercules",0],[2200,"14 Sagittarii","Sagittarius",0],[2201,"HR 6818"],[2202,"HR 6819"],[2203,"15 Sagittarii","Sagittarius",0],[2204,"φ Octantis","Octans",0],[2205,"η Sagittarii","Sagittarius",0],[2206,"HR 6842"],[2207,"36 Draconis","Draco",0],[2208,"ξ Pavonis","Pavo",0],[2209,"HR 6857"],[2210,"HR 6858"],[2211,"Kaus Media","Sagittarius"],[2212,"105 Herculis","Hercules",0],[2213,"HR 6862"],[2214,"74 Ophiuchi","Ophiuchus",0],[2215,"106 Herculis","Hercules",0],[2216,"η Serpentis","Serpens",0],[2217,"HR 6870"],[2218,"κ Lyrae","Lyra",0],[2219,"HR 6875"],[2220,"107 Herculis","Hercules",0],[2221,"Kaus Australis","Sagittarius"],[2222,"HR 6882"],[2223,"ζ Scuti","Scutum",0],[2224,"HR 6885"],[2225,"HR 6891"],[2226,"HR 6894"],[2227,"109 Herculis","Hercules",0],[2228,"21 Sagittarii","Sagittarius",0],[2229,"α Telescopii","Telescopium",0],[2230,"μ Lyrae","Lyra",0],[2231,"ζ Telescopii","Telescopium",0],[2232,"Kaus Borealis","Sagittarius"],[2233,"ν Pavonis","Pavo",0],[2234,"59 Serpentis","Serpens",0],[2235,"φ Draconis","Draco",0],[2236,"39 Draconis","Draco",0],[2237,"χ Draconis","Draco",0],[2238,"γ Scuti","Scutum",0],[2239,"δ¹ Telescopii","Telescopium",0],[2240,"60 Serpentis","Serpens",0],[2241,"HR 6936"],[2242,"δ² Telescopii","Telescopium",0],[2243,"HR 6942"],[2244,"HR 6944"],[2245,"Fafnir","Draco"],[2246,"θ Coronae Australis","Corona Australis",0],[2247,"HR 6959"],[2248,"HR 6960"],[2249,"24 Sagittarii","Sagittarius",0],[2250,"HR 6968"],[2251,"HR 6970"],[2252,"α Scuti","Scutum",0],[2253,"45 Draconis","Draco",0],[2254,"ζ Pavonis","Pavo",0],[2255,"HR 6983"],[2256,"HR 6985"],[2257,"HR 6987"],[2258,"HR 6991"],[2259,"HR 6997"],[2260,"Vega","Lyra"],[2261,"HR 7012"],[2262,"δ Scuti","Scutum",0],[2263,"λ Coronae Australis","Corona Australis",0],[2264,"HR 7029"],[2265,"HR 7031"],[2266,"ε Scuti","Scutum",0],[2267,"φ Sagittarii","Sagittarius",0],[2268,"4 Aquilae","Aquila",0],[2269,"28 Sagittarii","Sagittarius",0],[2270,"46 Draconis","Draco",0],[2271,"μ Coronae Australis","Corona Australis",0],[2272,"ε¹ Lyrae","Lyra",0],[2273,"ε² Lyrae","Lyra",0],[2274,"ε² Lyrae","Lyra",0],[2275,"ζ¹ Lyrae","Lyra",0],[2276,"110 Herculis","Hercules",0],[2277,"η¹ Coronae Australis","Corona Australis",0],[2278,"β Scuti","Scutum",0],[2279,"HR 7064"],[2280,"HR 7066"],[2281,"111 Herculis","Hercules",0],[2282,"λ Pavonis","Pavo",0],[2283,"29 Sagittarii","Sagittarius",0],[2284,"κ Telescopii","Telescopium",0],[2285,"ν² Lyrae","Lyra",0],[2286,"Sheliak","Lyra"],[2287,"κ Pavonis","Pavo",0],[2288,"112 Herculis","Hercules",0],[2289,"Ainalrami","Sagittarius"],[2290,"HR 7117"],[2291,"HR 7119"],[2292,"ν² Sagittarii","Sagittarius",0],[2293,"Nunki","Sagittarius"],[2294,"HR 7122"],[2295,"50 Draconis","Draco",0],[2296,"ο Draconis","Draco",0],[2297,"ω Pavonis","Pavo",0],[2298,"HR 7129"],[2299,"113 Herculis","Hercules",0],[2300,"λ Telescopii","Telescopium",0],[2301,"HR 7137"],[2302,"δ² Lyrae","Lyra",0],[2303,"Alya","Serpens"],[2304,"θ² Serpentis","Serpens",0],[2305,"ξ¹ Sagittarii","Sagittarius",0],[2306,"HR 7146"],[2307,"η Scuti","Scutum",0],[2308,"ξ² Sagittarii","Sagittarius",0],[2309,"ε Coronae Australis","Corona Australis",0],[2310,"13 Lyrae","Lyra",0],[2311,"HR 7162"],[2312,"HR 7165"],[2313,"11 Aquilae","Aquila",0],[2314,"ε Aquilae","Aquila",0],[2315,"Sulafat","Lyra"],[2316,"υ Draconis","Draco",0],[2317,"HR 7181"],[2318,"ζ Coronae Australis","Corona Australis",0],[2319,"λ Lyrae","Lyra",0],[2320,"12 Aquilae","Aquila",0],[2321,"Ascella","Sagittarius"],[2322,"14 Aquilae","Aquila",0],[2323,"HR 7210"],[2324,"HR 7211"],[2325,"ρ Telescopii","Telescopium",0],[2326,"16 Lyrae","Lyra",0],[2327,"ο Sagittarii","Sagittarius",0],[2328,"49 Draconis","Draco",0],[2329,"HR 7221"],[2330,"15 Aquilae","Aquila",0],[2331,"γ Coronae Australis","Corona Australis",0],[2332,"γ Coronae Australis","Corona Australis",0],[2333,"Polaris Australis","Octans"],[2334,"τ Sagittarii","Sagittarius",0],[2335,"Okab","Aquila"],[2336,"λ Aquilae","Aquila",0],[2337,"δ Coronae Australis","Corona Australis",0],[2338,"18 Aquilae","Aquila",0],[2339,"51 Draconis","Draco",0],[2340,"Meridiana","Corona Australis"],[2341,"β Coronae Australis","Corona Australis",0],[2342,"17 Lyrae","Lyra",0],[2343,"ι Lyrae","Lyra",0],[2344,"Albaldah","Sagittarius"],[2345,"19 Aquilae","Aquila",0],[2346,"20 Aquilae","Aquila",0],[2347,"21 Aquilae","Aquila",0],[2348,"HR 7289"],[2349,"ψ Sagittarii","Sagittarius",0],[2350,"53 Draconis","Draco",0],[2351,"Aladfar","Lyra"],[2352,"43 Sagittarii","Sagittarius",0],[2353,"1 Vulpeculae","Vulpecula",0],[2354,"54 Draconis","Draco",0],[2355,"Altais","Draco"],[2356,"59 Draconis","Draco",0],[2357,"θ Lyrae","Lyra",0],[2358,"ω¹ Aquilae","Aquila",0],[2359,"2 Vulpeculae","Vulpecula",0],[2360,"23 Aquilae","Aquila",0],[2361,"κ Cygni","Cygnus",0],[2362,"η Telescopii","Telescopium",0],[2363,"26 Aquilae","Aquila",0],[2364,"27 Aquilae","Aquila",0],[2365,"Arkab Prior","Sagittarius"],[2366,"ρ¹ Sagittarii","Sagittarius",0],[2367,"υ Sagittarii","Sagittarius",0],[2368,"Arkab Posterior","Sagittarius"],[2369,"Rukbat","Sagittarius"],[2370,"τ Draconis","Draco",0],[2371,"3 Vulpeculae","Vulpecula",0],[2372,"χ¹ Sagittarii","Sagittarius",0],[2373,"χ³ Sagittarii","Sagittarius",0],[2374,"π Draconis","Draco",0],[2375,"2 Cygni","Cygnus",0],[2376,"31 Aquilae","Aquila",0],[2377,"δ Aquilae","Aquila",0],[2378,"4 Vulpeculae","Vulpecula",0],[2379,"ν Aquilae","Aquila",0],[2380,"4 Cygni","Cygnus",0],[2381,"Anser","Vulpecula"],[2382,"36 Aquilae","Aquila",0],[2383,"Albireo","Cygnus"],[2384,"β² Cygni","Cygnus",0],[2385,"ι² Cygni","Cygnus",0],[2386,"ι Telescopii","Telescopium",0],[2387,"8 Cygni","Cygnus",0],[2388,"μ Aquilae","Aquila",0],[2389,"37 Aquilae","Aquila",0],[2390,"9 Vulpeculae","Vulpecula",0],[2391,"52 Sagittarii","Sagittarius",0],[2392,"9 Cygni","Cygnus",0],[2393,"HR 7444"],[2394,"κ Aquilae","Aquila",0],[2395,"ι Aquilae","Aquila",0],[2396,"HR 7454"],[2397,"42 Aquilae","Aquila",0],[2398,"Alsafi","Draco"],[2399,"HR 7468"],[2400,"θ Cygni","Cygnus",0],[2401,"σ Aquilae","Aquila",0],[2402,"φ Cygni","Cygnus",0],[2403,"Sham","Sagitta"],[2404,"14 Cygni","Cygnus",0],[2405,"β Sagittae","Sagitta",0],[2406,"55 Sagittarii","Sagittarius",0],[2407,"HR 7495"],[2408,"HR 7496"],[2409,"χ Aquilae","Aquila",0],[2410,"HR 7498"],[2411,"10 Vulpeculae","Vulpecula",0],[2412,"ν Telescopii","Telescopium",0],[2413,"56 Sagittarii","Sagittarius",0],[2414,"15 Cygni","Cygnus",0],[2415,"Tarazed","Aquila"],[2416,"Fawaris","Cygnus"],[2417,"HR 7531"],[2418,"17 Cygni","Cygnus",0],[2419,"δ Sagittae","Sagitta",0],[2420,"ζ Sagittae","Sagitta",0],[2421,"HR 7552"],[2422,"51 Aquilae","Aquila",0],[2423,"Altair","Aquila"],[2424,"ο Aquilae","Aquila",0],[2425,"χ Cygni","Cygnus",0],[2426,"12 Vulpeculae","Vulpecula",0],[2427,"19 Cygni","Cygnus",0],[2428,"η Aquilae","Aquila",0],[2429,"20 Cygni","Cygnus",0],[2430,"ι Sagittarii","Sagittarius",0],[2431,"ε Draconis","Draco",0],[2432,"HR 7587"],[2433,"ε Pavonis","Pavo",0],[2434,"13 Vulpeculae","Vulpecula",0],[2435,"Libertas","Aquila"],[2436,"Terebellum","Sagittarius"],[2437,"Alshain","Aquila"],[2438,"59 Sagittarii","Sagittarius",0],[2439,"23 Cygni","Cygnus",0],[2440,"10 Sagittae","Sagitta",0],[2441,"φ Aquilae","Aquila",0],[2442,"μ² Pavonis","Pavo",0],[2443,"22 Cygni","Cygnus",0],[2444,"61 Sagittarii","Sagittarius",0],[2445,"η Cygni","Cygnus",0],[2446,"60 Sagittarii","Sagittarius",0],[2447,"ψ Cygni","Cygnus",0],[2448,"θ¹ Sagittarii","Sagittarius",0],[2449,"θ² Sagittarii","Sagittarius",0],[2450,"HR 7625"],[2451,"HR 7628"],[2452,"HR 7633"],[2453,"γ Sagittae","Sagitta",0],[2454,"HR 7640"],[2455,"13 Sagittae","Sagitta",0],[2456,"25 Cygni","Cygnus",0],[2457,"62 Sagittarii","Sagittarius",0],[2458,"HR 7652"],[2459,"15 Vulpeculae","Vulpecula",0],[2460,"16 Vulpeculae","Vulpecula",0],[2461,"HR 7659"],[2462,"26 Cygni","Cygnus",0],[2463,"δ Pavonis","Pavo",0],[2464,"ξ Telescopii","Telescopium",0],[2465,"64 Draconis","Draco",0],[2466,"η Sagittae","Sagitta",0],[2467,"ρ Draconis","Draco",0],[2468,"17 Vulpeculae","Vulpecula",0],[2469,"27 Cygni","Cygnus",0],[2470,"66 Draconis","Draco",0],[2471,"HR 7703"],[2472,"28 Cygni","Cygnus",0],[2473,"θ Aquilae","Aquila",0],[2474,"19 Vulpeculae","Vulpecula",0],[2475,"66 Aquilae","Aquila",0],[2476,"ρ Aquilae","Aquila",0],[2477,"30 Cygni","Cygnus",0],[2478,"21 Vulpeculae","Vulpecula",0],[2479,"31 Cygni","Cygnus",0],[2480,"29 Cygni","Cygnus",0],[2481,"HR 7739"],[2482,"33 Cygni","Cygnus",0],[2483,"22 Vulpeculae","Vulpecula",0],[2484,"23 Vulpeculae","Vulpecula",0],[2485,"α¹ Capricorni","Capricornus",0],[2486,"κ Cephei","Cepheus",0],[2487,"32 Cygni","Cygnus",0],[2488,"24 Vulpeculae","Vulpecula",0],[2489,"Algedi","Capricornus"],[2490,"HR 7759"],[2491,"σ Capricorni","Capricornus",0],[2492,"34 Cygni","Cygnus",0],[2493,"35 Cygni","Cygnus",0],[2494,"Alshat","Capricornus"],[2495,"Dabih","Capricornus"],[2496,"Peacock","Pavo"],[2497,"HR 7794"],[2498,"Sadr","Cygnus"],[2499,"39 Cygni","Cygnus",0],[2500,"π Capricorni","Capricornus",0],[2501,"ρ Capricorni","Capricornus",0],[2502,"69 Aquilae","Aquila",0],[2503,"41 Cygni","Cygnus",0],[2504,"ω¹ Cygni","Cygnus",0],[2505,"ν Microscopii","Microscopium",0],[2506,"φ¹ Pavonis","Pavo",0],[2507,"θ Cephei","Cepheus",0],[2508,"ω² Cygni","Cygnus",0],[2509,"Aldulfin","Delphinus"],[2510,"η Delphini","Delphinus",0],[2511,"ρ Pavonis","Pavo",0],[2512,"47 Cygni","Cygnus",0],[2513,"α Indi","Indus",0],[2514,"ζ Delphini","Delphinus",0],[2515,"70 Aquilae","Aquila",0],[2516,"φ² Pavonis","Pavo",0],[2517,"73 Draconis","Draco",0],[2518,"υ Pavonis","Pavo",0],[2519,"Rotanev","Delphinus"],[2520,"ι Delphini","Delphinus",0],[2521,"71 Aquilae","Aquila",0],[2522,"τ Capricorni","Capricornus",0],[2523,"29 Vulpeculae","Vulpecula",0],[2524,"HR 7893"],[2525,"28 Vulpeculae","Vulpecula",0],[2526,"κ Delphini","Delphinus",0],[2527,"1 Aquarii","Aquarius",0],[2528,"υ Capricorni","Capricornus",0],[2529,"75 Draconis","Draco",0],[2530,"Sualocin","Delphinus"],[2531,"β Pavonis","Pavo",0],[2532,"η Indi","Indus",0],[2533,"Deneb","Cygnus"],[2534,"δ Delphini","Delphinus",0],[2535,"51 Cygni","Cygnus",0],[2536,"HR 7933"],[2537,"σ Pavonis","Pavo",0],[2538,"ψ Capricorni","Capricornus",0],[2539,"30 Vulpeculae","Vulpecula",0],[2540,"52 Cygni","Cygnus",0],[2541,"ι Microscopii","Microscopium",0],[2542,"γ¹ Delphini","Delphinus",0],[2543,"γ² Delphini","Delphinus",0],[2544,"Aljanah","Cygnus"],[2545,"Albali","Aquarius"],[2546,"3 Aquarii","Aquarius",0],[2547,"ζ Indi","Indus",0],[2548,"HR 7955"],[2549,"HR 7956"],[2550,"η Cephei","Cepheus",0],[2551,"λ Cygni","Cygnus",0],[2552,"α Microscopii","Microscopium",0],[2553,"ι Indi","Indus",0],[2554,"55 Cygni","Cygnus",0],[2555,"ω Capricorni","Capricornus",0],[2556,"56 Cygni","Cygnus",0],[2557,"β Indi","Indus",0],[2558,"HR 7987"],[2559,"μ Aquarii","Aquarius",0],[2560,"31 Vulpeculae","Vulpecula",0],[2561,"57 Cygni","Cygnus",0],[2562,"HR 8003"],[2563,"HR 8005"],[2564,"32 Vulpeculae","Vulpecula",0],[2565,"17 Delphini","Delphinus",0],[2566,"HR 8016"],[2567,"α Octantis","Octans",0],[2568,"ν Cygni","Cygnus",0],[2569,"Musica","Delphinus"],[2570,"33 Vulpeculae","Vulpecula",0],[2571,"ε Equulei","Equuleus",0],[2572,"γ Microscopii","Microscopium",0],[2573,"59 Cygni","Cygnus",0],[2574,"ζ Microscopii","Microscopium",0],[2575,"60 Cygni","Cygnus",0],[2576,"μ Indi","Indus",0],[2577,"η Capricorni","Capricornus",0],[2578,"θ Capricorni","Capricornus",0],[2579,"HR 8076"],[2580,"ξ Cygni","Cygnus",0],[2581,"24 Capricorni","Capricornus",0],[2582,"61 Cygni","Cygnus",0],[2583,"χ Capricorni","Capricornus",0],[2584,"63 Cygni","Cygnus",0],[2585,"ο Pavonis","Pavo",0],[2586,"ν Aquarii","Aquarius",0],[2587,"γ Equulei","Equuleus",0],[2588,"HR 8104"],[2589,"HR 8110"],[2590,"ζ Cygni","Cygnus",0],[2591,"δ Equulei","Equuleus",0],[2592,"φ Capricorni","Capricornus",0],[2593,"29 Capricorni","Capricornus",0],[2594,"τ Cygni","Cygnus",0],[2595,"Kitalpha","Equuleus"],[2596,"ε Microscopii","Microscopium",0],[2597,"30 Capricorni","Capricornus",0],[2598,"θ Indi","Indus",0],[2599,"σ Cygni","Cygnus",0],[2600,"υ Cygni","Cygnus",0],[2601,"θ¹ Microscopii","Microscopium",0],[2602,"68 Cygni","Cygnus",0],[2603,"Alderamin","Cepheus"],[2604,"ι Capricorni","Capricornus",0],[2605,"6 Cephei","Cepheus",0],[2606,"1 Pegasi","Pegasus",0],[2607,"β Equulei","Equuleus",0],[2608,"γ Pavonis","Pavo",0],[2609,"33 Capricorni","Capricornus",0],[2610,"18 Aquarii","Aquarius",0],[2611,"HR 8196"],[2612,"21 Aquarii","Aquarius",0],[2613,"ζ Capricorni","Capricornus",0],[2614,"36 Capricorni","Capricornus",0],[2615,"70 Cygni","Cygnus",0],[2616,"HR 8216"],[2617,"35 Vulpeculae","Vulpecula",0],[2618,"2 Pegasi","Pegasus",0],[2619,"7 Cephei","Cepheus",0],[2620,"71 Cygni","Cygnus",0],[2621,"ξ Gruis","Grus",0],[2622,"Sadalsuud","Aquarius"],[2623,"Alfirk","Cepheus"],[2624,"ρ Cygni","Cygnus",0],[2625,"ν Octantis","Octans",0],[2626,"72 Cygni","Cygnus",0],[2627,"ε Capricorni","Capricornus",0],[2628,"Bunda","Aquarius"],[2629,"74 Cygni","Cygnus",0],[2630,"5 Pegasi","Pegasus",0],[2631,"25 Aquarii","Aquarius",0],[2632,"Nashira","Capricornus"],[2633,"9 Cephei","Cepheus",0],[2634,"λ Octantis","Octans",0],[2635,"42 Capricorni","Capricornus",0],[2636,"75 Cygni","Cygnus",0],[2637,"41 Capricorni","Capricornus",0],[2638,"κ Capricorni","Capricornus",0],[2639,"7 Pegasi","Pegasus",0],[2640,"Azelfafage","Cygnus"],[2641,"ι Piscis Austrini","Piscis Austrinus",0],[2642,"HR 8306"],[2643,"Enif","Pegasus"],[2644,"μ¹ Cygni","Cygnus",0],[2645,"46 Capricorni","Capricornus",0],[2646,"9 Pegasi","Pegasus",0],[2647,"κ Pegasi","Pegasus",0],[2648,"μ Cephei","Cepheus",0],[2649,"11 Cephei","Cepheus",0],[2650,"12 Pegasi","Pegasus",0],[2651,"Deneb Algedi","Capricornus"],[2652,"HR 8324"],[2653,"θ Piscis Austrini","Piscis Austrinus",0],[2654,"ν Cephei","Cepheus",0],[2655,"π² Cygni","Cygnus",0],[2656,"14 Pegasi","Pegasus",0],[2657,"13 Pegasi","Pegasus",0],[2658,"μ Capricorni","Capricornus",0],[2659,"Aldhanab","Grus"],[2660,"16 Pegasi","Pegasus",0],[2661,"HR 8366"],[2662,"δ Indi","Indus",0],[2663,"HR 8379"],[2664,"HR 8383"],[2665,"η Piscis Austrini","Piscis Austrinus",0],[2666,"ε Indi","Indus",0],[2667,"16 Cephei","Cepheus",0],[2668,"ο Aquarii","Aquarius",0],[2669,"32 Aquarii","Aquarius",0],[2670,"λ Gruis","Grus",0],[2671,"ν Pegasi","Pegasus",0],[2672,"Sadalmelik","Aquarius"],[2673,"18 Cephei","Cepheus",0],[2674,"Kurhah","Cepheus"],[2675,"ι Aquarii","Aquarius",0],[2676,"HR 8424"],[2677,"Alnair","Grus"],[2678,"20 Cephei","Cepheus",0],[2679,"19 Cephei","Cepheus",0],[2680,"ι Pegasi","Pegasus",0],[2681,"μ Piscis Austrini","Piscis Austrinus",0],[2682,"υ Piscis Austrini","Piscis Austrinus",0],[2683,"HR 8444"],[2684,"τ Piscis Austrini","Piscis Austrinus",0],[2685,"Biham","Pegasus"],[2686,"38 Aquarii","Aquarius",0],[2687,"π² Pegasi","Pegasus",0],[2688,"HR 8463"],[2689,"ζ Cephei","Cepheus",0],[2690,"24 Cephei","Cepheus",0],[2691,"λ Cephei","Cepheus",0],[2692,"HR 8472"],[2693,"HR 8474"],[2694,"HR 8475"],[2695,"λ Piscis Austrini","Piscis Austrinus",0],[2696,"HR 8479"],[2697,"41 Aquarii","Aquarius",0],[2698,"ε Octantis","Octans",0],[2699,"HR 8485"],[2700,"μ¹ Gruis","Grus",0],[2701,"μ² Gruis","Grus",0],[2702,"ε Cephei","Cepheus",0],[2703,"42 Aquarii","Aquarius",0],[2704,"1 Lacertae","Lacerta",0],[2705,"Ancha","Aquarius"],[2706,"HR 8501"],[2707,"α Tucanae","Tucana",0],[2708,"ρ Aquarii","Aquarius",0],[2709,"30 Pegasi","Pegasus",0],[2710,"ν Indi","Indus",0],[2711,"47 Aquarii","Aquarius",0],[2712,"Sadachbia","Aquarius"],[2713,"31 Pegasi","Pegasus",0],[2714,"32 Pegasi","Pegasus",0],[2715,"2 Lacertae","Lacerta",0],[2716,"HR 8531"],[2717,"β Lacertae","Lacerta",0],[2718,"π Aquarii","Aquarius",0],[2719,"δ Tucanae","Tucana",0],[2720,"4 Lacertae","Lacerta",0],[2721,"HR 8546"],[2722,"35 Pegasi","Pegasus",0],[2723,"ν Gruis","Grus",0],[2724,"δ¹ Gruis","Grus",0],[2725,"HR 8557"],[2726,"ζ¹ Aquarii","Aquarius",0],[2727,"ζ² Aquarii","Aquarius",0],[2728,"δ² Gruis","Grus",0],[2729,"26 Cephei","Cepheus",0],[2730,"37 Pegasi","Pegasus",0],[2731,"δ Cephei","Cepheus",0],[2732,"5 Lacertae","Lacerta",0],[2733,"σ Aquarii","Aquarius",0],[2734,"β Piscis Austrini","Piscis Austrinus",0],[2735,"6 Lacertae","Lacerta",0],[2736,"ν Tucanae","Tucana",0],[2737,"α Lacertae","Lacerta",0],[2738,"ρ² Cephei","Cepheus",0],[2739,"υ Aquarii","Aquarius",0],[2740,"η Aquarii","Aquarius",0],[2741,"Situla","Aquarius"],[2742,"9 Lacertae","Lacerta",0],[2743,"31 Cephei","Cepheus",0],[2744,"HR 8621"],[2745,"10 Lacertae","Lacerta",0],[2746,"30 Cephei","Cepheus",0],[2747,"ε Piscis Austrini","Piscis Austrinus",0],[2748,"β Octantis","Octans",0],[2749,"11 Lacertae","Lacerta",0],[2750,"Homam","Pegasus"],[2751,"Tiaki","Grus"],[2752,"12 Lacertae","Lacerta",0],[2753,"ο Pegasi","Pegasus",0],[2754,"ρ Gruis","Grus",0],[2755,"66 Aquarii","Aquarius",0],[2756,"Matar","Pegasus"],[2757,"η Gruis","Grus",0],[2758,"13 Lacertae","Lacerta",0],[2759,"ξ Octantis","Octans",0],[2760,"ξ Pegasi","Pegasus",0],[2761,"λ Pegasi","Pegasus",0],[2762,"68 Aquarii","Aquarius",0],[2763,"ε Gruis","Grus",0],[2764,"τ² Aquarii","Aquarius",0],[2765,"Sadalbari","Pegasus"],[2766,"HR 8685"],[2767,"HR 8688"],[2768,"ι Cephei","Cepheus",0],[2769,"γ Piscis Austrini","Piscis Austrinus",0],[2770,"σ Pegasi","Pegasus",0],[2771,"λ Aquarii","Aquarius",0],[2772,"15 Lacertae","Lacerta",0],[2773,"HR 8702"],[2774,"Skat","Aquarius"],[2775,"ρ Pegasi","Pegasus",0],[2776,"δ Piscis Austrini","Piscis Austrinus",0],[2777,"HR 8726"],[2778,"Fomalhaut","Piscis Austrinus"],[2779,"Helvetios","Pegasus"],[2780,"HR 8731"],[2781,"2 Piscium","Pisces",0],[2782,"ζ Gruis","Grus",0],[2783,"HR 8748"],[2784,"HR 8752"],[2785,"ο Andromedae","Andromeda",0],[2786,"2 Andromedae","Andromeda",0],[2787,"π Piscis Austrini","Piscis Austrinus",0],[2788,"Fumalsamakah","Pisces"],[2789,"κ Gruis","Grus",0],[2790,"Scheat","Pegasus"],[2791,"HR 8779"],[2792,"3 Andromedae","Andromeda",0],[2793,"Markab","Pegasus"],[2794,"83 Aquarii","Aquarius",0],[2795,"θ Gruis","Grus",0],[2796,"86 Aquarii","Aquarius",0],[2797,"55 Pegasi","Pegasus",0],[2798,"56 Pegasi","Pegasus",0],[2799,"1 Cassiopeiae","Cassiopeia",0],[2800,"4 Andromedae","Andromeda",0],[2801,"5 Piscium","Pisces",0],[2802,"88 Aquarii","Aquarius",0],[2803,"57 Pegasi","Pegasus",0],[2804,"89 Aquarii","Aquarius",0],[2805,"π Cephei","Cepheus",0],[2806,"ι Gruis","Grus",0],[2807,"58 Pegasi","Pegasus",0],[2808,"59 Pegasi","Pegasus",0],[2809,"7 Andromedae","Andromeda",0],[2810,"φ Aquarii","Aquarius",0],[2811,"ψ¹ Aquarii","Aquarius",0],[2812,"γ Tucanae","Tucana",0],[2813,"χ Aquarii","Aquarius",0],[2814,"γ Piscium","Pisces",0],[2815,"ψ² Aquarii","Aquarius",0],[2816,"8 Andromedae","Andromeda",0],[2817,"τ Octantis","Octans",0],[2818,"γ Sculptoris","Sculptor",0],[2819,"ψ³ Aquarii","Aquarius",0],[2820,"94 Aquarii","Aquarius",0],[2821,"ο Cephei","Cepheus",0],[2822,"11 Andromedae","Andromeda",0],[2823,"7 Piscium","Pisces",0],[2824,"Salm","Pegasus"],[2825,"64 Pegasi","Pegasus",0],[2826,"97 Aquarii","Aquarius",0],[2827,"98 Aquarii","Aquarius",0],[2828,"66 Pegasi","Pegasus",0],[2829,"4 Cassiopeiae","Cassiopeia",0],[2830,"Alkarab","Pegasus"],[2831,"99 Aquarii","Aquarius",0],[2832,"κ Piscium","Pisces",0],[2833,"θ Piscium","Pisces",0],[2834,"70 Pegasi","Pegasus",0],[2835,"HR 8926"],[2836,"Veritate","Andromeda"],[2837,"β Sculptoris","Sculptor",0],[2838,"101 Aquarii","Aquarius",0],[2839,"71 Pegasi","Pegasus",0],[2840,"72 Pegasi","Pegasus",0],[2841,"ι Phoenicis","Phoenix",0],[2842,"HR 8959"],[2843,"λ Andromedae","Andromeda",0],[2844,"ι Andromedae","Andromeda",0],[2845,"18 Andromedae","Andromeda",0],[2846,"ω¹ Aquarii","Aquarius",0],[2847,"ι Piscium","Pisces",0],[2848,"Errai","Cepheus"],[2849,"μ Sculptoris","Sculptor",0],[2850,"κ Andromedae","Andromeda",0],[2851,"103 Aquarii","Aquarius",0],[2852,"104 Aquarii","Aquarius",0],[2853,"λ Piscium","Pisces",0],[2854,"HR 8987"],[2855,"ω² Aquarii","Aquarius",0],[2856,"77 Pegasi","Pegasus",0],[2857,"78 Pegasi","Pegasus",0],[2858,"106 Aquarii","Aquarius",0],[2859,"107 Aquarii","Aquarius",0],[2860,"ψ Andromedae","Andromeda",0],[2861,"19 Piscium","Pisces",0],[2862,"σ Phoenicis","Phoenix",0],[2863,"τ Cassiopeiae","Cassiopeia",0],[2864,"20 Piscium","Pisces",0],[2865,"HR 9013"],[2866,"δ Sculptoris","Sculptor",0],[2867,"6 Cassiopeiae","Cassiopeia",0],[2868,"108 Aquarii","Aquarius",0],[2869,"γ¹ Octantis","Octans",0],[2870,"φ Pegasi","Pegasus",0],[2871,"82 Pegasi","Pegasus",0],[2872,"ρ Cassiopeiae","Cassiopeia",0],[2873,"η Tucanae","Tucana",0],[2874,"ψ Pegasi","Pegasus",0],[2875,"HR 9066"],[2876,"27 Piscium","Pisces",0],[2877,"π Phoenicis","Phoenix",0],[2878,"σ Cassiopeiae","Cassiopeia",0],[2879,"ω Piscium","Pisces",0],[2880,"ε Tucanae","Tucana",0],[2881,"θ Octantis","Octans",0],[2882,"29 Piscium","Pisces",0],[2883,"30 Piscium","Pisces",0],[2884,"ζ Sculptoris","Sculptor",0],[2885,"2 Ceti","Cetus",0],[2886,"3 Ceti","Cetus",0]] \ No newline at end of file diff --git a/scripts/build-stars.mjs b/scripts/build-stars.mjs index 279e9b3..8078fd3 100644 --- a/scripts/build-stars.mjs +++ b/scripts/build-stars.mjs @@ -7,12 +7,18 @@ // Record, 6 bytes little-endian: ra uint16 (0..65536 = 0..360°), // dec int16 (±32767 = ±90°), vmag uint8 ((V + 2) × 20), b-v int8 (× 50). // -// Also builds apps/site/public/star-names.json for the sky's tooltips: the -// IAU Catalog of Star Names (WGSN), matched by HR number, as -// [record index, name, constellation] for each named star kept above. +// Also builds apps/site/public/star-names.json for the sky's tooltips, one +// entry for every star kept above, sorted by record index: +// - [index, name, constellation] for a star in the IAU Catalog of Star Names +// (WGSN), matched by HR number: "Sarin", "Hercules". +// - [index, designation, constellation, 0] for any other star with a Bayer +// letter or Flamsteed number in the catalogue: "ζ Herculis", "Hercules". +// The 0 says the label already names the constellation. +// - [index, "HR n"] for the rest, by Bright Star number alone. import { writeFileSync } from "node:fs"; import { gunzipSync } from "node:zlib"; +import { CONSTELLATIONS, GENITIVES } from "./constellation-names.mjs"; const SOURCE = "http://tdc-www.harvard.edu/catalogs/bsc5.dat.gz"; const LIMIT = 5.5; @@ -32,9 +38,40 @@ const text = gunzipSync(Buffer.from(await res.arrayBuffer())).toString( // Byte ranges from the catalogue ReadMe (1-based, inclusive). const field = (line, from, to) => line.slice(from - 1, to).trim(); +// Bayer letters as the catalogue abbreviates them. +const GREEK = { + Alp: "α", + Bet: "β", + Gam: "γ", + Del: "δ", + Eps: "ε", + Zet: "ζ", + Eta: "η", + The: "θ", + Iot: "ι", + Kap: "κ", + Lam: "λ", + Mu: "μ", + Nu: "ν", + Xi: "ξ", + Omi: "ο", + Pi: "π", + Rho: "ρ", + Sig: "σ", + Tau: "τ", + Ups: "υ", + Phi: "φ", + Chi: "χ", + Psi: "ψ", + Ome: "ω", +}; +const SUPERSCRIPT = ["⁰", "¹", "²", "³", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"]; + const stars = []; /** Record index by HR (Bright Star) number. */ const byHr = new Map(); +/** Fallback label for each record, by index: designation or HR number. */ +const designations = []; for (const line of text.split("\n")) { const raH = field(line, 76, 77); const vmag = field(line, 103, 107); @@ -54,7 +91,26 @@ for (const line of text.split("\n")) { Number(field(line, 87, 88)) / 60 + Number(field(line, 89, 90)) / 3600); const bv = Number(field(line, 110, 114) || "0.6"); - byHr.set(Number(field(line, 1, 4)), stars.length); + const hr = Number(field(line, 1, 4)); + // Name field: Flamsteed number, Bayer letter, its superscript, constellation. + const [flamsteed, bayer, index, con] = [ + field(line, 5, 7), + field(line, 8, 10), + field(line, 11, 11), + field(line, 12, 14), + ]; + const genitive = GENITIVES[con]; + const letter = GREEK[bayer]; + designations.push( + genitive && (letter || flamsteed) + ? [ + `${letter ? letter + (index ? SUPERSCRIPT[Number(index)] : "") : flamsteed} ${genitive}`, + CONSTELLATIONS[con], + 0, + ] + : [`HR ${hr}`], + ); + byHr.set(hr, stars.length); stars.push({ ra, dec, v, bv }); } @@ -69,98 +125,6 @@ stars.forEach(({ ra, dec, v, bv }, i) => { writeFileSync(OUT, buf); console.log(`${stars.length} stars, ${buf.length} bytes`); -// The 88 constellations by IAU abbreviation. -const CONSTELLATIONS = { - And: "Andromeda", - Ant: "Antlia", - Aps: "Apus", - Aqr: "Aquarius", - Aql: "Aquila", - Ara: "Ara", - Ari: "Aries", - Aur: "Auriga", - Boo: "Boötes", - 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", -}; - // Fixed-width columns, located from the header row. const namesRes = await fetch(NAMES); if (!namesRes.ok) throw new Error(`star names: HTTP ${namesRes.status}`); @@ -182,7 +146,13 @@ for (const line of lines) { const con = line.slice(conAt, conAt + 3).trim(); names.push([index, name, CONSTELLATIONS[con] ?? con]); } +const proper = new Set(names.map(([index]) => index)); +designations.forEach((label, index) => { + if (!proper.has(index)) names.push([index, ...label]); +}); names.sort((a, b) => a[0] - b[0]); const json = JSON.stringify(names); writeFileSync(NAMES_OUT, json); -console.log(`${names.length} star names, ${json.length} bytes`); +console.log( + `${proper.size} star names, ${names.length - proper.size} designations, ${json.length} bytes`, +); diff --git a/scripts/constellation-names.mjs b/scripts/constellation-names.mjs new file mode 100644 index 0000000..d4b1c98 --- /dev/null +++ b/scripts/constellation-names.mjs @@ -0,0 +1,183 @@ +// The 88 constellations by IAU abbreviation. +export const CONSTELLATIONS = { + And: "Andromeda", + Ant: "Antlia", + Aps: "Apus", + Aqr: "Aquarius", + Aql: "Aquila", + Ara: "Ara", + Ari: "Aries", + Aur: "Auriga", + Boo: "Boötes", + 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", +}; + +// The same, in the genitive, for designations such as "δ Herculis". +export const GENITIVES = { + And: "Andromedae", + Ant: "Antliae", + Aps: "Apodis", + Aqr: "Aquarii", + Aql: "Aquilae", + Ara: "Arae", + Ari: "Arietis", + Aur: "Aurigae", + Boo: "Boötis", + Cae: "Caeli", + Cam: "Camelopardalis", + Cnc: "Cancri", + CVn: "Canum Venaticorum", + CMa: "Canis Majoris", + CMi: "Canis Minoris", + Cap: "Capricorni", + Car: "Carinae", + Cas: "Cassiopeiae", + Cen: "Centauri", + Cep: "Cephei", + Cet: "Ceti", + Cha: "Chamaeleontis", + Cir: "Circini", + Col: "Columbae", + Com: "Comae Berenices", + CrA: "Coronae Australis", + CrB: "Coronae Borealis", + Crv: "Corvi", + Crt: "Crateris", + Cru: "Crucis", + Cyg: "Cygni", + Del: "Delphini", + Dor: "Doradus", + Dra: "Draconis", + Equ: "Equulei", + Eri: "Eridani", + For: "Fornacis", + Gem: "Geminorum", + Gru: "Gruis", + Her: "Herculis", + Hor: "Horologii", + Hya: "Hydrae", + Hyi: "Hydri", + Ind: "Indi", + Lac: "Lacertae", + Leo: "Leonis", + LMi: "Leonis Minoris", + Lep: "Leporis", + Lib: "Librae", + Lup: "Lupi", + Lyn: "Lyncis", + Lyr: "Lyrae", + Men: "Mensae", + Mic: "Microscopii", + Mon: "Monocerotis", + Mus: "Muscae", + Nor: "Normae", + Oct: "Octantis", + Oph: "Ophiuchi", + Ori: "Orionis", + Pav: "Pavonis", + Peg: "Pegasi", + Per: "Persei", + Phe: "Phoenicis", + Pic: "Pictoris", + Psc: "Piscium", + PsA: "Piscis Austrini", + Pup: "Puppis", + Pyx: "Pyxidis", + Ret: "Reticuli", + Sge: "Sagittae", + Sgr: "Sagittarii", + Sco: "Scorpii", + Scl: "Sculptoris", + Sct: "Scuti", + Ser: "Serpentis", + Sex: "Sextantis", + Tau: "Tauri", + Tel: "Telescopii", + Tri: "Trianguli", + TrA: "Trianguli Australis", + Tuc: "Tucanae", + UMa: "Ursae Majoris", + UMi: "Ursae Minoris", + Vel: "Velorum", + Vir: "Virginis", + Vol: "Volantis", + Vul: "Vulpeculae", +}; From 5f7f8e23b3ff197edf0e50a4f93e5f2500c7b10a Mon Sep 17 00:00:00 2001 From: "Craig C." Date: Fri, 23 Oct 2026 13:32:59 +0300 Subject: [PATCH 2/6] build: constellation stick figures for the sky MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scripts/build-constellations.mjs writes apps/site/public/constellations.json: the 88 stick figures from d3-celestial (Olaf Frohn, BSD-3-Clause, pinned to commit d2e20e1), each vertex matched to the nearest star in stars.bin within 0.2°. Keyed by constellation name as the star labels give it, as flat star index pairs. Serpens' head and tail share one figure. 739 lines; 4 that end on stars fainter than the catalogue's limit are left out. 2.3 KB gzipped. The formatter ignores it, like star-names.json. --- .oxfmtrc.json | 3 +- apps/site/public/constellations.json | 1 + scripts/build-constellations.mjs | 94 ++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 apps/site/public/constellations.json create mode 100644 scripts/build-constellations.mjs diff --git a/.oxfmtrc.json b/.oxfmtrc.json index e72fba9..5100c72 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -10,6 +10,7 @@ "**/*.md", "**/*.yaml", "pnpm-lock.yaml", - "apps/site/public/star-names.json" + "apps/site/public/star-names.json", + "apps/site/public/constellations.json" ] } diff --git a/apps/site/public/constellations.json b/apps/site/public/constellations.json new file mode 100644 index 0000000..db96f1e --- /dev/null +++ b/apps/site/public/constellations.json @@ -0,0 +1 @@ +{"Andromeda":[189,104,104,48,48,1,86,66,66,46,46,48,48,44,44,2844,2844,2785,2844,2850,2850,2843,104,84,84,71,71,102,102,140,2850,2860],"Antlia":[1200,1304,1304,1366],"Apus":[1756,1954,1954,2020,2020,1988],"Aquarius":[2545,2559,2559,2622,2622,2672,2672,2712,2712,2726,2726,2740,2740,2771,2771,2815,2815,2802,2622,2675,2672,2705,2726,2718,2827,2815,2815,2852],"Aquila":[2415,2423,2423,2437,2437,2473,2473,2428,2428,2377,2377,2335,2335,2423,2423,2377,2377,2336],"Ara":[2102,2111,2111,2037,2037,2054,2054,2058,2058,2114,2114,2101],"Aries":[261,194,194,166,166,163],"Auriga":[695,574,574,547,547,529,529,606,606,699,699,695,695,691,691,574,574,535,535,538],"Boötes":[1665,1681,1681,1715,1715,1744,1744,1746,1746,1801,1801,1826,1826,1770,1770,1715,1715,1759,1746,1718,1718,1708,1708,1736,1736,1718],"Caelum":[476,503,503,504,504,550],"Camelopardalis":[525,534,534,514,514,364,364,367,367,332,514,731,731,819],"Cancer":[1129,1096,1096,1089,1089,1099,1096,1040],"Canes Venatici":[1589,1543],"Canis Major":[757,806,806,852,852,862,862,847,847,843,843,753,915,862,806,838,838,853,853,832,832,838],"Canis Minor":[947,918],"Capricornus":[2485,2495,2495,2501,2501,2538,2538,2555,2555,2613,2613,2651,2651,2632,2632,2604,2604,2578,2578,2485],"Carina":[791,761,761,1173,1173,1283,1283,1341,1341,1317,1317,1286,1286,1179,1179,1051,1051,1002,1002,1027,1027,1104,1104,1179,1341,1382,1382,1387,1387,1390,1390,1386,1386,1363,1363,1317],"Cassiopeia":[159,123,123,81,81,50,50,2],"Centaurus":[1405,1488,1488,1529,1529,1557,1557,1652,1652,1679,1679,1670,1670,1667,1667,1694,1694,1747,1747,1794,1667,1627,1751,1652,1652,1691,1529,1493,1493,1423],"Cepheus":[2507,2550,2550,2603,2603,2648,2648,2702,2702,2689,2689,2731,2731,2768,2768,2848,2848,2623,2623,2603,2623,2768],"Cetus":[250,235,235,225,225,255,255,286,286,290,290,250,250,240,240,210,210,158,158,151,151,56,56,17,17,101,101,122,122,158],"Chamaeleon":[1054,1332,1332,1354,1354,1503,1503,1473,1473,1332],"Circinus":[1820,1753,1753,1834],"Columba":[758,683,683,656,656,626,683,705],"Coma Berenices":[1605,1611,1611,1526],"Corona Australis":[2309,2331,2331,2340,2340,2341,2341,2337,2337,2318],"Corona Borealis":[1862,1854,1854,1869,1869,1889,1889,1900,1900,1925,1925,1937],"Corvus":[1489,1491,1491,1498,1498,1533,1533,1544,1544,1491],"Crater":[1433,1412,1412,1403,1403,1369,1369,1388,1388,1407,1407,1413,1413,1448,1448,1471,1403,1413],"Crux":[1571,1496,1522,1535],"Cygnus":[2590,2544,2544,2498,2498,2416,2416,2385,2385,2361,2533,2498,2498,2445,2445,2383],"Delphinus":[2509,2519,2519,2530,2530,2542,2542,2534,2534,2519],"Dorado":[440,486,486,645,645,674,674,700,700,645,645,561,561,486],"Draco":[2157,2164,2164,2119,2119,2125,2125,2157,2157,2355,2355,2235,2235,2076,2076,2004,2004,1945,1945,1852,1852,1696,1696,1545,1545,1421,2235,2237,2355,2431],"Equuleus":[2595,2591,2591,2587],"Eridanus":[558,509,509,484,484,420,420,397,397,369,369,357,357,344,344,275,275,253,253,256,256,294,294,321,321,346,346,372,372,485,485,463,463,446,446,382,382,350,350,323,323,287,287,245,245,226,226,208,208,171,171,142],"Fornax":[307,263,263,192],"Gemini":[734,754,754,798,798,864,864,935,935,960,960,939,939,892,892,850,850,784,784,803,892,887],"Grus":[2782,2763,2763,2751,2751,2728,2728,2677,2677,2751,2724,2700,2700,2670,2670,2659],"Hercules":[1985,2013,2013,2031,2031,2033,2033,2024,2024,1982,1982,1956,1956,1914,2031,2065,2033,2086,2159,2105,2105,2086,2086,2065,2065,2081,2081,2143,2143,2163,2163,2189,2079,2013],"Horologium":[434,252,252,239,239,249,249,298,298,289],"Hydra":[1102,1107,1107,1091,1091,1074,1074,1071,1071,1102,1102,1121,1121,1164,1164,1231,1231,1192,1192,1251,1251,1274,1274,1301,1301,1355,1355,1426,1426,1468,1468,1624,1624,1693,1693,1775],"Hydrus":[24,388,388,251,251,219,219,174,174,182],"Indus":[2513,2532,2532,2557,2557,2662,2662,2598,2598,2513],"Lacerta":[2717,2737,2737,2732,2732,2715,2715,2735,2735,2749,2749,2732,2732,2720,2720,2717,2735,2699,2699,2704],"Leo":[1271,1267,1267,1288,1288,1393,1393,1462,1462,1394,1394,1271,1288,1280,1280,1252,1252,1242],"Leo Minor":[1266,1300,1300,1358,1358,1302,1302,1266,1266,1214],"Lepus":[718,693,693,666,666,627,627,571,571,551,551,614,614,661,661,681,572,571,571,591],"Libra":[1802,1778,1778,1828,1828,1866,1866,1870,1870,1875,1778,1866],"Lupus":[1896,1877,1877,1835,1835,1832,1832,1793,1793,1755,1755,1813,1813,1827,1827,1836,1836,1860,1860,1926,1926,1946,1832,1860],"Lynx":[741,828,828,908,908,1044,1044,1133,1133,1174,1174,1181],"Lyra":[2275,2273,2273,2260,2260,2275,2275,2302,2302,2315,2315,2286,2286,2275],"Mensa":[748,655,655,544,544,563],"Microscopium":[2552,2541,2541,2601,2601,2596,2596,2572,2572,2552],"Monoceros":[955,1023,1023,870,870,766,766,739,870,811,811,759,759,773,773,792],"Musca":[1453,1502,1502,1550,1550,1566,1566,1592,1592,1539,1539,1550],"Norma":[1941,1995,1995,1973,1973,1932,1932,1941],"Octans":[1714,2748,2748,2625,2625,1714],"Ophiuchus":[2160,2145,2145,2140,2140,2126,2126,2059,2059,2014,2014,1968,1968,1974,1974,2025,2025,2072,2059,2025,2025,2012,2012,1998,1998,1990,1990,1994,2140,2072,2072,2095,2095,2108],"Orion":[719,685,685,711,711,728,728,706,706,688,688,605,605,527,533,524,524,520,520,515,515,516,516,527,527,530,530,546,546,562,576,603,603,622,622,605,605,633,633,688,688,652,652,669,652,640,640,622],"Pavo":[2496,2531,2531,2463,2463,2282,2282,2208,2208,2180,2180,2135,2135,2254,2254,2433,2433,2531,2531,2608],"Pegasus":[2687,2756,2756,2790,2790,1,1,11,11,2793,2793,2760,2760,2750,2750,2685,2685,2643,2793,2790,2790,2765,2765,2761,2761,2680,2680,2647],"Perseus":[354,384,384,395,395,394,394,356,356,351,351,345,345,328,328,291,291,258,258,270,270,301,301,302,302,300,300,303,303,295,295,277,410,422,422,415,415,351,301,246,246,148],"Phoenix":[25,97,97,130,130,135,135,105,105,97,97,4,4,25],"Pictor":[825,684,684,675],"Pisces":[110,109,109,118,118,110,110,108,108,134,134,152,152,185,185,165,165,146,146,133,133,111,111,92,92,69,69,2879,2879,2847,2847,2833,2833,2823,2823,2814,2814,2832,2832,2853,2853,2861,2861,2847,2814,2788],"Piscis Austrinus":[2747,2778,2778,2776,2776,2769,2769,2734,2734,2681,2681,2641,2641,2653,2653,2681,2681,2747],"Puppis":[791,891,891,941,941,951,951,980,980,997,997,1021,1021,1015,1015,1027,980,975,975,962,962,941],"Pyxis":[1015,1082,1082,1098,1098,1115],"Reticulum":[439,449,449,402,402,374,374,439],"Sagitta":[2403,2419,2419,2453,2405,2419],"Sagittarius":[2205,2221,2221,2211,2211,2232,2232,2198,2365,2369,2369,2321,2321,2267,2267,2232,2430,2448,2448,2436,2436,2391,2391,2372,2372,2349,2349,2293,2293,2267,2267,2211,2211,2181,2181,2221,2221,2321,2321,2334,2334,2293,2293,2327,2327,2344,2344,2352,2352,2366,2366,2367,2327,2308,2308,2289,2289,2293],"Scorpius":[1924,1927,1927,1943,1927,1979,1979,2005,2005,2022,2022,2040,2040,2043,2043,2050,2050,2073,2073,2123,2123,2141,2141,2133,2133,2118],"Sculptor":[88,2866,2866,2818,2818,2837],"Scutum":[2252,2278,2278,2262,2262,2238,2238,2252],"Serpens":[1892,1886,1886,1894,1894,1919,1919,1892,1892,1868,1868,1890,1890,1902,1902,1968,2072,2127,2127,2160,2160,2176,2176,2216,2216,2303],"Sextans":[1270,1253,1253,1308,1308,1309],"Taurus":[642,482,482,470,470,445,445,454,454,468,468,606,445,398,398,333,333,404,333,330,330,348],"Telescopium":[2190,2229,2229,2231],"Triangulum":[161,196,196,206,206,161],"Triangulum Australe":[2032,1905,1905,1821,1821,2032],"Tucana":[2707,2812,2812,35,35,18,18,2880,2880,2719,2719,2707],"Ursa Major":[1497,1377,1377,1374,1374,1469,1469,1497,1497,1584,1584,1633,1633,1668,1469,1451,1451,1401,1401,1399,1451,1385,1385,1292,1385,1281,1377,1198,1198,1056,1056,1245,1245,1374,1374,1247,1247,1205,1205,1127,1137,1205],"Ursa Minor":[1909,1996,1996,1847,1847,1790,1790,1909,1909,2064,2064,2192,2192,129],"Vela":[1104,1190,1190,1261,1261,1348,1348,1277,1277,1210,1210,1153,1153,1027],"Virgo":[1450,1465,1465,1507,1507,1559,1559,1604,1604,1635,1635,1713,1713,1764,1596,1587,1587,1559,1604,1648,1648,1689,1689,1772],"Volans":[1145,1061,1061,1032,1032,903,903,876,876,1032,1032,1145],"Vulpecula":[2353,2381,2381,2434,2434,2459,2459,2484]} \ No newline at end of file diff --git a/scripts/build-constellations.mjs b/scripts/build-constellations.mjs new file mode 100644 index 0000000..6a8ba53 --- /dev/null +++ b/scripts/build-constellations.mjs @@ -0,0 +1,94 @@ +// Builds apps/site/public/constellations.json for the sky's hover lines: the +// stick figures of the 88 constellations from d3-celestial (Olaf Frohn, +// BSD-3-Clause), with each vertex matched to the nearest star in stars.bin. +// Run after scripts/build-stars.mjs, since it reads the stars it wrote. +// +// Run: node scripts/build-constellations.mjs +// Output: by constellation name, as the star names give it, a flat list of +// star record index pairs, one pair per line: [a, b, c, d] is the lines a–b +// and c–d. + +import { readFileSync, writeFileSync } from "node:fs"; +import { CONSTELLATIONS } from "./constellation-names.mjs"; + +// Pinned to the commit that last changed the file. +const SOURCE = + "https://raw.githubusercontent.com/ofrohn/d3-celestial/d2e20e104b86429d90ac8227a5b021262b45d75a/data/constellations.lines.json"; +const STARS = new URL("../apps/site/public/stars.bin", import.meta.url); +const OUT = new URL("../apps/site/public/constellations.json", import.meta.url); +// A vertex further than this from every star in stars.bin is a star fainter +// than the catalogue's limit; lines to it are left out. +const MATCH = 0.2; +const RAD = Math.PI / 180; + +const unit = (ra, dec) => [ + Math.cos(dec * RAD) * Math.cos(ra * RAD), + Math.cos(dec * RAD) * Math.sin(ra * RAD), + Math.sin(dec * RAD), +]; + +// Record layout as scripts/build-stars.mjs writes it. +const buf = readFileSync(STARS); +const stars = []; +for (let o = 0; o + 6 <= buf.length; o += 6) { + stars.push( + unit( + (buf.readUInt16LE(o) / 65536) * 360, + (buf.readInt16LE(o + 2) / 32767) * 90, + ), + ); +} + +const res = await fetch(SOURCE); +if (!res.ok) throw new Error(`constellations: HTTP ${res.status}`); +const { features } = await res.json(); + +const nearest = (ra, dec) => { + const [x, y, z] = unit(ra, dec); + let best = -1; + let dot = Math.cos(MATCH * RAD); + stars.forEach(([sx, sy, sz], i) => { + const d = x * sx + y * sy + z * sz; + if (d > dot) { + dot = d; + best = i; + } + }); + return best; +}; + +// Serpens comes as two features, head and tail; they share one figure. +const figures = new Map(); +let dropped = 0; +for (const { id, geometry } of features) { + const pairs = figures.get(id) ?? []; + const seen = new Set(); + for (let k = 0; k < pairs.length; k += 2) { + seen.add(`${pairs[k]}-${pairs[k + 1]}`); + } + for (const line of geometry.coordinates) { + const ids = line.map(([ra, dec]) => nearest(ra, dec)); + for (let k = 1; k < ids.length; k++) { + const [a, b] = [ids[k - 1], ids[k]]; + if (a < 0 || b < 0) { + dropped++; + continue; + } + if (a === b || seen.has(`${a}-${b}`) || seen.has(`${b}-${a}`)) continue; + seen.add(`${a}-${b}`); + pairs.push(a, b); + } + } + figures.set(id, pairs); +} + +const json = JSON.stringify( + Object.fromEntries( + [...figures].map(([id, pairs]) => [CONSTELLATIONS[id] ?? id, pairs]), + ), +); +writeFileSync(OUT, json); +const lines = [...figures.values()].reduce((n, p) => n + p.length / 2, 0); +console.log( + `${figures.size} figures, ${lines} lines (${dropped} to fainter stars left out), ${json.length} bytes`, +); From dcf01a63c2a417ada5af00745c1f2efb66593b23 Mon Sep 17 00:00:00 2001 From: "Craig C." Date: Fri, 23 Oct 2026 13:32:59 +0300 Subject: [PATCH 3/6] feat(site): constellations trace out from the hovered star MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Hover (or tap) any star and its constellation draws itself outward from that star, line by line, then fades a moment after the pointer leaves. Moving to another star of the same constellation keeps it. - The worker projects the figure on each pick: lines follow the great circle in half-degree steps, stop 6 px short of each star, and break wherever they pass below the horizon or behind the skyline. The page draws them as SVG polylines under the cards; nothing runs until a hover. - Every star the sky draws now has a label: its IAU name with the constellation ("Sarin · Hercules"), else its designation ("ζ Herculis"). - Tooltips rise into place out of a soft blur on the theme's enter timing and fade out, instead of popping. Reduced motion keeps only the fade. - The popover credits d3-celestial for the figures. --- apps/site/src/components/Aurora.astro | 158 +++++++++++++++++++++- apps/site/src/scripts/aurora.sites.ts | 1 + apps/site/src/scripts/aurora.worker.ts | 176 +++++++++++++++++++++---- 3 files changed, 306 insertions(+), 29 deletions(-) diff --git a/apps/site/src/components/Aurora.astro b/apps/site/src/components/Aurora.astro index ccc8fc2..55f1fbc 100644 --- a/apps/site/src/components/Aurora.astro +++ b/apps/site/src/components/Aurora.astro @@ -10,6 +10,9 @@ import { + + @@ -92,6 +95,7 @@ import { import type { AuroraMessage, SkyLabel, + SkyLine, WorkerMessage, } from "../scripts/aurora.worker"; @@ -204,19 +208,113 @@ import { target === document.documentElement || target === document.body || (target instanceof HTMLElement && target.tagName === "MAIN"); - const label = (found: SkyLabel | null) => { + + // The tooltip rises into place out of a soft blur, and fades away. Timing + // comes from the theme's enter tokens; reduced motion keeps only the fade. + const root = getComputedStyle(document.documentElement); + const enter = { + duration: parseFloat(root.getPropertyValue("--gmt-enter-duration")) * 1000 || 500, + easing: root.getPropertyValue("--gmt-enter-easing").trim() || "ease-out", + }; + const calm = matchMedia("(prefers-reduced-motion: reduce)"); + let naming = ""; + let fade: Animation | null = null; + const name = (found: SkyLabel | null) => { if (!tip) return; - tip.hidden = !found || !over || !canvas?.classList.contains("on"); - if (!found || tip.hidden) return; - const note = document.createElement("span"); - note.textContent = found.note; - tip.replaceChildren(found.name, ...(found.note ? [note] : [])); + if (!found) { + if (!naming) return; + naming = ""; + const from = getComputedStyle(tip).opacity; + fade?.cancel(); + fade = tip.animate([{ opacity: from }, { opacity: 0 }], { + duration: 200, + easing: "ease-in", + fill: "forwards", + }); + fade.onfinish = () => { + if (!naming) tip.hidden = true; + }; + return; + } + const fresh = found.name !== naming; + if (fresh) { + naming = found.name; + tip.hidden = false; + const note = document.createElement("span"); + note.textContent = found.note; + tip.replaceChildren(found.name, ...(found.note ? [note] : [])); + } // Centred on the object, but kept inside the window at the sides. const half = tip.offsetWidth / 2 + 4; const width = document.documentElement.clientWidth; tip.style.left = `${Math.min(Math.max(found.x, half), width - half)}px`; tip.style.top = `${found.y}px`; tip.classList.toggle("below", found.y < 48); + if (!fresh) return; + const rise = tip.classList.contains("below") ? -6 : 6; + fade?.cancel(); + fade = tip.animate( + calm.matches + ? [{ opacity: 0 }, { opacity: 1 }] + : [ + { + opacity: 0, + transform: `translateY(${rise}px) scale(0.94)`, + filter: "blur(4px)", + }, + { opacity: 1, transform: "none", filter: "blur(0)" }, + ], + enter, + ); + }; + + // Constellation lines: each run draws itself out from the hovered star, a + // step at a time, and the whole figure fades away a moment after the + // pointer leaves. Moving to another star of the same constellation keeps it. + const sketch = document.querySelector(".sky-lines"); + let figure = ""; + let wipe = 0; + const trace = (found: SkyLabel | null) => { + if (!sketch) return; + const next = (found?.lines && found.figure) || ""; + if (next === figure) { + if (next) { + clearTimeout(wipe); + sketch.classList.remove("out"); + } + return; + } + if (!next) { + sketch.classList.add("out"); + clearTimeout(wipe); + wipe = window.setTimeout(() => { + sketch.replaceChildren(); + figure = ""; + }, 1200); + return; + } + clearTimeout(wipe); + figure = next; + sketch.classList.remove("out"); + sketch.replaceChildren( + ...(found?.lines ?? []).map(({ step, points }: SkyLine) => { + const line = document.createElementNS( + "http://www.w3.org/2000/svg", + "polyline", + ); + line.setAttribute("points", points.join(" ")); + line.setAttribute("pathLength", "1"); + line.style.setProperty("--step", String(step)); + return line; + }), + ); + }; + + const label = (found: SkyLabel | null) => { + const shown = + found && over && canvas?.classList.contains("on") ? found : null; + name(shown); + trace(shown); }; const point = (event: PointerEvent) => { over = bare(event.target); @@ -344,6 +442,54 @@ import { .sky-tip.below { translate: -50% 12px; } + + /* Under the cards, over the sky. Each polyline has pathLength 1, so a dash + of 1 offset by 1 is the line not yet drawn. */ + .sky-lines { + position: fixed; + inset: 0; + z-index: -1; + width: 100%; + height: 100%; + pointer-events: none; + filter: drop-shadow( + 0 0 3px color(from var(--gmt-cyan) srgb r g b / 0.6) + ); + transition: opacity var(--gmt-duration-med) var(--gmt-easing); + } + .sky-lines.out { + opacity: 0; + transition: opacity 0.7s var(--gmt-easing) 0.3s; + } + .sky-lines :global(polyline) { + fill: none; + stroke: color(from var(--gmt-ice) srgb r g b / 0.45); + stroke-width: 1; + stroke-linecap: round; + stroke-linejoin: round; + stroke-dasharray: 1; + stroke-dashoffset: 1; + animation: sky-trace 0.6s var(--gmt-enter-easing) forwards; + animation-delay: calc(var(--step) * 0.16s); + } + @keyframes sky-trace { + from { + stroke-dashoffset: 1; + opacity: 0; + } + 40% { + opacity: 1; + } + to { + stroke-dashoffset: 0; + opacity: 1; + } + } + @media (prefers-reduced-motion: reduce) { + .sky-lines :global(polyline) { + animation-delay: 0s; + } + } .sky-tip[hidden] { display: none; } diff --git a/apps/site/src/scripts/aurora.sites.ts b/apps/site/src/scripts/aurora.sites.ts index 73023b3..0a3c8a1 100644 --- a/apps/site/src/scripts/aurora.sites.ts +++ b/apps/site/src/scripts/aurora.sites.ts @@ -125,6 +125,7 @@ export const SKY_CREDITS: [string, string][] = [ "JPL Keplerian elements for approximate positions (E. M. Standish).", ], ["Star names", "IAU Catalog of Star Names (IAU WGSN)."], + ["Figures", "Constellation lines from d3-celestial (Olaf Frohn)."], ]; const POINTS = [ diff --git a/apps/site/src/scripts/aurora.worker.ts b/apps/site/src/scripts/aurora.worker.ts index a7a6f37..9a953e9 100644 --- a/apps/site/src/scripts/aurora.worker.ts +++ b/apps/site/src/scripts/aurora.worker.ts @@ -77,9 +77,27 @@ export type AuroraMessage = /** What is drawn near this point (CSS pixels), within reach pixels. */ | { type: "pick"; x: number; y: number; reach: number }; -/** The sun, moon, a planet or a named star as drawn, in CSS pixels from the - * canvas's corner; note is "Planet" or a star's constellation. */ -export type SkyLabel = { name: string; note: string; x: number; y: number }; +/** One unbroken run of a constellation line in CSS pixels, [x, y, x, y, …], + * drawn from the end nearer the hovered star; step counts lines out from it. */ +export type SkyLine = { step: number; points: number[] }; + +/** The sun, moon, a planet or a star as drawn, in CSS pixels from the + * canvas's corner; note is "Planet", a named star's constellation, or empty + * when the name already says it ("ζ Herculis"). A star in a constellation + * also brings its stick figure as it shows now: in front of the mountains and + * above the horizon. */ +export type SkyLabel = { + name: string; + note: string; + x: number; + y: number; + figure?: string; + lines?: SkyLine[]; +}; + +/** A star's label (see scripts/build-stars.mjs): record index, name or + * designation, constellation, and 0 if the name already says it. */ +type StarName = [number, string, string?, 0?]; /** To the page: the frame is up ("on"), we gave up ("off"), the site drawn, * or the answer to a pick (for the tooltips). */ @@ -413,33 +431,131 @@ function start(init: Extract): void { aim(); }; - // What the page's pointer is over: the nearest sun, moon, planet or named + // What the page's pointer is over: the nearest sun, moon, planet or // star within reach that is up, clear of the skyline, bright enough to be // drawn and in frame. let starDirs: Float32Array | null = null; - let named: [number, string, string][] = []; + let named: StarName[] = []; + // Constellation stick figures by name, as star index pairs. + let figures: Record = {}; + // A direction to CSS pixels, or null behind the camera. + const screen = (d: Vec3): [number, number] | null => { + const w = width || 1; + const h = height || 1; + const z = d[0] * cam[6]! + d[1] * cam[7]! + d[2] * cam[8]!; + if (z <= 0) return null; + const nx = + (d[0] * cam[0]! + d[1] * cam[1]! + d[2] * cam[2]!) / (z * tanY * (w / h)); + const ny = (d[0] * cam[3]! + d[1] * cam[4]! + d[2] * cam[5]!) / (z * tanY); + return [((nx + 1) / 2) * w, ((1 - ny) / 2) * h]; + }; + // Up and clear of the skyline. + const clear = (d: Vec3, above: number) => { + const alt = Math.asin(d[1]); + return alt >= above && alt >= ridgeAt(Math.atan2(d[0], d[2]) / RAD); + }; + const starAt = (i: number): Vec3 => { + const s = starDirs!; + return apply(now.stars, [s[i * 5]!, s[i * 5 + 1]!, s[i * 5 + 2]!]); + }; + // A figure's lines, counted out from the hovered star or the figure's star + // nearest it (parts it does not reach follow on), stopping short of each + // star and cut wherever they pass below the horizon or behind the mountains. + const figureLines = (pairs: number[], star: number): SkyLine[] => { + let from = star; + if (!pairs.includes(star)) { + const s = starAt(star); + let near = -2; + for (const i of pairs) { + const d = starAt(i); + const dot = d[0] * s[0] + d[1] * s[1] + d[2] * s[2]; + if (dot > near) [near, from] = [dot, i]; + } + } + const step = new Map([[from, 0]]); + let queue = [from]; + let next = 0; + while (step.size < new Set(pairs).size) { + if (!queue.length) { + const rest = pairs.find((i) => !step.has(i))!; + step.set(rest, ++next); + queue = [rest]; + } + const at = queue.shift()!; + const n = step.get(at)!; + next = Math.max(next, n); + for (let k = 0; k < pairs.length; k += 2) { + const [a, b] = [pairs[k]!, pairs[k + 1]!]; + const other = a === at ? b : b === at ? a : -1; + if (other >= 0 && !step.has(other)) { + step.set(other, n + 1); + queue.push(other); + } + } + } + // 6 CSS pixels clear of each star, in radians at the middle of the view. + const gap = (6 * 2 * tanY) / (height || 1); + const out: SkyLine[] = []; + for (let k = 0; k < pairs.length; k += 2) { + let [a, b] = [pairs[k]!, pairs[k + 1]!]; + if (step.get(b)! < step.get(a)!) [a, b] = [b, a]; + const [da, db] = [starAt(a), starAt(b)]; + const cos = da[0] * db[0] + da[1] * db[1] + da[2] * db[2]; + const angle = Math.acos(Math.min(1, Math.max(-1, cos))); + if (angle <= 2 * gap) continue; + // Along the great circle in steps of at most half a degree. + const n = Math.max(2, Math.ceil((angle - 2 * gap) / (0.5 * RAD))); + let run: number[] = []; + const end = () => { + if (run.length >= 4) out.push({ step: step.get(a)!, points: run }); + run = []; + }; + for (let i = 0; i <= n; i++) { + const f = gap + ((angle - 2 * gap) * i) / n; + const [ka, kb] = [Math.sin(angle - f), Math.sin(f)]; + const s = Math.sin(angle); + const d: Vec3 = [ + (ka * da[0] + kb * db[0]) / s, + (ka * da[1] + kb * db[1]) / s, + (ka * da[2] + kb * db[2]) / s, + ]; + const xy = clear(d, 0) ? screen(d) : null; + if (!xy) { + end(); + continue; + } + run.push(Math.round(xy[0] * 10) / 10, Math.round(xy[1] * 10) / 10); + } + end(); + } + return out; + }; const pick = (px: number, py: number, reach: number): SkyLabel | null => { const w = width || 1; const h = height || 1; const limit = site.limit - 2 * now.moonlight; let best: SkyLabel | null = null; + let bestStar = -1; + let bestFigure = ""; let nearest = reach * reach; - const consider = (name: string, note: string, d: Vec3, above: number) => { - const alt = Math.asin(d[1]); - if (alt < above || alt < ridgeAt(Math.atan2(d[0], d[2]) / RAD)) return; - const z = d[0] * cam[6]! + d[1] * cam[7]! + d[2] * cam[8]!; - if (z <= 0) return; - const nx = - (d[0] * cam[0]! + d[1] * cam[1]! + d[2] * cam[2]!) / - (z * tanY * (w / h)); - const ny = - (d[0] * cam[3]! + d[1] * cam[4]! + d[2] * cam[5]!) / (z * tanY); - if (Math.abs(nx) > 1 || Math.abs(ny) > 1) return; - const x = ((nx + 1) / 2) * w; - const y = ((1 - ny) / 2) * h; + const consider = ( + name: string, + note: string, + d: Vec3, + above: number, + star = -1, + figure = "", + ) => { + if (!clear(d, above)) return; + const xy = screen(d); + if (!xy) return; + const [x, y] = xy; + if (x < 0 || x > w || y < 0 || y > h) return; const dist = (x - px) ** 2 + (y - py) ** 2; if (dist >= nearest) return; nearest = dist; + bestStar = star; + bestFigure = figure; best = { name, note, x: Math.round(x), y: Math.round(y) }; }; // Fainter near the horizon, as the star shader draws it. @@ -454,12 +570,21 @@ function start(init: Extract): void { }); const s = starDirs; if (s) { - for (const [i, name, constellation] of named) { - const d = apply(now.stars, [s[i * 5]!, s[i * 5 + 1]!, s[i * 5 + 2]!]); - if (seen(s[i * 5 + 3]!, d)) consider(name, constellation, d, 0); + for (const [i, name, constellation = "", quiet] of named) { + const d = starAt(i); + if (!seen(s[i * 5 + 3]!, d)) continue; + const note = quiet === 0 ? "" : constellation; + consider(name, note, d, 0, i, constellation); } } - return best; + const found = best as SkyLabel | null; + const pairs = found && bestStar >= 0 ? figures[bestFigure] : undefined; + if (!found || !pairs) return found; + return { + ...found, + figure: bestFigure, + lines: figureLines(pairs, bestStar), + }; }; const quad = (program: WebGLProgram) => { @@ -639,7 +764,12 @@ function start(init: Extract): void { return fetch(new URL("/star-names.json", self.location.origin)); }) .then((res) => (res?.ok ? res.json() : [])) - .then((list: [number, string, string][]) => (named = list)) + .then((list: StarName[]) => { + named = list; + return fetch(new URL("/constellations.json", self.location.origin)); + }) + .then((res) => (res.ok ? res.json() : {})) + .then((list: Record) => (figures = list)) .catch(() => {}); scope.onmessage = ({ data }) => { From 81e037b8a85112812ada60ca1d07445b59db954b Mon Sep 17 00:00:00 2001 From: "Craig C." Date: Fri, 23 Oct 2026 13:32:59 +0300 Subject: [PATCH 4/6] feat(site): library cards and their buttons fade their glow in On hover or focus a card's border brightens and a soft glow fades in on the theme's enter timing; it fades back quicker so moving between cards leaves no trail. The Docs and GitHub buttons do the same, with the glow on its own layer so it never fights the focus ring's box-shadow. --- apps/site/src/components/RepoCard.astro | 44 +++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/apps/site/src/components/RepoCard.astro b/apps/site/src/components/RepoCard.astro index ef9d814..18cd304 100644 --- a/apps/site/src/components/RepoCard.astro +++ b/apps/site/src/components/RepoCard.astro @@ -18,17 +18,25 @@ const { name, description, docsHref, githubHref } = Astro.props; From 5e5f023e801c1218dfca2b367d7618e10792088f Mon Sep 17 00:00:00 2001 From: "Craig C." Date: Fri, 23 Oct 2026 13:37:20 +0300 Subject: [PATCH 5/6] fix(site): header border on the bottom only The header set its own border to the bottom edge, but the glass panel's hairline (::before) still outlined all four sides and its top highlight (::after) drew a line along the top. Both are off for the header. --- apps/site/src/components/Header.astro | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/site/src/components/Header.astro b/apps/site/src/components/Header.astro index ea21cce..57e11f8 100644 --- a/apps/site/src/components/Header.astro +++ b/apps/site/src/components/Header.astro @@ -46,6 +46,12 @@ const links = [ border-radius: 0; border-width: 0 0 1px 0; } + /* Only the bottom border: drop the glass panel's four-sided hairline and + its top highlight. */ + .site-header::before, + .site-header::after { + display: none; + } .wordmark { font-family: var(--gmt-font-display); color: var(--gmt-ice); From 11550c68dc7da827221ec54ab3fec3fba52453e9 Mon Sep 17 00:00:00 2001 From: "Craig C." Date: Fri, 23 Oct 2026 13:48:57 +0300 Subject: [PATCH 6/6] fix(site): figure stars without a designation, and lines that follow the sky From review: - 20 stars in the stick figures have no Bayer letter or Flamsteed number, so their label ("HR 3579") names no constellation and hovering them drew nothing. The worker now maps each figure star to its figure when the figures load and falls back to it. Each of the 20 is in one figure only. - Lines were placed once, in screen pixels, so they stayed behind after a resize or rotation and drifted off their stars as the sky turned. The worker now follows the picked object: after a resize and on each once-a-second sky refresh it picks it again where it is drawn now, or answers null once it is not drawn. The page moves the existing lines in place without drawing them again, and tells the worker to stop following once nothing is shown. The tooltip follows the same way. --- apps/site/src/components/Aurora.astro | 50 ++++++++++++------ apps/site/src/scripts/aurora.worker.ts | 73 ++++++++++++++++++++------ 2 files changed, 93 insertions(+), 30 deletions(-) diff --git a/apps/site/src/components/Aurora.astro b/apps/site/src/components/Aurora.astro index 55f1fbc..cae7ade 100644 --- a/apps/site/src/components/Aurora.astro +++ b/apps/site/src/components/Aurora.astro @@ -270,18 +270,38 @@ import { // Constellation lines: each run draws itself out from the hovered star, a // step at a time, and the whole figure fades away a moment after the - // pointer leaves. Moving to another star of the same constellation keeps it. + // pointer leaves. Moving to another star of the same constellation keeps it, + // and as the worker follows the star (resize, the sky turning) the lines + // move with it without drawing again. const sketch = document.querySelector(".sky-lines"); let figure = ""; let wipe = 0; + const polyline = ({ step, points }: SkyLine, drawn: boolean) => { + const line = document.createElementNS( + "http://www.w3.org/2000/svg", + "polyline", + ); + line.setAttribute("points", points.join(" ")); + line.setAttribute("pathLength", "1"); + line.style.setProperty("--step", String(step)); + line.classList.toggle("drawn", drawn); + return line; + }; const trace = (found: SkyLabel | null) => { if (!sketch) return; const next = (found?.lines && found.figure) || ""; if (next === figure) { - if (next) { - clearTimeout(wipe); - sketch.classList.remove("out"); - } + if (!next) return; + clearTimeout(wipe); + sketch.classList.remove("out"); + const lines = found?.lines ?? []; + const old = [...sketch.children]; + lines.forEach((line, k) => { + const el = old[k]; + if (el) el.setAttribute("points", line.points.join(" ")); + else sketch.append(polyline(line, true)); + }); + old.slice(lines.length).forEach((el) => el.remove()); return; } if (!next) { @@ -297,22 +317,17 @@ import { figure = next; sketch.classList.remove("out"); sketch.replaceChildren( - ...(found?.lines ?? []).map(({ step, points }: SkyLine) => { - const line = document.createElementNS( - "http://www.w3.org/2000/svg", - "polyline", - ); - line.setAttribute("points", points.join(" ")); - line.setAttribute("pathLength", "1"); - line.style.setProperty("--step", String(step)); - return line; - }), + ...(found?.lines ?? []).map((line) => polyline(line, false)), ); }; + // Once nothing is shown, the worker can stop following the last pick. + let holding = false; const label = (found: SkyLabel | null) => { const shown = found && over && canvas?.classList.contains("on") ? found : null; + if (holding && !shown) post?.({ type: "drop" }); + holding = !!shown; name(shown); trace(shown); }; @@ -472,6 +487,11 @@ import { animation: sky-trace 0.6s var(--gmt-enter-easing) forwards; animation-delay: calc(var(--step) * 0.16s); } + /* Lines added while the figure is up, as a cut closes: already drawn. */ + .sky-lines :global(polyline.drawn) { + animation: none; + stroke-dashoffset: 0; + } @keyframes sky-trace { from { stroke-dashoffset: 1; diff --git a/apps/site/src/scripts/aurora.worker.ts b/apps/site/src/scripts/aurora.worker.ts index 9a953e9..b427d14 100644 --- a/apps/site/src/scripts/aurora.worker.ts +++ b/apps/site/src/scripts/aurora.worker.ts @@ -75,7 +75,9 @@ export type AuroraMessage = | { type: "still"; still: boolean } | { type: "hidden"; hidden: boolean } /** What is drawn near this point (CSS pixels), within reach pixels. */ - | { type: "pick"; x: number; y: number; reach: number }; + | { type: "pick"; x: number; y: number; reach: number } + /** The page no longer shows the last pick; stop following it. */ + | { type: "drop" }; /** One unbroken run of a constellation line in CSS pixels, [x, y, x, y, …], * drawn from the end nearer the hovered star; step counts lines out from it. */ @@ -100,7 +102,9 @@ export type SkyLabel = { type StarName = [number, string, string?, 0?]; /** To the page: the frame is up ("on"), we gave up ("off"), the site drawn, - * or the answer to a pick (for the tooltips). */ + * or the answer to a pick (for the tooltips). The picked object is then + * followed: after a resize and as the sky turns, it comes again where the + * object is now, or null once it is no longer drawn. */ export type WorkerMessage = | "on" | "off" @@ -436,8 +440,10 @@ function start(init: Extract): void { // drawn and in frame. let starDirs: Float32Array | null = null; let named: StarName[] = []; - // Constellation stick figures by name, as star index pairs. + // Constellation stick figures by name, as star index pairs, and the + // figure of each star in one (for stars whose label names none). let figures: Record = {}; + const figureOf = new Map(); // A direction to CSS pixels, or null behind the camera. const screen = (d: Vec3): [number, number] | null => { const w = width || 1; @@ -530,12 +536,21 @@ function start(init: Extract): void { } return out; }; + // What was last picked, to follow: a star's index, or SUN, LUNA or + // PLANET - k for planet k (LUNA: MOON is the texture). NOTHING when + // nothing is. + const [NOTHING, SUN, LUNA, PLANET] = [-1, -2, -3, -4]; + let held = NOTHING; + const planetAt = (k: number): Vec3 => { + const p = now.planets; + return apply(now.stars, [p[k * 5]!, p[k * 5 + 1]!, p[k * 5 + 2]!]); + }; const pick = (px: number, py: number, reach: number): SkyLabel | null => { const w = width || 1; const h = height || 1; const limit = site.limit - 2 * now.moonlight; let best: SkyLabel | null = null; - let bestStar = -1; + let bestWhat = NOTHING; let bestFigure = ""; let nearest = reach * reach; const consider = ( @@ -543,7 +558,7 @@ function start(init: Extract): void { note: string, d: Vec3, above: number, - star = -1, + what: number, figure = "", ) => { if (!clear(d, above)) return; @@ -554,19 +569,20 @@ function start(init: Extract): void { const dist = (x - px) ** 2 + (y - py) ** 2; if (dist >= nearest) return; nearest = dist; - bestStar = star; + bestWhat = what; bestFigure = figure; best = { name, note, x: Math.round(x), y: Math.round(y) }; }; // Fainter near the horizon, as the star shader draws it. const seen = (mag: number, d: Vec3) => mag + 0.12 * (1 / (Math.max(d[1], 0) + 0.04) - 1) < limit; - consider("Sun", "", now.sun, -0.83 * RAD); - consider("Moon", "", now.moon, 0); - const p = now.planets; + consider("Sun", "", now.sun, -0.83 * RAD, SUN); + consider("Moon", "", now.moon, 0, LUNA); PLANETS.forEach((name, k) => { - const d = apply(now.stars, [p[k * 5]!, p[k * 5 + 1]!, p[k * 5 + 2]!]); - if (seen(p[k * 5 + 3]!, d)) consider(name, "Planet", d, 0); + const d = planetAt(k); + if (seen(now.planets[k * 5 + 3]!, d)) { + consider(name, "Planet", d, 0, PLANET - k); + } }); const s = starDirs; if (s) { @@ -574,18 +590,35 @@ function start(init: Extract): void { const d = starAt(i); if (!seen(s[i * 5 + 3]!, d)) continue; const note = quiet === 0 ? "" : constellation; - consider(name, note, d, 0, i, constellation); + const figure = constellation || figureOf.get(i) || ""; + consider(name, note, d, 0, i, figure); } } + held = bestWhat; const found = best as SkyLabel | null; - const pairs = found && bestStar >= 0 ? figures[bestFigure] : undefined; + const pairs = found && bestWhat >= 0 ? figures[bestFigure] : undefined; if (!found || !pairs) return found; return { ...found, figure: bestFigure, - lines: figureLines(pairs, bestStar), + lines: figureLines(pairs, bestWhat), }; }; + // Pick the held object again where it is drawn now. + const follow = () => { + if (held === NOTHING) return; + const d = + held >= 0 + ? starAt(held) + : held === SUN + ? now.sun + : held === LUNA + ? now.moon + : planetAt(PLANET - held); + const xy = screen(d); + scope.postMessage({ pick: xy ? pick(xy[0], xy[1], 1) : null }); + if (!xy) held = NOTHING; + }; const quad = (program: WebGLProgram) => { const a = attrib(program, "aPos", tri, 2); @@ -599,6 +632,7 @@ function start(init: Extract): void { skyAt = wallMs; now = sky(site, skyAt); planetsAt = 0; + follow(); } if (!planetsAt) { planetsAt = skyAt; @@ -769,12 +803,18 @@ function start(init: Extract): void { return fetch(new URL("/constellations.json", self.location.origin)); }) .then((res) => (res.ok ? res.json() : {})) - .then((list: Record) => (figures = list)) + .then((list: Record) => { + figures = list; + for (const [name, pairs] of Object.entries(list)) { + for (const i of pairs) if (!figureOf.has(i)) figureOf.set(i, name); + } + }) .catch(() => {}); scope.onmessage = ({ data }) => { if (level > 2) return; if (data.type === "site") { + held = NOTHING; place(data.site); skyAt = wall(); now = sky(site, skyAt); @@ -786,6 +826,7 @@ function start(init: Extract): void { height = data.height; resize(); draw(); + follow(); } else if (data.type === "still") { still = data.still; stop(); @@ -797,6 +838,8 @@ function start(init: Extract): void { else run(); } else if (data.type === "pick") { scope.postMessage({ pick: pick(data.x, data.y, data.reach) }); + } else if (data.type === "drop") { + held = NOTHING; } }; }