# Andriy Zhugayevych azh@ukr.net # AstroTools package # created 10.12.2011, modified - see version below # ################################################################################ #root: AstroTools #hfl: AstroTools #toc: _Overview AstroTools:=module() option package; global none; export ModuleLoad, Setup, Points, Places, Tools, # Data tables zeroMJD, ExcelMJD, date2MJD, MJD2date, JE2MJD, MJD2JE, BE2MJD, # Time dms2deg, deg2dms, deg2dm, dms2Eq, Eq2dms, Eq2dm, # Conversion Eq2xyz, xyz2Eq, Eq2Gal, Gal2Eq, PrecessMatrix, Precess, # Coordinates Sep, Sepxyz, MEq2P, Mxyz2P, Constellation, # Geometry CombinedMag, AdaptedMag, DSclass, # Visibility greek_full, greek_abbr, greek_code, cnstl_full, cnstl_geni, cnstl_abbr, cnstl_code; # Names local version, defplace, deftool, # Setup Pi180, # Mathematical constants daysinmonth, # Time GalRA, GalDec, GalL0, # Galactic coordinates epsilon, precess, precess_c1, precess_c2, # Precession CnstlBound, # Constellation boundaries i; ModuleLoad:=proc() version:=20150708; epsilon:=84381.412; # sec, (precession) obliquity in J2000 precess:=50.2882; # sec/year, precession in longitude in J2000 precess_c1:=evalhf(precess*cos(epsilon*Pi/648000)/3600); precess_c2:=evalhf(precess*sin(epsilon*Pi/648000)/3600); # Default settings Setup( 'defplace'="FHO", 'deftool'="SM"); NULL end: #hfl: Setup #toc: _Setup #AstroTools[Setup] Setup:=proc({printout::boolean:=false}) local sq; sq:=ProcessSetupArgs([_rest],['defplace','deftool'],['version']); if printout then printf("defplace=%s, deftool=%s\n",defplace,deftool) end; sq end: ######################################################################## #cat: Names #hfl: Greek #toc: greek #greek greek_full:=["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega"]; greek_abbr:=[seq(s[1..3],s=greek_full)]; greek_code:=table(): for i from 1 to 24 do greek_code[greek_abbr[i]]:=i end; #hfl: Constellations #toc: constellations #constellations cnstl_full:=[ "Andromeda","Antlia","Apus","Aquila","Aquarius","Ara","Aries","Auriga","Bootes","Caelum","Camelopardalis","Capricornus", "Carina","Cassiopeia","Centaurus","Cepheus","Cetus","Chamaeleon","Circinus","Canis Major","Canis Minor","Cancer", "Columba","Coma Berenices","Corona Australis","Corona Borealis","Crater","Crux","Corvus","Canes Venatici","Cygnus", "Delphinus","Dorado","Draco","Equuleus","Eridanus","Fornax","Gemini","Grus","Hercules","Horologium","Hydra","Hydrus", "Indus","Lacerta","Leo","Lepus","Libra","Leo Minor","Lupus","Lynx","Lyra","Mensa","Microscopium","Monoceros","Musca", "Norma","Octans","Ophiuchus","Orion","Pavo","Pegasus","Perseus","Phoenix","Pictor","Piscis Austrinus","Pisces","Puppis", "Pyxis","Reticulum","Sculptor","Scorpius","Scutum","Serpens","Sextans","Sagitta","Sagittarius","Taurus","Telescopium", "Triangulum Australe","Triangulum","Tucana","Ursa Major","Ursa Minor","Vela","Virgo","Volans","Vulpecula"]; cnstl_geni:=[ "Andromedae","Antliae","Apodis","Aquilae","Aquarii","Arae","Arietis","Aurigae","Bootis","Caeli","Camelopardalis","Capricorni", "Carinae","Cassiopeiae","Centauri","Cephei","Ceti","Chamaeleontis","Circini","Canis Majoris","Canis Minoris","Cancri", "Columbae","Comae Berenices","Coronae Australis","Coronae Borealis","Crateris","Crucis","Corvi","Canum Venaticorum","Cygni", "Delphini","Doradus","Draconis","Equulei","Eridani","Fornacis","Geminorum","Gruis","Herculis","Horologii","Hydrae","Hydri", "Indi","Lacertae","Leonis","Leporis","Librae","Leonis Minoris","Lupi","Lyncis","Lyrae","Mensae","Microscopii","Monocerotis","Muscae", "Normae","Octantis","Ophiuchi","Orionis","Pavonis","Pegasi","Persei","Phoenicis","Pictoris","Piscis Austrini","Piscium","Puppis", "Pyxidis","Reticuli","Sculptoris","Scorpii","Scuti","Serpentis","Sextantis","Sagittae","Sagittarii","Tauri","Telescopii", "Trianguli Australis","Trianguli","Tucanae","Ursae Majoris","Ursae Minoris","Velorum","Virginis","Volantis","Vulpeculae"]; cnstl_abbr:=[ "And","Ant","Aps","Aql","Aqr","Ara","Ari","Aur","Boo","Cae","Cam","Cap","Car","Cas","Cen","Cep","Cet","Cha","Cir","CMa", "CMi","Cnc","Col","Com","CrA","CrB","Crt","Cru","Crv","CVn","Cyg","Del","Dor","Dra","Equ","Eri","For","Gem","Gru","Her", "Hor","Hya","Hyi","Ind","Lac","Leo","Lep","Lib","LMi","Lup","Lyn","Lyr","Men","Mic","Mon","Mus","Nor","Oct","Oph","Ori", "Pav","Peg","Per","Phe","Pic","PsA","Psc","Pup","Pyx","Ret","Scl","Sco","Sct","Ser","Sex","Sge","Sgr","Tau","Tel","TrA", "Tri","Tuc","UMa","UMi","Vel","Vir","Vol","Vul"]; cnstl_code:=table(): for i from 1 to 88 do cnstl_code[cnstl_abbr[i]]:=i end; ################################################################################ #cat: Data tables # [ RA, Dec ] for J2000 #hfl: DataTables Points:=table([ "GalCenter"=[ 266.41683, -29.00781 ], # rotational Center of the Milky Way "SolApex" =[ 277. , +30. ]]); # [ longtitude(deg), lattitude(deg), height(m), description ] #hfl: DataTables Places:=table([ "FHO"=[ -106.665, +35.875, 2620, "observing spot near Fenton Hill observatory" ], "Paj"=[ -106.414, +35.849, 2740, "Cerro Grande slope on NM4 near Pajarito mountain" ]]); # [ aperture(mm), focal length(mm), magnification(s), mmax, rmin, type, description ] #hfl: DataTables Tools:=table([ "ne"=[ 7, undefined, 1, 6.5, 60, "naked eye", "" ], "B" =[ 35, undefined, 7, 9.5, 20, "binocular", "Berkut" ], "B2"=[ 50, undefined, 10, 10.5, 15, "binocular", "Celestron UpClose" ], "SM"=[ 70, 300, 15, 11.5, 8, "binocular", "Celestron SkyMaster" ], "S" =[ 50, undefined, 20, 11.0, 4, "spotting scope", "" ], "G" =[ 50, 500, [25, 50], 11.5, 2.5, "spotting scope", "Galileoscope" ], "AM"=[ 114, 1000, [50,100], 13.0, 1.5, "Newtonian", "Celestron AstroMaster EQ" ]]); ################################################################################ #cat: Time #hfl: Time zeroMJD:=2400000.5; #hfl: Time ExcelMJD:=15018; # code is adapted from CAL2JD subroutine of SOFA software collection #hfl: Time date2MJD:=proc(year::posint,month::posint,day::posint,$) local dy,y; if (month>12) then error("Wrong month in %1.%2.%3",year,month,day) end; daysinmonth[2]:=`if`(irem(year,4)=0 and not(irem(year,100)=0 and not(irem(year,400)=0)),29,28); if (day>daysinmonth[month]) then error("Wrong day in %1.%2.%3",year,month,day) end; dy:=-iquo(14-month,12); y:=year+dy; iquo(1461*(y+4800),4)+iquo(367*(month-2-12*dy),12)-iquo(3*iquo(y+4900,100),4)+day-2432076 end: # code is adapted from JD2CAL subroutine of SOFA software collection #hfl: Time MJD2date:=proc(MJD::posint,$) local J,K,L,M,N; L:=MJD+2468570; N:=iquo(4*L,146097); L:=L-iquo(146097*N+3,4); J:=iquo(4000*(L+1),1461001); L:=L-iquo(1461*J,4)+31; K:=iquo(80*L,2447); M:=iquo(K,11); [100*(N-49)+J+M,K+2-12*M,L-iquo(2447*K,80)] end: #hfl: Time JE2MJD:=(JE::realcons)->(JE-2000)*365.25+2451545-zeroMJD: #hfl: Time MJD2JE:=(MJD::realcons)->(MJD+zeroMJD-2451545)/365.25+2000: #hfl: Time BE2MJD:=(BE::realcons)->(BE-1900)*365.242198781+2415020.31352-zeroMJD: ################################################################################ #cat: Conversion #hfl: dms2deg dms2deg:=proc(dms::{string,numeric},format::{"d","dm","dms"}:="dms",$) local s,sgn,p,v,v2; s:=`if`(type(dms,string),StringTools[Select](v->evalb(StringTools[IsDigit](v) or member(v,[".","-"])),dms),convert(dms,string)); sgn:=1; if (s[1]="-") then sgn:=-1; s:=s[2..] end; p:=searchtext(".",s)-1; if (p=-1) then p:=length(s); v2:=0 else v2:=op(sscanf(s[p+1..],%f)) end; if (format="d" or p=1 or p=2) then v:=op(sscanf(s[1..p],%d))+v2 elif (format="dm" or p=3 or p=4) then v:=op(sscanf(s[1..p-2],%d))+(op(sscanf(s[p-1..p],%d))+v2)/60 else v:=op(sscanf(s[1..p-4],%d))+(op(sscanf(s[p-3..p-2],%d))+(op(sscanf(s[p-1..p],%d))+v2)/60)/60 end; evalf(v*sgn) end: #hfl: dms2deg deg2dms:=proc( deg::realcons, { format::string:="%.0f", sep::string:=" ", digits::nonnegint:=0 },$) local p,d,m,s; p:=signum(deg); d:=trunc(abs(deg)); m:=60*frac(abs(deg)); s:=Round(60*frac(m),digits); m:=trunc(m); if (s=60) then m:=m+1; s:=0 end; if (m=60) then d:=d+1; m:=0 end; sprintf(cat(format,sep,"%02d",sep,"%0*.*f"), p*(d+.001), m, `if`(digits=0,2,3+digits), digits, s ) end: #hfl: dms2deg deg2dm:=proc( deg::realcons, { format::string:="%.0f", sep::string:=" ", digits::nonnegint:=0 },$) local p,d,m; p:=signum(deg); d:=trunc(abs(deg)); m:=Round(60*frac(abs(deg)),digits); if (m=60) then d:=d+1; m:=0 end; sprintf(cat(format,sep,"%0*.*f"), p*(d+.001), `if`(digits=0,2,3+digits), digits, m ) end: #hfl: dms2Eq dms2Eq:=proc(s1::{string,numeric},s2::{string,numeric}:="",{sep::string:=""},$) local RA,Dec,i; if (s2="") then if type(s1,numeric) then error("If only one argument is provided then it must be string but received numeric") end; if (sep="") then i:=searchtext("+",s1); if (i=0) then i:=searchtext("-",s1) end else i:=searchtext(sep,s1) end; if (i=0) then error("No separator (%1) in input string %2",`if`(sep="","+-",sep),s1) end; RA,Dec:=s1[1..i-1],s1[`if`(sep="",i,i+1)..-1] else RA,Dec:=s1,s2 end; Reduce2P(15*dms2deg(RA),360), dms2deg(Dec) end: #hfl: dms2Eq Eq2dms:=proc( RA::realcons, Dec::realcons, { format::[string,string]:=["%02.0f","%+03.0f"] ,sep::[string,string,string]:=[" "," ",", "], digits::[nonnegint,nonnegint]:=[1,0] },$) cat( deg2dms(Reduce2P(RA/15,24),':-format'=format[1],':-sep'=sep[1],':-digits'=digits[1]), sep[3], deg2dms(Dec,':-format'=format[2],':-sep'=sep[2],':-digits'=digits[2]) ) end: #hfl: dms2Eq Eq2dm:=proc( RA::realcons, Dec::realcons, { format::[string,string]:=["%02.0f","%+03.0f"] ,sep::[string,string,string]:=[" "," ",", "], digits::[nonnegint,nonnegint]:=[1,0] },$) cat( deg2dm(Reduce2P(RA/15,24),':-format'=format[1],':-sep'=sep[1],':-digits'=digits[1]), sep[3], deg2dm(Dec,':-format'=format[2],':-sep'=sep[2],':-digits'=digits[2]) ) end: ################################################################################ #cat: Coordinates #hfl: Eq2xyz Eq2xyz:=(RA::realcons,Dec::realcons)->Vector([ evalhf(cos(RA*Pi180)*cos(Dec*Pi180)), evalhf(sin(RA*Pi180)*cos(Dec*Pi180)), evalhf(sin(Dec*Pi180)) ],datatype=float): #hfl: Eq2xyz xyz2Eq:=xyz->( evalf(arctan(xyz[2],xyz[1])/Pi180+`if`(xyz[2]>0,0,360)), evalf(arcsin(xyz[3])/Pi180) ): #hfl: Eq2Gal Eq2Gal:=(RA::realcons,Dec::realcons)->( Reduce2P(evalhf(arctan(sin(Dec*Pi180)*cos(GalDec*Pi180)-cos(Dec*Pi180)*sin(GalDec*Pi180)*cos((RA-GalRA)*Pi180),cos(Dec*Pi180)*sin((RA-GalRA)*Pi180))/Pi180+GalL0),360), evalhf(arcsin(sin(Dec*Pi180)*sin(GalDec*Pi180)+cos(Dec*Pi180)*cos(GalDec*Pi180)*cos((RA-GalRA)*Pi180))/Pi180) ): #hfl: Eq2Gal Gal2Eq:=(L::realcons,b::realcons)->( Reduce2P(evalhf(arctan(cos(b*Pi180)*cos((L-GalL0)*Pi180),sin(b*Pi180)*cos(GalDec*Pi180)-cos(b*Pi180)*sin(GalDec*Pi180)*sin((L-GalL0)*Pi180))/Pi180+GalRA),360), evalhf(arcsin(sin(b*Pi180)*sin(GalDec*Pi180)+cos(b*Pi180)*cos(GalDec*Pi180)*sin((L-GalL0)*Pi180))/Pi180) ): #hfl: Precess PrecessMatrix:=proc(MJD1::realcons,MJD2::realcons,$) # precession matrix from JD1 to JD2 with basic epoch J2000 local T,t,zeta,z,theta; T:=(MJD1-51544.5)/36525; t:=(MJD2-MJD1)/36525; zeta:=evalhf(Pi/648000*((2306.2181+1.39656*T-0.000139*T^2)*t+(0.30188-0.000344*T)*t^2+0.017998*t^2)); z:=evalhf(Pi/648000*((2306.2181+1.39656*T-0.000139*T^2)*t+(1.09468+0.000066*T)*t^2+0.018203*t^2)); theta:=evalhf(Pi/648000*((2004.3109-0.85330*T-0.000217*T^2)*t+(-0.42665-0.000217*T)*T^2-0.041833*t^2)); Matrix(< , , >, datatype=float) end: #hfl: Precess Precess:=(RA::realcons,Dec::realcons,dJE::realcons)-> (Reduce2P(evalhf(RA+(precess_c1+precess_c2*sin(RA*Pi180)*tan(Dec*Pi180))*dJE),360), evalhf(Dec+(precess_c2*cos(RA*Pi180))*dJE)): ################################################################################ #cat: Geometry #hfl: Sep Sep:=(RA1,Dec1,RA2,Dec2)->evalhf(arccos(sin(Dec1*Pi180)*sin(Dec2*Pi180)+cos(Dec1*Pi180)*cos(Dec2*Pi180)*cos((RA1-RA2)*Pi180))/Pi180): #hfl: Sep Sepxyz:=(p1,p2)->evalf(1-add(p1[i]*p2[i],i=1..3)): #hfl: MEq2P MEq2P:=(RA,Dec)->Matrix(RotationMEulerY(-Pi/2,Dec*Pi180-Pi/2,-RA*Pi180),datatype=float): #hfl: MEq2P Mxyz2P:=p->Matrix(< < 1-p[1]^2/(1+p[3]), -p[1]*p[2]/(1+p[3]), p[1] >| < -p[1]*p[2]/(1+p[3]), 1-p[2]^2/(1+p[3]) ,p[2] >| < -p[1], -p[2], p[3] >>,datatype=float): #hfl: Constellation Constellation:=proc(RA::realcons,Dec::realcons,JE::realcons:=2000,$) local RA1,Dec1,v; RA1,Dec1:=Precess(RA,Dec,MJD2JE(BE2MJD(1875))-JE); RA1,Dec1:=240*RA1,60*Dec1; for v in CnstlBound do if (Dec1>=v[1] and RA1>=v[2] and RA1`if`(m0,wb*AdaptedMag(mb,mmax)+(1-wb)*(mf-2.5*log10(v))+cfield*r^2*10^(alpha*(mf-mfield)),infinity) end: ######################################################################## # Constants Pi180:=evalf(Pi/180); daysinmonth:=Vector([31,28,31,30,31,30,31,31,30,31,30,31],datatype=integer); # Feb is modified by module members #GalRA,GalDec,GalL0:= 192.25, 27.4, 33.; # exact by definition for B1950 GalRA,GalDec,GalL0:=192.859508, 27.128336, 32.932; # J2000 CnstlBound:=[ # [ lower Dec ('), lower RA (s), higher RA (s), constellation ] for B1875 [ 5280, 0,86400,"UMi"], [ 5190,28800,52200,"UMi"], [ 5170,75600,82800,"UMi"], [ 5160,64800,75600,"UMi"], [ 5100, 0,28800,"Cep"], [ 4920,33000,38400,"Cam"], [ 4800, 0,18000,"Cep"], [ 4800,38400,52200,"Cam"], [ 4800,63000,64800,"UMi"], [ 4800,72600,75600,"Dra"], [ 4620, 0,12630,"Cep"], [ 4620,41400,48900,"Cam"], [ 4500,59520,63000,"UMi"], [ 4500,72600,74400,"Cep"], [ 4410,28680,33000,"Cam"], [ 4410,33000,40800,"Dra"], [ 4200,46800,59520,"UMi"], [ 4080,11160,12300,"Cas"], [ 4020,73500,74400,"Dra"], [ 3990,40800,43200,"Dra"], [ 3960, 0, 1200,"Cep"], [ 3960,50400,56400,"UMi"], [ 3960,84900,86400,"Cep"], [ 3840,43200,48600,"Dra"], [ 3780,48600,51900,"Dra"], [ 3780,83400,84900,"Cep"], [ 3720,21960,25200,"Cam"], [ 3690,72000,73500,"Dra"], [ 3655,73932,74160,"Cep"], [ 3600,25200,28680,"Cam"], [ 3600,28680,30300,"UMa"], [ 3570,71160,72000,"Dra"], [ 3570,72000,73932,"Cep"], [ 3545,82320,83400,"Cep"], [ 3510, 0, 8760,"Cas"], [ 3480,69900,71160,"Dra"], [ 3450, 6120, 6870,"Cas"], [ 3420, 8760,11160,"Cas"], [ 3420,11160,11400,"Cam"], [ 3375,80340,82320,"Cep"], [ 3360,18000,21960,"Cam"], [ 3330,50520,51900,"UMa"], [ 3330,51900,69900,"Dra"], [ 3300,11400,12000,"Cam"], [ 3300,79680,80340,"Cep"], [ 3290,74160,79080,"Cep"], [ 3240, 0, 6120,"Cas"], [ 3240,21960,23400,"Lyn"], [ 3180,43500,48600,"UMa"], [ 3180,54900,56700,"Dra"], [ 3165,79080,79680,"Cep"], [ 3150,12000,18000,"Cam"], [ 3150,82320,84000,"Cas"], [ 3090,56700,61200,"Dra"], [ 3030, 7350, 9060,"Per"], [ 3030,61200,65640,"Dra"], [ 3000, 0, 4920,"Cas"], [ 3000, 4920, 6000,"Per"], [ 3000,23400,24480,"Lyn"], [ 3000,84000,86400,"Cas"], [ 2910,48600,50520,"UMa"], [ 2880, 0, 4020,"Cas"], [ 2880,84900,86400,"Cas"], [ 2850,65430,65640,"Her"], [ 2850,65640,68700,"Dra"], [ 2850,68700,69000,"Cyg"], [ 2820, 6000, 7350,"Per"], [ 2820,30300,33000,"UMa"], [ 2760, 600, 3120,"Cas"], [ 2700,43200,43500,"UMa"], [ 2670,24480,26520,"Lyn"], [ 2640,78870,79080,"Cyg"], [ 2625,78750,78870,"Cyg"], [ 2610,69000,69840,"Cyg"], [ 2520,33000,36600,"UMa"], [ 2400,36600,38820,"UMa"], [ 2400,55560,56700,"Boo"], [ 2400,56700,58800,"Her"], [ 2385,33300,34500,"Lyn"], [ 2205, 0, 9060,"And"], [ 2205, 9060, 9240,"Per"], [ 2190,69690,69840,"Lyr"], [ 2160,16200,16890,"Per"], [ 2160,78240,78750,"Cyg"], [ 2160,78750,79200,"Lac"], [ 2130,23520,26520,"Aur"], [ 2130,26520,27900,"Lyn"], [ 2100, 0, 7200,"And"], [ 2100,79200,82140,"Lac"], [ 2070,82140,82320,"Lac"], [ 2070,82320,84600,"And"], [ 2040, 9240, 9780,"Per"], [ 2040,38820,39600,"UMa"], [ 2040,43200,44400,"CVn"], [ 2010,27900,33300,"Lyn"], [ 2010,33300,35580,"LMi"], [ 1980, 2580, 5070,"And"], [ 1980,54660,55560,"Boo"], [ 1925,84600,85500,"And"], [ 1920,44400,47700,"CVn"], [ 1880,85500,86400,"And"], [ 1845,50250,50520,"CVn"], [ 1840, 8700, 9780,"Tri"], [ 1840, 9780,16200,"Per"], [ 1800,16200,17100,"Aur"], [ 1800,65430,69690,"Lyr"], [ 1740,39600,43200,"UMa"], [ 1740,70800,75300,"Cyg"], [ 1710,17100,21180,"Aur"], [ 1710,35580,37800,"LMi"], [ 1710,47700,50250,"CVn"], [ 1680, 0, 240,"And"], [ 1680, 5070, 6000,"Tri"], [ 1680,21180,23520,"Aur"], [ 1680,28380,28800,"Gem"], [ 1680,75300,78240,"Cyg"], [ 1650,69330,70800,"Cyg"], [ 1635, 6900, 8700,"Tri"], [ 1620,58200,58800,"CrB"], [ 1560,54300,54660,"Boo"], [ 1560,54660,58200,"CrB"], [ 1560,66120,67920,"Lyr"], [ 1530,38700,39600,"LMi"], [ 1530,67920,69330,"Lyr"], [ 1500, 6000, 6900,"Tri"], [ 1425, 2580, 3060,"Psc"], [ 1410,37800,38700,"LMi"], [ 1410,76500,77100,"Vul"], [ 1370,20520,21180,"Tau"], [ 1320, 240, 510,"And"], [ 1320,57300,57720,"Ser"], [ 1290,21180,22380,"Gem"], [ 1275,71400,72900,"Vul"], [ 1265,67920,69300,"Vul"], [ 1260, 510, 3060,"And"], [ 1230,72900,74040,"Vul"], [ 1200,28110,28380,"Gem"], [ 1170,74040,76500,"Vul"], [ 1150,69300,71400,"Vul"], [ 1140,11820,12120,"Ari"], [ 1110,67920,68400,"Sge"], [ 1080,20520,20760,"Ori"], [ 1050,22380,22710,"Gem"], [ 970,68400,71400,"Sge"], [ 960,17880,19200,"Tau"], [ 960,57300,57900,"Her"], [ 945,71400,72900,"Sge"], [ 930,16620,17880,"Tau"], [ 930,19200,20160,"Tau"], [ 900,46200,48600,"Com"], [ 860,62100,65700,"Her"], [ 840,42720,46200,"Com"], [ 810,27000,28110,"Gem"], [ 770,60300,62100,"Her"], [ 750, 0, 510,"Peg"], [ 750,20160,20760,"Tau"], [ 750,25200,27000,"Gem"], [ 750,76020,76800,"Peg"], [ 720,22710,24960,"Gem"], [ 720,65700,67920,"Her"], [ 710,75150,75780,"Del"], [ 710,75780,76020,"Peg"], [ 660,41460,42720,"Leo"], [ 600,22470,22710,"Ori"], [ 600,24960,25200,"Gem"], [ 600,28110,28530,"Cnc"], [ 600,85800,86400,"Peg"], [ 595, 6000,11820,"Ari"], [ 510,72510,73080,"Del"], [ 480,48600,54300,"Boo"], [ 450,81900,85800,"Peg"], [ 420,28530,33300,"Cnc"], [ 420,33300,38700,"Leo"], [ 375,65700,67184,"Oph"], [ 375,67184,67920,"Aql"], [ 360,75000,75150,"Del"], [ 330,25200,25260,"CMi"], [ 270,65700,66330,"Ser"], [ 240,57900,60300,"Her"], [ 180,65700,66330,"Oph"], [ 165,77280,78000,"Peg"], [ 120, 0, 7200,"Psc"], [ 120,66900,67920,"Ser"], [ 120,73080,75000,"Del"], [ 120,75000,76800,"Equ"], [ 120,76800,77280,"Peg"], [ 120,79200,81900,"Peg"], [ 105,78000,79200,"Peg"], [ 90,25260,25920,"CMi"], [ 0,12900,16620,"Tau"], [ 0,16620,16800,"Ori"], [ 0,25920,29100,"CMi"], [ 0,52800,54300,"Vir"], [ 0,64200,65700,"Oph"], [ -105, 9540,11820,"Cet"], [ -105,11820,12900,"Tau"], [ -195,54300,58560,"Ser"], [ -240,16800,18300,"Ori"], [ -240,21000,22470,"Ori"], [ -240,64200,64680,"Ser"], [ -240,65700,66900,"Ser"], [ -240,66900,67920,"Aql"], [ -240,81900,85800,"Psc"], [ -360,38700,41460,"Leo"], [ -360,41460,42600,"Vir"], [ -420, 0, 1200,"Psc"], [ -420,85800,86400,"Psc"], [ -480,51300,52800,"Vir"], [ -480,57300,58560,"Oph"], [ -540,72000,73920,"Aql"], [ -540,76800,78720,"Aqr"], [ -600,61800,64680,"Oph"], [ -660,21000,29100,"Mon"], [ -660,17700,18300,"Eri"], [ -660,18300,21000,"Ori"], [ -660,29100,30120,"Hya"], [ -660,34500,38700,"Sex"], [ -660,42600,46200,"Vir"], [ -700,63300,63600,"Oph"], [ -722,67920,72000,"Aql"], [ -870,17400,17700,"Eri"], [ -900,73920,76800,"Aqr"], [ -960,61800,65700,"Ser"], [ -960,65700,67920,"Sct"], [-1020,30120,30900,"Hya"], [-1095,58560,58950,"Oph"], [-1140,30900,32700,"Hya"], [-1140,38700,39000,"Crt"], [-1155,58560,58950,"Sco"], [-1200,56400,57300,"Lib"], [-1320,45300,46200,"Crv"], [-1320,46200,51300,"Vir"], [-1440,32700,35100,"Hya"], [-1463, 6000, 9540,"Cet"], [-1463, 9540,13500,"Eri"], [-1470,39000,42600,"Crt"], [-1470,42600,45300,"Crv"], [-1470,51300,53700,"Lib"], [-1475,58560,60300,"Oph"], [-1530, 0, 6000,"Cet"], [-1530,76800,78720,"Cap"], [-1530,78720,85800,"Aqr"], [-1530,85800,86400,"Cet"], [-1590,35100,36900,"Hya"], [-1635,16920,17400,"Eri"], [-1635,17400,22020,"Lep"], [-1680,72000,76800,"Cap"], [-1750,36900,38100,"Hya"], [-1770,45300,53700,"Hya"], [-1770,53700,56400,"Lib"], [-1770,56400,57600,"Sco"], [-1800,16500,16920,"Eri"], [-1800,60300,63360,"Oph"], [-1800,63360,64200,"Sgr"], [-1870,38100,39000,"Hya"], [-1980,22020,26520,"CMa"], [-1980,44100,45300,"Hya"], [-2100,39000,44100,"Hya"], [-2160,12600,13500,"For"], [-2205,30120,33720,"Pyx"], [-2220,15360,16500,"Eri"], [-2220,64200,69000,"Sgr"], [-2220,76800,82800,"PsA"], [-2220,82800,84000,"Scl"], [-2375,10800,12600,"For"], [-2385,33720,39600,"Ant"], [-2400, 0, 6000,"Scl"], [-2400, 6000,10800,"For"], [-2400,13920,15360,"Eri"], [-2400,84000,86400,"Scl"], [-2520,51000,53700,"Cen"], [-2520,56400,57600,"Lup"], [-2520,57600,59115,"Sco"], [-2580,17400,18000,"Cae"], [-2580,18000,23700,"Col"], [-2580,28800,30120,"Pup"], [-2640,12300,13920,"Eri"], [-2730,59115,64200,"Sco"], [-2730,64200,69000,"CrA"], [-2730,69000,73200,"Sgr"], [-2730,73200,76800,"Mic"], [-2760,10800,12300,"Eri"], [-2790,16200,17400,"Cae"], [-2880,55200,56400,"Lup"], [-2890, 0, 8400,"Phe"], [-2940, 9600,10800,"Eri"], [-2940,14700,15360,"Hor"], [-2940,15360,16200,"Cae"], [-3000,76800,79200,"Gru"], [-3045,21600,28800,"Pup"], [-3045,28800,29400,"Vel"], [-3060, 8700, 9600,"Eri"], [-3060,13800,14700,"Hor"], [-3090, 0, 6600,"Phe"], [-3150,21600,22200,"Car"], [-3180,29400,30420,"Vel"], [-3190,12600,13800,"Hor"], [-3190,13800,14400,"Dor"], [-3210, 0, 5700,"Phe"], [-3240, 7800, 8700,"Eri"], [-3240,16200,18000,"Pic"], [-3240,54180,55200,"Lup"], [-3270,30420,31800,"Vel"], [-3300,22200,23400,"Car"], [-3300,42600,46200,"Cen"], [-3300,51000,54180,"Lup"], [-3300,54180,55200,"Nor"], [-3390,14400,15600,"Dor"], [-3390,31800,39600,"Vel"], [-3390,39600,40500,"Cen"], [-3420,63000,64800,"Ara"], [-3420,64800,73200,"Tel"], [-3420,79200,84000,"Gru"], [-3450,11520,12600,"Hor"], [-3450,18000,19800,"Pic"], [-3480,23400,24600,"Car"], [-3510, 0, 4800,"Phe"], [-3510, 4800, 7800,"Eri"], [-3510,84000,86400,"Phe"], [-3540,15600,16500,"Dor"], [-3600,55200,59115,"Nor"], [-3600,73200,76800,"Ind"], [-3660,19800,21600,"Pic"], [-3660,54600,55200,"Cir"], [-3660,59115,59700,"Ara"], [-3815,53700,54600,"Cir"], [-3815,59700,60300,"Ara"], [-3840,21600,24600,"Pic"], [-3840,24600,32520,"Car"], [-3840,40500,42600,"Cen"], [-3840,42600,46200,"Cru"], [-3840,46200,52320,"Cen"], [-3900,48600,49200,"Cir"], [-3900,60300,60600,"Ara"], [-4050, 7800,11520,"Hor"], [-4050,11520,16500,"Ret"], [-4050,53100,53700,"Cir"], [-4050,60600,63000,"Ara"], [-4050,63000,64800,"Pav"], [-4050,79200,84000,"Tuc"], [-4200,16500,23700,"Dor"], [-4200,49200,53100,"Cir"], [-4200,53100,61200,"TrA"], [-4500, 0, 4800,"Tuc"], [-4500,12600,16500,"Hyi"], [-4500,23700,32520,"Vol"], [-4500,32520,40500,"Car"], [-4500,40500,49200,"Mus"], [-4500,64800,76800,"Pav"], [-4500,76800,84000,"Ind"], [-4500,84000,86400,"Tuc"], [-4560, 2700, 4800,"Tuc"], [-4950, 0,12600,"Hyi"], [-4950,27600,49200,"Cha"], [-4950,49200,64800,"Aps"], [-5100,12600,27600,"Men"]]; ######################################################################## ModuleLoad() end module: