//
// Name: Objetos del libro "Guía del Firmamento"
// License: Public Domain
// Author: elinformatico
// Description: Un recorrido por los objetos celestes
// del libro "Guía del Firmamento" de Jose Luis Comellas
// Requiere "comellas.inc"
// Base de datos de objetos por Patricio Leiva
//
//
// ---------------------------------------------------
var SLEW = 3; // velocidad del slew en segundos
var FOV = 3; // FOV (Field of view) en grados
var cx = 20; // posicion horizontal del texto informativo
var cy = 20; // posicion vertical del texto informativo
var ml = true // mostrar lineas de constelaciones (true/false)
// ----------------------------------------------------
include("comellas.inc");
var cons = new Array("Osa Menor + Dragón + Cefeo + Jirafa","Osa Mayor + Perros de caza","Dragón + Cefeo","Cassiopeia",
"Jirafa + Lince","León + Sextante","Virgo + Cabellera de Berenice","Hydra + Brújula + Cuervo + Centauro",
"Libra + Lupus","Boyero + Corona Borealis","Hércules","Serpiente + Ofiuco","Escorpión + Ofiuco",
"Sagitario + Scutum + Corona Australis","Águila + Sagitta + Delphinus + Equuleus","Lira + Cisne + Zorrilla",
"Capricornio + Acuario + Peces","Pez Austral + Escultor + Microscopio","Pegaso",
"Lagarto + Andrómeda + Triángulo","Aries + Peces","Ballena","Eridanus + Horno","Perseo","Auriga","Tauro",
"Géminis + Cáncer","Orión + Liebre + Columba","Can Mayor + Can Menor","Unicornio + Orión","Puppis");
var cone = new Array("Ursa Minor","Ursa Major","Draco","Cassiopeia","Camelopardalis",
"Leo","Virgo","Hydra","Libra","Bootes",
"Hercules","Serpens","Scorpius","Sagittarius","Aquila","Lyra",
"Capricornus","Piscis Austrinus","Pegasus","Lacerta","Aries","Cetus","Eridanus",
"Perseus","Auriga","Taurus","Gemini","Orion","Canis Major","Monoceros","Puppis",
"Cefeo","Perros de caza","Lince","Sextante","Cabellera de Berenice","Brújula",
"Cuervo","Centauro","Lupus","Corona Borealis","Ofiuco","Escudo","Corona Australis",
"Sagitta","Delphinus","Equuleus","Cisne","Zorrilla","Acuario","Peces","Escultor",
"Microscopio","Andrómeda","Triángulo","Horno","Cáncer","Liebre","Columba","Can Menor","Copa","Leon Menor");
var conr= new Array(
"UMi","UMa","Dra","Cas","Cam","Leo","Vir","Hya","Lib",
"Boo","Her","Ser","Sco","Sgr","Aql","Lyr","Cap","PsA",
"Peg","Lac","Ari","Cet","Eri","Per","Aur","Tau","Gem",
"Ori","CMa","Mon","Pup","Cep","CVn","Lyn","Sex","Com",
"Pyx","Crv","Cen","Lup","CrB","Oph","Sct","CrA","Sgt",
"Del","Equ","Cyg","Vul","Aqr","Psc","Scl","Mic","And",
"Tri","For","Can","Lep","Col","CMi","Crt","LMi");
var ssn= new Array("Circumpolar","Primavera","Verano","Otoño","Invierno");
var ssm = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4)
// indice
var conz = new Array(7,335,863,1311,1703,1967,2383,3095,3503,3655,
3935,4159,4535,5031,5615,6103,6863,7271,7367,7639,8079,8287,8759,8951,
9375,9711,10119,10647,11479,11879,12311,12679);
var mnt = core.getMountMode(); // obtener montura utilizada
var lin = ConstellationMgr.getFlagLines(); // obtener config. usuario lineas constelaciones
var le = 0;
core.selectObjectByName(cone[le],true);
Menu();
function Menu(){
core.setRealTime();
StelMovementMgr.zoomTo(60,SLEW); // FOV inicial 60
core.clear("natural");
LandscapeMgr.setFlagCardinalsPoints(true);
StarMgr.setFlagStars(true);
StarMgr.setFlagLabels(true);
NebulaMgr.setFlagHints(false);
ConstellationMgr.setFlagLines(ml);
ConstellationMgr.setFlagBoundaries(false);
ConstellationMgr.setFlagIsolateSelected(false);
ConstellationMgr.setFlagArt(false);
ConstellationMgr.setFlagLabels(false);
LabelMgr.deleteAllLabels();
StelMovementMgr.setFlagTracking(true);
core.setTimeRate(0);
var opx = LabelMgr.labelScreen("Para elegir constelación pulse +,=,M. Para seleccionarla pulse B",12,28,false,18,"#FF0000");
LabelMgr.setLabelShow(opx, true);
var opy = LabelMgr.labelScreen("by elinformatico",12,115,false,14,"#FF0000");
LabelMgr.setLabelShow(opy, true);
ConstellationMgr.setFlagLabels(true);
var rp = ssm[le];
var optg = LabelMgr.labelScreen(ssn[rp],10,50,false,18,"#FF0000");
LabelMgr.setLabelShow(optg, true);
// lista de constelaciones
var opt = LabelMgr.labelScreen(cons[le] + " (" + (conz[le+1]-conz[le])/8+ " objetos)" + " Pagina: " + objetos[conz[le]],160,50,false,18,"#009900");
LabelMgr.setLabelShow(opt, true);
if (le<=29){
var opt1 = LabelMgr.labelScreen(cons[le+1] + " (" + (conz[le+2]-conz[le+1])/8+ " objetos)" + " Pagina: " + objetos[conz[le+1]],160,72,false,18,"#990000");
LabelMgr.setLabelShow(opt1, true);
}
if (le<=28){
var opt2 = LabelMgr.labelScreen(cons[le+2] + " (" + (conz[le+3]-conz[le+2])/8+ " objetos)" + " Pagina: " + objetos[conz[le+2]],160,94,false,18,"#660000");
LabelMgr.setLabelShow(opt2, true);
}
if (le==29)
{
var opt2 = LabelMgr.labelScreen(cons[le-29] + " (" + (conz[le-28]-conz[le-29])/8+ " objetos)" + " Pagina: " + objetos[conz[le-29]],160,94,false,18,"#660000");
LabelMgr.setLabelShow(opt2, true);
}
if (le==30)
{
var opt1 = LabelMgr.labelScreen(cons[0] + " (" + (conz[1]-conz[0])/8+ " objetos)" + " Pagina: " + objetos[conz[0]],160,72,false,18,"#990000");
LabelMgr.setLabelShow(opt1, true);
var opt2 = LabelMgr.labelScreen(cons[1] + " (" + (conz[2]-conz[1])/8+ " objetos)" + " Pagina: " + objetos[conz[1]],160,94,false,18,"#660000");
LabelMgr.setLabelShow(opt2, true);
}
var rp1=0;
// bucle del menú
d = Math.floor(core.getJDay());
var r = d;
t = ConstellationMgr.getFlagBoundaries();
while (t==false)
{
r = Math.floor(core.getJDay());
if (Math.abs(r-d) > 0)
{
LabelMgr.setLabelShow(opt, false);
LabelMgr.setLabelShow(opt1, false);
LabelMgr.setLabelShow(opt2, false);
if (le==30)
{
le = 0;
}else{
le = le + 1;
}
rp = ssm[le];
if (rp!=rp1)
{
LabelMgr.setLabelShow(optg, false);
var optg = LabelMgr.labelScreen(ssn[rp],10,50,false,18,"#FF0000");
LabelMgr.setLabelShow(optg, true);
rp1=rp;
}
var opt = LabelMgr.labelScreen(cons[le] + " (" + (conz[le+1]-conz[le])/8+ " objetos)" + " Pagina: " + objetos[conz[le]],160,50,false,18,"#009900");
LabelMgr.setLabelShow(opt, true);
if (le<=29)
{
var opt1 = LabelMgr.labelScreen(cons[le+1] + " (" + (conz[le+2]-conz[le+1])/8+ " objetos)" + " Pagina: " + objetos[conz[le+1]],160,72,false,18,"#990000");
LabelMgr.setLabelShow(opt1, true);
}
if (le<=28)
{
var opt2 = LabelMgr.labelScreen(cons[le+2] + " (" + (conz[le+3]-conz[le+2])/8+ " objetos)" + " Pagina: " + objetos[conz[le+2]],160,94,false,18,"#660000");
LabelMgr.setLabelShow(opt2, true);
}
if (le==29)
{
var opt2 = LabelMgr.labelScreen(cons[le-29] + " (" + (conz[le-28]-conz[le-29])/8+ " objetos)" + " Pagina: " + objetos[conz[le-29]],160,94,false,18,"#660000");
LabelMgr.setLabelShow(opt2, true);
}
if (le==30)
{
var opt1 = LabelMgr.labelScreen(cons[0] + " (" + (conz[1]-conz[0])/8+ " objetos)" + " Pagina: " + objetos[conz[0]],160,72,false,18,"#990000");
LabelMgr.setLabelShow(opt1, true);
var opt2 = LabelMgr.labelScreen(cons[1] + " (" + (conz[2]-conz[1])/8+ " objetos)" + " Pagina: " + objetos[conz[1]],160,94,false,18,"#660000");
LabelMgr.setLabelShow(opt2, true);
}
core.setDate("-1 days");
core.selectObjectByName(cone[le]);
StelMovementMgr.setFlagTracking(true);
}
t = ConstellationMgr.getFlagBoundaries();
}
// cielo profundo
LabelMgr.deleteAllLabels();
ConstellationMgr.setFlagBoundaries(false);
core.selectObjectByName(cone[le],true);
StelMovementMgr.setFlagTracking(true);
ConstellationMgr.setFlagLabels(false);
LandscapeMgr.setFlagLandscape(false);
ConstellationMgr.setFlagLines(ml);
StarMgr.setFlagLabels(true);
StarMgr.setFlagStars(true);
NebulaMgr.setFlagHints(true);
NebulaMgr.setFlagShow(true);
LandscapeMgr.setFlagAtmosphere(false);
LandscapeMgr.setFlagFog(false);
LandscapeMgr.setFlagCardinalsPoints(false);
var flg = 0;
var i=conz[le];
// obtener datos
Co = objetos[i-7];
Ra = objetos[i-6];
Dec= objetos[i-5];
Info1 = objetos[i-4];
Info2 = objetos[i-3];
Info3 = objetos[i-2];
Info4 = objetos[i-1];
Pag = objetos[i];
Co2 = objetos[i+1];
Ra2 = objetos[i+2];
Dec2 = objetos [i+3];
Info2_1 = objetos[i+4];
Info2_2 = objetos [i+5];
Info2_3 = objetos [i+6];
Info2_4 = objetos [i+7];
Pag2 = objetos[i+8];
if (Co2 != Co)
{
flg=1;
}
// mover y centrar objeto
core.moveToRaDecJ2000(Ra,Dec);
StelMovementMgr.zoomTo(FOV,SLEW);
// mostrar datos del objeto
var label = LabelMgr.labelScreen(Info1 + " " + Info2 + " - " + Info3 + " " + Info4 + " - " + Co + " - Página " + Pag,cx,cy-5,false,18,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Ra: " + Ra,cx,cy + 20,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Dec: " + Dec,cx,cy + 40,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Siguiente: " + Info2_1 + " " + Info2_2 + " - " + Info2_3 + " " + Info2_4 + " - " + Co2 + " - Pagina " + Pag2,cx,cy + 56,false,18,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Ra: " + Ra2,cx,cy + 84,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Dec: " + Dec2,cx,cy + 104,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Siguiente: +,=,M. Otra constelacion: B. Salir: N",cx,cy+120,false,17,"#990000");
LabelMgr.setLabelShow(label, true);
i = i + 8;
var la = (((conz[le+1]-conz[le])/8) - ((conz[le+1]-i)/8));
var lb = (conz[le+1]-conz[le])/8;
var label = LabelMgr.labelScreen("Objeto " + la + " de " + lb,cx,cy+140,false,17,"#990000");
LabelMgr.setLabelShow(label, true);
// bucle cielo profundo
var le2 = le;
var d = Math.floor(core.getJDay());
var r = d;
while (i <= 12679){ // ultimo objeto
b = ConstellationMgr.getFlagBoundaries();
if (b==true)
{
ConstellationMgr.setFlagLines(false);
Menu(le); //enviar indice constelacion actual
}
n = NebulaMgr.getFlagHints();
if (n==false)
{
Stop();
}
r = Math.floor(core.getJDay());
if (Math.abs(r-d) > 0)
{
core.setDate("-1 days");
LabelMgr.deleteAllLabels();
Co = objetos[i-7];
Ra = objetos[i-6];
Dec= objetos[i-5];
Info1 = objetos[i-4];
Info2 = objetos[i-3];
Info3 = objetos[i-2];
Info4 = objetos[i-1];
Pag = objetos[i];
if(i < 12671) // no buscar siguiente info si es el último objeto
{
Co2 = objetos[i+1];
Ra2 = objetos[i+2];
Dec2 = objetos [i+3];
Info2_1 = objetos[i+4];
Info2_2 = objetos [i+5];
Info2_3 = objetos [i+6];
Info2_4 = objetos [i+7];
Pag2 = objetos [i+8];
}
// ir al objeto
core.moveToRaDecJ2000(Ra,Dec,SLEW);
// indicar cambio de grupo de constelacion
if (le>le2)
{
if (le==31)
{
le = 0;
}else{
if (le==5 || le==10 || le==16 || le==23)
{
rp=ssm[le];
var labela = LabelMgr.labelScreen("Constelaciones de " + ssn[rp],430,260,false,20,"#FF0000");
LabelMgr.setLabelShow(labela,true);
}
var labelb = LabelMgr.labelScreen("- " + cons[le] + " -",430,280,false,18,"#FF0000");
LabelMgr.setLabelShow(labelb,true);
le2=le;
core.wait(3);
LabelMgr.setLabelShow(labela,false);
LabelMgr.setLabelShow(labelb,false);
}
}
//indicar objeto fuera del grupo
if (flg==1)
{
for (m=0;m<=61;m++)
{
if(conr[m]==Co)
{
var st=cone[m];
var labelb = LabelMgr.labelScreen("Entrando en " + st,430,300,false,18,"#FF0000");
LabelMgr.setLabelShow(labelb,true);
core.wait(2);
LabelMgr.setLabelShow(labelb,false);
}
}
flg=0;
}
if (Co2 != Co)
{
flg=1;
}
var inf = LabelMgr.labelScreen(Info1 + " " + Info2 + " - " + Info3 + " " + Info4 +" - "+ Co + " - Página " + Pag,cx,cy-5,false,18,"#FF0000");
LabelMgr.setLabelShow(inf, true);
var label = LabelMgr.labelScreen("Ra: " + Ra,cx,cy+20,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Dec: " + Dec,cx,cy+40,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
if(i < 12671) // no mostrar siguiente info si es el último objeto
{
var label = LabelMgr.labelScreen("Siguiente: " + Info2_1 + " " + Info2_2 + " - " + Info2_3 + " " + Info2_4 + " - " + Co2 + " -Pagina " + Pag2,cx,cy + 56,false,18,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Ra: " + Ra2,cx,cy + 80,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Dec: " + Dec2,cx,cy + 100,false,14,"#FF0000");
LabelMgr.setLabelShow(label, true);
var label = LabelMgr.labelScreen("Siguiente: +,=,M. Otra constelacion: B. Salir: N",cx,cy+120,false,17,"#990000");
LabelMgr.setLabelShow(label, true);
}
i = i + 8;
la = (((conz[le+1]-conz[le])/8) - ((conz[le+1] -i)/8));
lb = (conz[le+1]-conz[le])/8;
var label = LabelMgr.labelScreen("Objeto " + la + " de " + lb,cx,cy+140,false,17,"#990000");
LabelMgr.setLabelShow(label, true);
if(la == lb )
{
le = le + 1;
}
}
}
le=0;
core.selectObjectByName(cone[le],true);
Menu();
}
function Stop()
{
core.setRealTime(); // restaurar hora
core.setTimeRate(1); // restaurar velocidad del tiempo
core.clear("natural");
LandscapeMgr.setFlagCardinalsPoints(true); // restaurar puntos cardinales
core.setMountMode(mnt); // restaurar montura utilizada
ConstellationMgr.setFlagLines(lin); //restaurar lineas constelaciones
StelMovementMgr.zoomTo(60); // restaurar zoom
StarMgr.setFlagStars(true);
StarMgr.setFlagLabels(true);
var label = LabelMgr.labelScreen("SCRIPT FINALIZADO",400,350,false,20,"#990000");
LabelMgr.setLabelShow(label, true);
core.goHome();
core.wait(3);
core.exit();
}