/*++++++++++++++ .IDENTIFICATION constel.c .LANGUAGE C .AUTHOR Francois Ochsenbein [CDS] francois@astro.u-strasbg.fr .ENVIRONMENT Astronomical Catalogues (#6042), see http://vizier.u-strasbg.fr/viz-bin/VizieR?-source=6042 .KEYWORDS Constellations .VERSION 1.0 17-Jul-2001 .COMMENTS Find out all boundaries of a Constellation. Argument to main may be a position (dec.deg. Eq=1875), or a constellation name. With argument as a constellation name, the 'graph' GNU plotting program can be used to generate the area covered by the constellation, e.g. constel -p Cyg | graph -T ps -q 1.0 -L Cyg -x 360 0 -y -90 90 ---------------*/ // [Don Cross / 2020-05-02]: downloaded from http://cdsarc.u-strasbg.fr/viz-bin/ftp-index?VI/42 // I modified to generate constellation.borders file for Astronomy Engine. #include #include #include #include #define ITEMS(a) (sizeof(a)/sizeof(a[0])) typedef struct row { double ral, rau, del; char cst[4]; } ROW ; /* The Constellation Boundaries as extracted from Cat.#6042, paper by N.G. Roman, 1987PASP...99..695R */ static ROW data[] = { { 0.0000,360.0000, 88.0000,"UMi"}, {120.0000,217.5000, 86.5000,"UMi"}, {315.0000,345.0000, 86.1667,"UMi"}, {270.0000,315.0000, 86.0000,"UMi"}, { 0.0000,120.0000, 85.0000,"Cep"}, {137.5000,160.0000, 82.0000,"Cam"}, { 0.0000, 75.0000, 80.0000,"Cep"}, {160.0000,217.5000, 80.0000,"Cam"}, {262.5000,270.0000, 80.0000,"UMi"}, {302.5000,315.0000, 80.0000,"Dra"}, { 0.0000, 52.6250, 77.0000,"Cep"}, {172.5000,203.7500, 77.0000,"Cam"}, {248.0000,262.5000, 75.0000,"UMi"}, {302.5000,310.0000, 75.0000,"Cep"}, {119.5000,137.5000, 73.5000,"Cam"}, {137.5000,170.0000, 73.5000,"Dra"}, {195.0000,248.0000, 70.0000,"UMi"}, { 46.5000, 51.2500, 68.0000,"Cas"}, {306.2500,310.0000, 67.0000,"Dra"}, {170.0000,180.0000, 66.5000,"Dra"}, { 0.0000, 5.0000, 66.0000,"Cep"}, {210.0000,235.0000, 66.0000,"UMi"}, {353.7500,360.0000, 66.0000,"Cep"}, {180.0000,202.5000, 64.0000,"Dra"}, {202.5000,216.2500, 63.0000,"Dra"}, {347.5000,353.7500, 63.0000,"Cep"}, { 91.5000,105.0000, 62.0000,"Cam"}, {300.0000,306.2500, 61.5000,"Dra"}, {308.0500,309.0000, 60.9167,"Cep"}, {105.0000,119.5000, 60.0000,"Cam"}, {119.5000,126.2500, 60.0000,"UMa"}, {296.5000,300.0000, 59.5000,"Dra"}, {300.0000,308.0500, 59.5000,"Cep"}, {343.0000,347.5000, 59.0833,"Cep"}, { 0.0000, 36.5000, 58.5000,"Cas"}, {291.2500,296.5000, 58.0000,"Dra"}, { 25.5000, 28.6250, 57.5000,"Cas"}, { 36.5000, 46.5000, 57.0000,"Cas"}, { 46.5000, 47.5000, 57.0000,"Cam"}, {334.7500,343.0000, 56.2500,"Cep"}, { 75.0000, 91.5000, 56.0000,"Cam"}, {210.5000,216.2500, 55.5000,"UMa"}, {216.2500,291.2500, 55.5000,"Dra"}, { 47.5000, 50.0000, 55.0000,"Cam"}, {332.0000,334.7500, 55.0000,"Cep"}, {309.0000,329.5000, 54.8333,"Cep"}, { 0.0000, 25.5000, 54.0000,"Cas"}, { 91.5000, 97.5000, 54.0000,"Lyn"}, {181.2500,202.5000, 53.0000,"UMa"}, {228.7500,236.2500, 53.0000,"Dra"}, {329.5000,332.0000, 52.7500,"Cep"}, { 50.0000, 75.0000, 52.5000,"Cam"}, {343.0000,350.0000, 52.5000,"Cas"}, {236.2500,255.0000, 51.5000,"Dra"}, { 30.6250, 37.7500, 50.5000,"Per"}, {255.0000,273.5000, 50.5000,"Dra"}, { 0.0000, 20.5000, 50.0000,"Cas"}, { 20.5000, 25.0000, 50.0000,"Per"}, { 97.5000,102.0000, 50.0000,"Lyn"}, {350.0000,360.0000, 50.0000,"Cas"}, {202.5000,210.5000, 48.5000,"UMa"}, { 0.0000, 16.7500, 48.0000,"Cas"}, {353.7500,360.0000, 48.0000,"Cas"}, {272.6250,273.5000, 47.5000,"Her"}, {273.5000,286.2500, 47.5000,"Dra"}, {286.2500,287.5000, 47.5000,"Cyg"}, { 25.0000, 30.6250, 47.0000,"Per"}, {126.2500,137.5000, 47.0000,"UMa"}, { 2.5000, 13.0000, 46.0000,"Cas"}, {180.0000,181.2500, 45.0000,"UMa"}, {102.0000,110.5000, 44.5000,"Lyn"}, {328.6250,329.5000, 44.0000,"Cyg"}, {328.1250,328.6250, 43.7500,"Cyg"}, {287.5000,291.0000, 43.5000,"Cyg"}, {137.5000,152.5000, 42.0000,"UMa"}, {152.5000,161.7500, 40.0000,"UMa"}, {231.5000,236.2500, 40.0000,"Boo"}, {236.2500,245.0000, 40.0000,"Her"}, {138.7500,143.7500, 39.7500,"Lyn"}, { 0.0000, 37.7500, 36.7500,"And"}, { 37.7500, 38.5000, 36.7500,"Per"}, {290.3750,291.0000, 36.5000,"Lyr"}, { 67.5000, 70.3750, 36.0000,"Per"}, {326.0000,328.1250, 36.0000,"Cyg"}, {328.1250,330.0000, 36.0000,"Lac"}, { 98.0000,110.5000, 35.5000,"Aur"}, {110.5000,116.2500, 35.5000,"Lyn"}, { 0.0000, 30.0000, 35.0000,"And"}, {330.0000,342.2500, 35.0000,"Lac"}, {342.2500,343.0000, 34.5000,"Lac"}, {343.0000,352.5000, 34.5000,"And"}, { 38.5000, 40.7500, 34.0000,"Per"}, {161.7500,165.0000, 34.0000,"UMa"}, {180.0000,185.0000, 34.0000,"CVn"}, {116.2500,138.7500, 33.5000,"Lyn"}, {138.7500,148.2500, 33.5000,"LMi"}, { 10.7500, 21.1250, 33.0000,"And"}, {227.7500,231.5000, 33.0000,"Boo"}, {352.5000,356.2500, 32.0833,"And"}, {185.0000,198.7500, 32.0000,"CVn"}, {356.2500,360.0000, 31.3333,"And"}, {209.3750,210.5000, 30.7500,"CVn"}, { 36.2500, 40.7500, 30.6667,"Tri"}, { 40.7500, 67.5000, 30.6667,"Per"}, { 67.5000, 71.2500, 30.0000,"Aur"}, {272.6250,290.3750, 30.0000,"Lyr"}, {165.0000,180.0000, 29.0000,"UMa"}, {295.0000,313.7500, 29.0000,"Cyg"}, { 71.2500, 88.2500, 28.5000,"Aur"}, {148.2500,157.5000, 28.5000,"LMi"}, {198.7500,209.3750, 28.5000,"CVn"}, { 0.0000, 1.0000, 28.0000,"And"}, { 21.1250, 25.0000, 28.0000,"Tri"}, { 88.2500, 98.0000, 28.0000,"Aur"}, {118.2500,120.0000, 28.0000,"Gem"}, {313.7500,326.0000, 28.0000,"Cyg"}, {288.8750,295.0000, 27.5000,"Cyg"}, { 28.7500, 36.2500, 27.2500,"Tri"}, {242.5000,245.0000, 27.0000,"CrB"}, {226.2500,227.7500, 26.0000,"Boo"}, {227.7500,242.5000, 26.0000,"CrB"}, {275.5000,283.0000, 26.0000,"Lyr"}, {161.2500,165.0000, 25.5000,"LMi"}, {283.0000,288.8750, 25.5000,"Lyr"}, { 25.0000, 28.7500, 25.0000,"Tri"}, { 10.7500, 12.7500, 23.7500,"Psc"}, {157.5000,161.2500, 23.5000,"LMi"}, {318.7500,321.2500, 23.5000,"Vul"}, { 85.5000, 88.2500, 22.8333,"Tau"}, { 1.0000, 2.1250, 22.0000,"And"}, {238.7500,240.5000, 22.0000,"Ser"}, { 88.2500, 93.2500, 21.5000,"Gem"}, {297.5000,303.7500, 21.2500,"Vul"}, {283.0000,288.7500, 21.0833,"Vul"}, { 2.1250, 12.7500, 21.0000,"And"}, {303.7500,308.5000, 20.5000,"Vul"}, {117.1250,118.2500, 20.0000,"Gem"}, {308.5000,318.7500, 19.5000,"Vul"}, {288.7500,297.5000, 19.1667,"Vul"}, { 49.2500, 50.5000, 19.0000,"Ari"}, {283.0000,285.0000, 18.5000,"Sge"}, { 85.5000, 86.5000, 18.0000,"Ori"}, { 93.2500, 94.6250, 17.5000,"Gem"}, {285.0000,297.5000, 16.1667,"Sge"}, { 74.5000, 80.0000, 16.0000,"Tau"}, {238.7500,241.2500, 16.0000,"Her"}, {297.5000,303.7500, 15.7500,"Sge"}, { 69.2500, 74.5000, 15.5000,"Tau"}, { 80.0000, 84.0000, 15.5000,"Tau"}, {192.5000,202.5000, 15.0000,"Com"}, {258.7500,273.7500, 14.3333,"Her"}, {178.0000,192.5000, 14.0000,"Com"}, {112.5000,117.1250, 13.5000,"Gem"}, {251.2500,258.7500, 12.8333,"Her"}, { 0.0000, 2.1250, 12.5000,"Peg"}, { 84.0000, 86.5000, 12.5000,"Tau"}, {105.0000,112.5000, 12.5000,"Gem"}, {316.7500,320.0000, 12.5000,"Peg"}, { 94.6250,104.0000, 12.0000,"Gem"}, {273.7500,283.0000, 12.0000,"Her"}, {313.1250,315.7500, 11.8333,"Del"}, {315.7500,316.7500, 11.8333,"Peg"}, {172.7500,178.0000, 11.0000,"Leo"}, { 93.6250, 94.6250, 10.0000,"Ori"}, {104.0000,105.0000, 10.0000,"Gem"}, {117.1250,118.8750, 10.0000,"Cnc"}, {357.5000,360.0000, 10.0000,"Peg"}, { 25.0000, 49.2500, 9.9167,"Ari"}, {302.1250,304.5000, 8.5000,"Del"}, {202.5000,226.2500, 8.0000,"Boo"}, {341.2500,357.5000, 7.5000,"Peg"}, {118.8750,138.7500, 7.0000,"Cnc"}, {138.7500,161.2500, 7.0000,"Leo"}, {273.7500,279.9333, 6.2500,"Oph"}, {279.9333,283.0000, 6.2500,"Aql"}, {312.5000,313.1250, 6.0000,"Del"}, {105.0000,105.2500, 5.5000,"CMi"}, {273.7500,276.3750, 4.5000,"Ser"}, {241.2500,251.2500, 4.0000,"Her"}, {273.7500,276.3750, 3.0000,"Oph"}, {322.0000,325.0000, 2.7500,"Peg"}, { 0.0000, 30.0000, 2.0000,"Psc"}, {278.7500,283.0000, 2.0000,"Ser"}, {304.5000,312.5000, 2.0000,"Del"}, {312.5000,320.0000, 2.0000,"Equ"}, {320.0000,322.0000, 2.0000,"Peg"}, {330.0000,341.2500, 2.0000,"Peg"}, {325.0000,330.0000, 1.7500,"Peg"}, {105.2500,108.0000, 1.5000,"CMi"}, { 53.7500, 69.2500, 0.0000,"Tau"}, { 69.2500, 70.0000, 0.0000,"Ori"}, {108.0000,121.2500, 0.0000,"CMi"}, {220.0000,226.2500, 0.0000,"Vir"}, {267.5000,273.7500, 0.0000,"Oph"}, { 39.7500, 49.2500, -1.7500,"Cet"}, { 49.2500, 53.7500, -1.7500,"Tau"}, {226.2500,244.0000, -3.2500,"Ser"}, { 70.0000, 76.2500, -4.0000,"Ori"}, { 87.5000, 93.6250, -4.0000,"Ori"}, {267.5000,269.5000, -4.0000,"Ser"}, {273.7500,278.7500, -4.0000,"Ser"}, {278.7500,283.0000, -4.0000,"Aql"}, {341.2500,357.5000, -4.0000,"Psc"}, {161.2500,172.7500, -6.0000,"Leo"}, {172.7500,177.5000, -6.0000,"Vir"}, { 0.0000, 5.0000, -7.0000,"Psc"}, {357.5000,360.0000, -7.0000,"Psc"}, {213.7500,220.0000, -8.0000,"Vir"}, {238.7500,244.0000, -8.0000,"Oph"}, {300.0000,308.0000, -9.0000,"Aql"}, {320.0000,328.0000, -9.0000,"Aqr"}, {257.5000,269.5000,-10.0000,"Oph"}, { 87.5000,121.2500,-11.0000,"Mon"}, { 73.7500, 76.2500,-11.0000,"Eri"}, { 76.2500, 87.5000,-11.0000,"Ori"}, {121.2500,125.5000,-11.0000,"Hya"}, {143.7500,161.2500,-11.0000,"Sex"}, {177.5000,192.5000,-11.0000,"Vir"}, {263.7500,265.0000,-11.6667,"Oph"}, {283.0000,300.0000,-12.0333,"Aql"}, { 72.5000, 73.7500,-14.5000,"Eri"}, {308.0000,320.0000,-15.0000,"Aqr"}, {257.5000,273.7500,-16.0000,"Ser"}, {273.7500,283.0000,-16.0000,"Sct"}, {125.5000,128.7500,-17.0000,"Hya"}, {244.0000,245.6250,-18.2500,"Oph"}, {128.7500,136.2500,-19.0000,"Hya"}, {161.2500,162.5000,-19.0000,"Crt"}, {244.0000,245.6250,-19.2500,"Sco"}, {235.0000,238.7500,-20.0000,"Lib"}, {188.7500,192.5000,-22.0000,"Crv"}, {192.5000,213.7500,-22.0000,"Vir"}, {136.2500,146.2500,-24.0000,"Hya"}, { 25.0000, 39.7500,-24.3833,"Cet"}, { 39.7500, 56.2500,-24.3833,"Eri"}, {162.5000,177.5000,-24.5000,"Crt"}, {177.5000,188.7500,-24.5000,"Crv"}, {213.7500,223.7500,-24.5000,"Lib"}, {244.0000,251.2500,-24.5833,"Oph"}, { 0.0000, 25.0000,-25.5000,"Cet"}, {320.0000,328.0000,-25.5000,"Cap"}, {328.0000,357.5000,-25.5000,"Aqr"}, {357.5000,360.0000,-25.5000,"Cet"}, {146.2500,153.7500,-26.5000,"Hya"}, { 70.5000, 72.5000,-27.2500,"Eri"}, { 72.5000, 91.7500,-27.2500,"Lep"}, {300.0000,320.0000,-28.0000,"Cap"}, {153.7500,158.7500,-29.1667,"Hya"}, {188.7500,223.7500,-29.5000,"Hya"}, {223.7500,235.0000,-29.5000,"Lib"}, {235.0000,240.0000,-29.5000,"Sco"}, { 68.7500, 70.5000,-30.0000,"Eri"}, {251.2500,264.0000,-30.0000,"Oph"}, {264.0000,267.5000,-30.0000,"Sgr"}, {158.7500,162.5000,-31.1667,"Hya"}, { 91.7500,110.5000,-33.0000,"CMa"}, {183.7500,188.7500,-33.0000,"Hya"}, {162.5000,183.7500,-35.0000,"Hya"}, { 52.5000, 56.2500,-36.0000,"For"}, {125.5000,140.5000,-36.7500,"Pyx"}, { 64.0000, 68.7500,-37.0000,"Eri"}, {267.5000,287.5000,-37.0000,"Sgr"}, {320.0000,345.0000,-37.0000,"PsA"}, {345.0000,350.0000,-37.0000,"Scl"}, { 45.0000, 52.5000,-39.5833,"For"}, {140.5000,165.0000,-39.7500,"Ant"}, { 0.0000, 25.0000,-40.0000,"Scl"}, { 25.0000, 45.0000,-40.0000,"For"}, { 58.0000, 64.0000,-40.0000,"Eri"}, {350.0000,360.0000,-40.0000,"Scl"}, {212.5000,223.7500,-42.0000,"Cen"}, {235.0000,240.0000,-42.0000,"Lup"}, {240.0000,246.3125,-42.0000,"Sco"}, { 72.5000, 75.0000,-43.0000,"Cae"}, { 75.0000, 98.7500,-43.0000,"Col"}, {120.0000,125.5000,-43.0000,"Pup"}, { 51.2500, 58.0000,-44.0000,"Eri"}, {246.3125,267.5000,-45.5000,"Sco"}, {267.5000,287.5000,-45.5000,"CrA"}, {287.5000,305.0000,-45.5000,"Sgr"}, {305.0000,320.0000,-45.5000,"Mic"}, { 45.0000, 51.2500,-46.0000,"Eri"}, { 67.5000, 72.5000,-46.5000,"Cae"}, {230.0000,235.0000,-48.0000,"Lup"}, { 0.0000, 35.0000,-48.1667,"Phe"}, { 40.0000, 45.0000,-49.0000,"Eri"}, { 61.2500, 64.0000,-49.0000,"Hor"}, { 64.0000, 67.5000,-49.0000,"Cae"}, {320.0000,330.0000,-50.0000,"Gru"}, { 90.0000,120.0000,-50.7500,"Pup"}, {120.0000,122.5000,-50.7500,"Vel"}, { 36.2500, 40.0000,-51.0000,"Eri"}, { 57.5000, 61.2500,-51.0000,"Hor"}, { 0.0000, 27.5000,-51.5000,"Phe"}, { 90.0000, 92.5000,-52.5000,"Car"}, {122.5000,126.7500,-53.0000,"Vel"}, { 52.5000, 57.5000,-53.1667,"Hor"}, { 57.5000, 60.0000,-53.1667,"Dor"}, { 0.0000, 23.7500,-53.5000,"Phe"}, { 32.5000, 36.2500,-54.0000,"Eri"}, { 67.5000, 75.0000,-54.0000,"Pic"}, {225.7500,230.0000,-54.0000,"Lup"}, {126.7500,132.5000,-54.5000,"Vel"}, { 92.5000, 97.5000,-55.0000,"Car"}, {177.5000,192.5000,-55.0000,"Cen"}, {212.5000,225.7500,-55.0000,"Lup"}, {225.7500,230.0000,-55.0000,"Nor"}, { 60.0000, 65.0000,-56.5000,"Dor"}, {132.5000,165.0000,-56.5000,"Vel"}, {165.0000,168.7500,-56.5000,"Cen"}, {262.5000,270.0000,-57.0000,"Ara"}, {270.0000,305.0000,-57.0000,"Tel"}, {330.0000,350.0000,-57.0000,"Gru"}, { 48.0000, 52.5000,-57.5000,"Hor"}, { 75.0000, 82.5000,-57.5000,"Pic"}, { 97.5000,102.5000,-58.0000,"Car"}, { 0.0000, 20.0000,-58.5000,"Phe"}, { 20.0000, 32.5000,-58.5000,"Eri"}, {350.0000,360.0000,-58.5000,"Phe"}, { 65.0000, 68.7500,-59.0000,"Dor"}, {230.0000,246.3125,-60.0000,"Nor"}, {305.0000,320.0000,-60.0000,"Ind"}, { 82.5000, 90.0000,-61.0000,"Pic"}, {227.5000,230.0000,-61.0000,"Cir"}, {246.3125,248.7500,-61.0000,"Ara"}, {223.7500,227.5000,-63.5833,"Cir"}, {248.7500,251.2500,-63.5833,"Ara"}, { 90.0000,102.5000,-64.0000,"Pic"}, {102.5000,135.5000,-64.0000,"Car"}, {168.7500,177.5000,-64.0000,"Cen"}, {177.5000,192.5000,-64.0000,"Cru"}, {192.5000,218.0000,-64.0000,"Cen"}, {202.5000,205.0000,-65.0000,"Cir"}, {251.2500,252.5000,-65.0000,"Ara"}, { 32.5000, 48.0000,-67.5000,"Hor"}, { 48.0000, 68.7500,-67.5000,"Ret"}, {221.2500,223.7500,-67.5000,"Cir"}, {252.5000,262.5000,-67.5000,"Ara"}, {262.5000,270.0000,-67.5000,"Pav"}, {330.0000,350.0000,-67.5000,"Tuc"}, { 68.7500, 98.7500,-70.0000,"Dor"}, {205.0000,221.2500,-70.0000,"Cir"}, {221.2500,255.0000,-70.0000,"TrA"}, { 0.0000, 20.0000,-75.0000,"Tuc"}, { 52.5000, 68.7500,-75.0000,"Hyi"}, { 98.7500,135.5000,-75.0000,"Vol"}, {135.5000,168.7500,-75.0000,"Car"}, {168.7500,205.0000,-75.0000,"Mus"}, {270.0000,320.0000,-75.0000,"Pav"}, {320.0000,350.0000,-75.0000,"Ind"}, {350.0000,360.0000,-75.0000,"Tuc"}, { 11.2500, 20.0000,-76.0000,"Tuc"}, { 0.0000, 52.5000,-82.5000,"Hyi"}, {115.0000,205.0000,-82.5000,"Cha"}, {205.0000,270.0000,-82.5000,"Aps"}, { 52.5000,115.0000,-85.0000,"Men"}, { 0.0000,360.0000,-90.0000,"Oct"} } ; static double SnapQuarterArcmin(double deg) { const double SNAP = 4.0 * 60.0; double x = round(SNAP * deg) / SNAP; int before, after; /* Make sure the snapped value still rounds to the same 4 decimal digits. */ before = (int) round(deg * 10000.0); after = (int) round(x * 10000.0); if (before != after) { fprintf(stderr, "FATAL(SnapQuarterArcmin): deg=%0.16lf, x=%0.16lf, before=%d, after=%d\n", deg, x, before, after); exit(1); } return x; } int main() { int n = ITEMS(data); int i; for (i=0; i