mirror of https://github.com/espruino/BangleApps
planetarium
parent
8c0c0b5a53
commit
bd882648f5
|
@ -2684,7 +2684,7 @@
|
||||||
"tags": "",
|
"tags": "",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"planetarium.app.js","url":"planetarium.app.js"},
|
{"name":"planetarium.app.js","url":"planetarium.app.js"},
|
||||||
{"name":"planetarium.app.csv","url":"planetarium.app.csv"},
|
{"name":"planetarium.data.csv","url":"planetarium.data.csv"},
|
||||||
{"name":"planetarium.img","url":"planetarium-icon.js","evaluate":true}
|
{"name":"planetarium.img","url":"planetarium-icon.js","evaluate":true}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,164 +1,170 @@
|
||||||
var counter;
|
/*
|
||||||
var counterInterval;
|
* Degrees to radians
|
||||||
|
*/
|
||||||
|
function toRadians(degrees)
|
||||||
|
{
|
||||||
|
return Math.PI * degrees / 180;
|
||||||
|
}
|
||||||
|
|
||||||
var settings;
|
/*
|
||||||
|
* Julian day number
|
||||||
|
* Assumes a proleptic gregorian calendar where the year 1 is preceded by the
|
||||||
|
* year 0.
|
||||||
|
*/
|
||||||
|
function toJulianDay(year, month, day, hours, minutes, seconds)
|
||||||
|
{
|
||||||
|
day += hours / 24 + minutes / 1440 + seconds / 86400;
|
||||||
|
|
||||||
var work=false; //true if training false if resting
|
if(month <= 2)
|
||||||
var prep=true; //true if we are in prep phase (at the beginning of the session
|
{
|
||||||
var setNum;
|
year -= 1;
|
||||||
|
month += 12;
|
||||||
|
}
|
||||||
|
|
||||||
var paused;
|
var A = Math.floor(year / 100);
|
||||||
|
var B = 2 - A + Math.floor(A / 4);
|
||||||
|
return Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + B - 1524.5;
|
||||||
|
}
|
||||||
|
|
||||||
function endPart() {
|
/*
|
||||||
|
* Sidereal time in Greenwich
|
||||||
|
*/
|
||||||
|
function siderealTime(julianDay)
|
||||||
|
{
|
||||||
|
var T = (julianDay - 2451545.0) / 36525;
|
||||||
|
return toRadians(280.46061837 + 360.98564736629 * (julianDay - 2451545.0) + 0.000387933 * T * T - T * T * T / 38710000);
|
||||||
|
}
|
||||||
|
|
||||||
|
function binary_search(a, value) {
|
||||||
|
var lo = 0, hi = a.length - 1, mid;
|
||||||
|
while (lo <= hi) {
|
||||||
|
mid = Math.floor((lo+hi)/2);
|
||||||
|
if (a[mid] > value)
|
||||||
|
hi = mid - 1;
|
||||||
|
else if (a[mid] < value)
|
||||||
|
lo = mid + 1;
|
||||||
|
else
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawStars(lat,lon){
|
||||||
|
var longitude = toRadians(-lon);
|
||||||
|
var latitude = toRadians(lat);
|
||||||
|
|
||||||
|
date = new Date();
|
||||||
|
|
||||||
|
var julianDay = toJulianDay(date.getFullYear(), date.getMonth()+1,date.getDate(),
|
||||||
|
date.getHours() + date.getTimezoneOffset() / 60,
|
||||||
|
date.getMinutes(), date.getSeconds());
|
||||||
|
var size = 240;
|
||||||
|
|
||||||
|
storage = require('Storage');
|
||||||
|
f=storage.read("planetarium.csv","r");
|
||||||
|
linestart=0;
|
||||||
g.clear();
|
g.clear();
|
||||||
if (prep){
|
|
||||||
prep=false;
|
|
||||||
work = true;
|
|
||||||
counter = settings.workseg+settings.workmin*60;
|
|
||||||
startCounter();
|
|
||||||
}else if (work){
|
|
||||||
work = false;
|
|
||||||
counter = settings.restseg+settings.restmin*60;
|
|
||||||
startCounter();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (setNum>1)
|
|
||||||
{
|
|
||||||
setNum--;
|
|
||||||
work = true;
|
|
||||||
counter = settings.workseg+settings.workmin*60;
|
|
||||||
startCounter();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//End session
|
|
||||||
setWatch(showMenu, BTN2);
|
|
||||||
E.showMessage("Press BTN2 for\ngoing back\nto the menu","Well done!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function printCounter(counter){
|
//Common calculations based only on time
|
||||||
g.setFontAlign(0,0); // center font
|
var t = (julianDay - 2451545.0) / 36525;
|
||||||
g.setFont("Vector",80); // vector font, 80px
|
var zeta = toRadians((2306.2181 * t + 0.30188 * t * t + 0.017998 * t * t * t) / 3600);
|
||||||
// draw the current counter value
|
var theta = toRadians((2004.3109 * t - 0.42665 * t * t - 0.041833 * t * t * t) / 3600);
|
||||||
let minutes = Math.floor(counter/60);
|
var z = toRadians((2306.2181 * t + 1.09468 * t * t + 0.018203 * t * t * t) / 3600);
|
||||||
let segs = counter % 60;
|
|
||||||
let textMinutes = minutes.toString().padStart(2, "0");
|
|
||||||
let textSegs = segs.toString().padStart(2,"0");
|
let starNumber = 0;
|
||||||
g.clearRect(0,80,239,160);
|
//Each star has a number (the position on the file (line number)). These are the lines
|
||||||
g.setFont("Vector",30);
|
//joining each star in the constellations.
|
||||||
if (prep)
|
constelation_lines=[/*Orion*/[7,68],[10,53],[53,56],[28,68],/*Taurus*/[13,172],[13,340],[293,340],[29,293],
|
||||||
g.setColor(125,125,0);
|
/*canis menor*/[155,8]];
|
||||||
else if (work)
|
var starPositions = {};
|
||||||
g.setColor(255,0,0);
|
|
||||||
else
|
for (i=0;i<f.length;i++)
|
||||||
|
{
|
||||||
|
if (f[i]=='\n'){
|
||||||
|
var start = new Date().getTime();
|
||||||
|
starNumber++;
|
||||||
|
//console.log("Line from "+linestart.toString()+"to "+(i-1).toString());
|
||||||
|
line = f.substr(linestart,i-linestart);
|
||||||
|
//console.log(line);
|
||||||
|
linestart = i+1;
|
||||||
|
//Process the star
|
||||||
|
starInfo = line.split(',');
|
||||||
|
//console.log(starInfo[0]);
|
||||||
|
starRA = parseFloat(starInfo[0]);
|
||||||
|
starDE = parseFloat(starInfo[1]);
|
||||||
|
starMag = parseFloat(starInfo[2]);
|
||||||
|
//var start = new Date().getTime();
|
||||||
|
var dec = Math.asin(Math.sin(theta) * Math.cos(starDE) * Math.cos(starRA + zeta) + Math.cos(theta) * Math.sin(starDE));
|
||||||
|
var ascen = Math.atan2(Math.cos(starDE) * Math.sin(starRA + zeta), Math.cos(theta) * Math.cos(starDE) * Math.cos(starRA + zeta) - Math.sin(theta) * Math.sin(starDE)) + z;
|
||||||
|
var H = siderealTime(julianDay) - longitude - ascen;
|
||||||
|
//var end = new Date().getTime();
|
||||||
|
//console.log("Call to doSomething took " + (end - start) + " milliseconds.");
|
||||||
|
//Compute altitude
|
||||||
|
var alt = Math.asin(Math.sin(latitude) * Math.sin(dec) + Math.cos(latitude) * Math.cos(dec) * Math.cos(H));
|
||||||
|
if(alt >= 0)
|
||||||
|
{
|
||||||
|
//Compute azimuth
|
||||||
|
var azi = Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(latitude) - Math.tan(dec) * Math.cos(latitude));
|
||||||
|
var x = size / 2 + size / 2 * Math.cos(alt) * Math.sin(azi);
|
||||||
|
var y = size / 2 + size / 2 * Math.cos(alt) * Math.cos(azi);
|
||||||
|
starPositions[starNumber] = [x,y];
|
||||||
|
var magnitude = starMag<1.5?2:1;
|
||||||
|
g.fillCircle(x, y, magnitude);
|
||||||
|
if (starMag<1)
|
||||||
|
g.drawString(starInfo[3],x,y+2);
|
||||||
|
g.flip();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0;i<constelation_lines.length;i++)
|
||||||
|
{
|
||||||
|
constelation = constelation_lines[i];
|
||||||
|
positionStar1=starPositions[constelation[0]];
|
||||||
|
positionStar2=starPositions[constelation[1]];
|
||||||
|
//Both stars need to be visible
|
||||||
g.setColor(0,255,0);
|
g.setColor(0,255,0);
|
||||||
g.drawString(setNum,120,50);
|
if (positionStar1 && positionStar2)
|
||||||
if (prep)
|
g.drawLine(positionStar1[0],positionStar1[1],positionStar2[0],positionStar2[1]);
|
||||||
g.drawString("PREPARATION",120,190);
|
g.flip();
|
||||||
else if (work)
|
|
||||||
g.drawString("WORK",120,190);
|
|
||||||
else
|
|
||||||
g.drawString("REST",120,190);
|
|
||||||
g.setFont("Vector",10);
|
|
||||||
g.drawString("Touch to pause",120,215);
|
|
||||||
g.setFont("Vector",80);
|
|
||||||
g.drawString(textMinutes+":"+textSegs,120,120);
|
|
||||||
}
|
|
||||||
|
|
||||||
function signal_to_user(le){
|
|
||||||
if (settings.buzz)
|
|
||||||
Bangle.buzz(le);
|
|
||||||
else
|
|
||||||
Bangle.beep(le,4000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function countDown() {
|
|
||||||
counter--;
|
|
||||||
if (counter<4 && counter>0)
|
|
||||||
signal_to_user(200);
|
|
||||||
if (counter==0)
|
|
||||||
signal_to_user(600);
|
|
||||||
|
|
||||||
if (counter<0) {
|
|
||||||
clearInterval(counterInterval);
|
|
||||||
counterInterval = undefined;
|
|
||||||
endPart();
|
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
printCounter(counter);
|
Bangle.setGPSPower(1);
|
||||||
|
|
||||||
|
var gps = { fix : 0};
|
||||||
|
var gpsCount = 0;
|
||||||
|
var prevSats = 0;
|
||||||
|
g.clear();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
g.setFontAlign(0,0);
|
||||||
|
|
||||||
|
Bangle.on('GPS',function(gp) {
|
||||||
|
gps = gp;
|
||||||
|
gpsCount++;
|
||||||
|
var msg;
|
||||||
|
if (gp.fix) {
|
||||||
|
lat = gp.lat;
|
||||||
|
lon = gp.lon;
|
||||||
|
Bangle.setGPSPower(0);
|
||||||
|
drawStars(lat,lon);
|
||||||
|
} else {
|
||||||
|
g.setFont("Vector",20);
|
||||||
|
g.drawString("Waiting for position",120,120);
|
||||||
|
g.setFont("Vector",15);
|
||||||
|
if (gp.satellites>prevSats || prevSats===0){
|
||||||
|
prevSats = gp.satellites;
|
||||||
|
g.clearRect(0,150,240,180);
|
||||||
|
g.drawString("Got "+gp.satellites+" satellites",120,160);
|
||||||
}
|
}
|
||||||
g.flip();
|
g.flip();
|
||||||
}
|
|
||||||
|
|
||||||
function startCounter(){
|
|
||||||
if (!counterInterval)
|
|
||||||
counterInterval = setInterval(countDown, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function pause()
|
|
||||||
{
|
|
||||||
if (!paused)
|
|
||||||
{
|
|
||||||
clearInterval(counterInterval);
|
|
||||||
counterInterval = undefined;
|
|
||||||
setWatch(resume,BTN4);
|
|
||||||
setWatch(resume,BTN5);
|
|
||||||
paused=true;
|
|
||||||
g.clear();
|
|
||||||
g.setFont("Vector",60);
|
|
||||||
g.drawString("PAUSED",120,120);
|
|
||||||
g.setFont("Vector",20);
|
|
||||||
g.drawString("Touch to continue",120,180);
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
function resume(){
|
|
||||||
if (paused)
|
|
||||||
{
|
|
||||||
g.clear();
|
|
||||||
counterInterval = setInterval(countDown, 1000);
|
|
||||||
setWatch(pause,BTN4);
|
|
||||||
setWatch(pause,BTN5);
|
|
||||||
paused=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function startSession() {
|
|
||||||
E.showMenu();
|
|
||||||
paused=false;
|
|
||||||
setWatch(pause,BTN4);
|
|
||||||
setWatch(pause,BTN5);
|
|
||||||
require('Storage').write('intervals.settings.json',settings);
|
|
||||||
setNum = settings.sets;
|
|
||||||
counter = 5;//prep time
|
|
||||||
prep=true;
|
|
||||||
work=false;
|
|
||||||
startCounter();
|
|
||||||
}
|
|
||||||
|
|
||||||
function showMenu()
|
|
||||||
{
|
|
||||||
settings = require('Storage').readJSON('intervals.settings.json',1)||
|
|
||||||
{ sets:1,workseg:10,workmin:0,restseg:5,restmin:0,buzz:true};
|
|
||||||
|
|
||||||
var mainmenu = {
|
|
||||||
"" : { "title" : "-- Main Menu --" },
|
|
||||||
"START" : function() { startSession(); },
|
|
||||||
"Sets" : { value : settings.sets,min:0,max:20,step:1,onchange : v => { settings.sets=v; } },
|
|
||||||
"Work minutes" : { value : settings.workmin,min:0,max:59,step:1,onchange : v => { settings.workmin=v; } },
|
|
||||||
"Work seconds" : { value : settings.workseg,min:0,max:59,step:5,onchange : v => { settings.workseg=v; } },
|
|
||||||
"Rest minutes" : { value : settings.restmin,min:0,max:59,step:1,onchange : v => { settings.restmin=v; } },
|
|
||||||
"Rest seconds" : { value : settings.restseg,min:0,max:59,step:5,onchange : v => { settings.restseg=v; } },
|
|
||||||
"Signal type" : { value : settings.buzz,format : v => v?"Buzz":"Beep",onchange : v => { settings.buzz=v; }}
|
|
||||||
};
|
|
||||||
|
|
||||||
E.showMenu(mainmenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
showMenu();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
require("heatshrink").decompress(atob("mEwwg96xAWVhGIwAuWGCoXrCIZfFDZkJyAKTAAOZBaojEzIADGBoOChITEAgIUCGBAhCCwIlFA4YwIhIjCDQYtDAoIMBQhgUCzJMDR5xYGFwSPMHwYRED4KPMCQcIxKtHWApoCEYczmYXCPgYAEGgZGCAgMDC4pEGA4gVBGwIWCF6GqhWgC4kqBYYAGGgegC4QWCC4kKI4oQBC4guEC4wJDC4gtBGoIXDmWqBoQMBBQUwIAQXJKopSDJooXGmQRBBwYLBFgR2EC4QAEC4RIDToRQDC56pESYhHDAAYFBA4YvMD4oOEL5bMGaJIQFC5ZiEAoxRCC5I1KJoIXVBYJ4FEYgAGPAwwHSYIAGJAwwHEA5+HB5AvMZI4XKBwu72ELAQIHCAoQCBchQMCAQIADDgIfEDBYRBAAI5DCxYUDAxYYMAAgWPDIoVSAFAA=="))
|
require("heatshrink").decompress(atob("AEGIAAgVPhAWFAAOACyoYNCxQYMCxZjKFxgwKB42ClAwNFw+O9AwNH48u8RhMLpHu9xhMLg0ipwXBokiMQwXKCoIADC5JGHlwWDMI5ICC44wEVI4XCZxBfC8jzKBRAuCC66oIC4K9IwPuoUk90YYJAXIwVCSYR3HC5WBAgYvPCggAFDQoXGwhAIwVIC5cuBoohDeQoXGpwNFEIbDFC4uCaJL1BKQgXDiVEdQdCB4WCYIIACokhC4uEBgYABC4YJII4kuBgZhEBJAXEEwi3EBIhgDwEABwYuHGAoHDgAXDwIXJRwIXKHoaoGC4ZHDC4JgCC4MoUAIXF91CBgReDC4iwCkh3EwNCZwQXFPAgAPCwQXYYIYAOIwYwTCwgwRFwowRCwwwPFw4wPCxAwNFxIYMCxYYKCxpjICp4AQ"))
|
|
@ -1,30 +0,0 @@
|
||||||
1.76779,-0.29175,-1.5,AL CMA
|
|
||||||
1.67531,-0.91971,-0.7,AL CAR
|
|
||||||
3.73352,0.33480,-0.0,AL BOO
|
|
||||||
3.83799,-1.06178,-0.0,AL1 CEN
|
|
||||||
4.87356,0.67690,0.0,AL LYR
|
|
||||||
1.38181,0.80282,0.1,AL AUR
|
|
||||||
1.37243,-0.14315,0.1,BE ORI
|
|
||||||
2.00408,0.09119,0.4,AL CMI
|
|
||||||
0.42636,-0.99897,0.5,AL ERI
|
|
||||||
1.54973,0.12928,0.5,AL ORI
|
|
||||||
3.68187,-1.05370,0.6,BE CEN
|
|
||||||
5.19577,0.15478,0.8,AL AQL
|
|
||||||
1.20393,0.28814,0.8,AL TAU
|
|
||||||
4.31710,-0.46132,1.0,AL SCO
|
|
||||||
3.51331,-0.19480,1.0,AL VIR
|
|
||||||
2.03032,0.48915,1.1,BE GEM
|
|
||||||
6.01113,-0.51701,1.2,AL PSA
|
|
||||||
3.34982,-1.04176,1.2,BE CRU
|
|
||||||
5.41676,0.79029,1.2,AL CYG
|
|
||||||
3.83799,-1.06178,1.3,AL2 CEN
|
|
||||||
2.65452,0.20887,1.4,AL LEO
|
|
||||||
1.82660,-0.50566,1.5,EP CMA
|
|
||||||
1.98356,0.55656,1.6,AL GEM
|
|
||||||
3.25765,-1.10128,1.6,AL1 CRU
|
|
||||||
1.98356,0.55656,1.6,AL GEM
|
|
||||||
3.27758,-0.99681,1.6,GA CRU
|
|
||||||
4.59723,-0.64758,1.6,LA SCO
|
|
||||||
1.41865,0.11082,1.6,GA ORI
|
|
||||||
1.42372,0.49930,1.6,BE TAU
|
|
||||||
2.41380,-1.21680,1.7,BE CAR
|
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
* Degrees to radians
|
||||||
|
*/
|
||||||
|
function toRadians(degrees)
|
||||||
|
{
|
||||||
|
return Math.PI * degrees / 180;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Julian day number
|
||||||
|
* Assumes a proleptic gregorian calendar where the year 1 is preceded by the
|
||||||
|
* year 0.
|
||||||
|
*/
|
||||||
|
function toJulianDay(year, month, day, hours, minutes, seconds)
|
||||||
|
{
|
||||||
|
day += hours / 24 + minutes / 1440 + seconds / 86400;
|
||||||
|
|
||||||
|
if(month <= 2)
|
||||||
|
{
|
||||||
|
year -= 1;
|
||||||
|
month += 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
var A = Math.floor(year / 100);
|
||||||
|
var B = 2 - A + Math.floor(A / 4);
|
||||||
|
return Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + B - 1524.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sidereal time in Greenwich
|
||||||
|
*/
|
||||||
|
function siderealTime(julianDay)
|
||||||
|
{
|
||||||
|
var T = (julianDay - 2451545.0) / 36525;
|
||||||
|
return toRadians(280.46061837 + 360.98564736629 * (julianDay - 2451545.0) + 0.000387933 * T * T - T * T * T / 38710000);
|
||||||
|
}
|
||||||
|
|
||||||
|
function binary_search(a, value) {
|
||||||
|
var lo = 0, hi = a.length - 1, mid;
|
||||||
|
while (lo <= hi) {
|
||||||
|
mid = Math.floor((lo+hi)/2);
|
||||||
|
if (a[mid] > value)
|
||||||
|
hi = mid - 1;
|
||||||
|
else if (a[mid] < value)
|
||||||
|
lo = mid + 1;
|
||||||
|
else
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var longitudeSign = 1; //1 for west and -1 for east;
|
||||||
|
var longitudeDegrees = 5;
|
||||||
|
var longitudeMinutes = 37;
|
||||||
|
var longitudeSeconds = 27.4;
|
||||||
|
var longitude = toRadians(longitudeSign * (longitudeDegrees + longitudeMinutes / 60 + longitudeSeconds / 3600));
|
||||||
|
var latitudeSign = 1; //1 for north -1 for south;
|
||||||
|
var latitudeDegrees = 43;
|
||||||
|
var latitudeMinutes = 25;
|
||||||
|
var latitudeSeconds = 0.9;
|
||||||
|
var latitude = toRadians(latitudeSign * (latitudeDegrees + latitudeMinutes / 60 + latitudeSeconds / 3600));
|
||||||
|
var year = 2020;
|
||||||
|
var month = 1;
|
||||||
|
var day = 27;
|
||||||
|
var hours = 22;
|
||||||
|
var minutes = 0;
|
||||||
|
var seconds = 0;
|
||||||
|
var timeZone = 1;
|
||||||
|
var julianDay = toJulianDay(year, month, day, hours - timeZone, minutes, seconds);
|
||||||
|
var size = 240;
|
||||||
|
|
||||||
|
storage = require('Storage');
|
||||||
|
f=storage.read("planetarium.data.csv","r");
|
||||||
|
linestart=0;
|
||||||
|
g.clearRect(0, 0, 240, 240);
|
||||||
|
|
||||||
|
//Common calculations based only on time
|
||||||
|
var t = (julianDay - 2451545.0) / 36525;
|
||||||
|
var zeta = toRadians((2306.2181 * t + 0.30188 * t * t + 0.017998 * t * t * t) / 3600);
|
||||||
|
var theta = toRadians((2004.3109 * t - 0.42665 * t * t - 0.041833 * t * t * t) / 3600);
|
||||||
|
var z = toRadians((2306.2181 * t + 1.09468 * t * t + 0.018203 * t * t * t) / 3600);
|
||||||
|
|
||||||
|
|
||||||
|
let starNumber = 0;
|
||||||
|
//Each star has a number (the position on the file (line number)). These are the lines
|
||||||
|
//joining each star in the constellations.
|
||||||
|
constelation_lines=[/*Orion*/[7,68],[10,53],[53,56],[28,68],/*Taurus*/[13,172],[13,340],[293,340],[29,293],
|
||||||
|
/*canis menor*/[155,8]];
|
||||||
|
var starPositions = {};
|
||||||
|
|
||||||
|
for (i=0;i<f.length;i++)
|
||||||
|
{
|
||||||
|
if (f[i]=='\n'){
|
||||||
|
var start = new Date().getTime();
|
||||||
|
starNumber++;
|
||||||
|
//console.log("Line from "+linestart.toString()+"to "+(i-1).toString());
|
||||||
|
line = f.substr(linestart,i-linestart);
|
||||||
|
//console.log(line);
|
||||||
|
linestart = i+1;
|
||||||
|
//Process the star
|
||||||
|
starInfo = line.split(',');
|
||||||
|
//console.log(starInfo[0]);
|
||||||
|
starRA = parseFloat(starInfo[0]);
|
||||||
|
starDE = parseFloat(starInfo[1]);
|
||||||
|
starMag = parseFloat(starInfo[2]);
|
||||||
|
//var start = new Date().getTime();
|
||||||
|
var dec = Math.asin(Math.sin(theta) * Math.cos(starDE) * Math.cos(starRA + zeta) + Math.cos(theta) * Math.sin(starDE));
|
||||||
|
var ascen = Math.atan2(Math.cos(starDE) * Math.sin(starRA + zeta), Math.cos(theta) * Math.cos(starDE) * Math.cos(starRA + zeta) - Math.sin(theta) * Math.sin(starDE)) + z;
|
||||||
|
var H = siderealTime(julianDay) - longitude - ascen;
|
||||||
|
//var end = new Date().getTime();
|
||||||
|
//console.log("Call to doSomething took " + (end - start) + " milliseconds.");
|
||||||
|
//Compute altitude
|
||||||
|
var alt = Math.asin(Math.sin(latitude) * Math.sin(dec) + Math.cos(latitude) * Math.cos(dec) * Math.cos(H));
|
||||||
|
if(alt >= 0)
|
||||||
|
{
|
||||||
|
//Compute azimuth
|
||||||
|
var azi = Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(latitude) - Math.tan(dec) * Math.cos(latitude));
|
||||||
|
var x = size / 2 + size / 2 * Math.cos(alt) * Math.sin(azi);
|
||||||
|
var y = size / 2 + size / 2 * Math.cos(alt) * Math.cos(azi);
|
||||||
|
starPositions[starNumber] = [x,y];
|
||||||
|
var magnitude = starMag<1.5?2:1;
|
||||||
|
g.fillCircle(x, y, magnitude);
|
||||||
|
if (starMag<1)
|
||||||
|
g.drawString(starInfo[3],x,y+2);
|
||||||
|
g.flip();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0;i<constelation_lines.length;i++)
|
||||||
|
{
|
||||||
|
constelation = constelation_lines[i];
|
||||||
|
positionStar1=starPositions[constelation[0]];
|
||||||
|
positionStar2=starPositions[constelation[1]];
|
||||||
|
//Both stars need to be visible
|
||||||
|
g.setColor(0,255,0);
|
||||||
|
if (positionStar1 && positionStar2)
|
||||||
|
g.drawLine(positionStar1[0],positionStar1[1],positionStar2[0],positionStar2[1]);
|
||||||
|
g.flip();
|
||||||
|
}
|
|
@ -0,0 +1,343 @@
|
||||||
|
1.768,-0.292,-1.5,Sirius
|
||||||
|
1.675,-0.920,-0.7,AL CAR
|
||||||
|
3.734,0.335,-0.0,Arcturus
|
||||||
|
3.838,-1.062,-0.0,AL1 CEN
|
||||||
|
4.874,0.677,0.0,Vega
|
||||||
|
1.382,0.803,0.1,Capella
|
||||||
|
1.372,-0.143,0.1,Rigel
|
||||||
|
2.004,0.091,0.4,Procyion
|
||||||
|
0.426,-0.999,0.5,AL ERI
|
||||||
|
1.550,0.129,0.5,Betelgeuse
|
||||||
|
3.682,-1.054,0.6,BE CEN
|
||||||
|
5.196,0.155,0.8,AL AQL
|
||||||
|
1.204,0.288,0.8,Aldebaran
|
||||||
|
4.317,-0.461,1.0,AL SCO
|
||||||
|
3.513,-0.195,1.0,AL VIR
|
||||||
|
2.030,0.489,1.1,BE GEM
|
||||||
|
6.011,-0.517,1.2,AL PSA
|
||||||
|
3.350,-1.042,1.2,BE CRU
|
||||||
|
5.417,0.790,1.2,Deneb
|
||||||
|
3.838,-1.062,1.3,AL2 CEN
|
||||||
|
2.655,0.209,1.4,AL LEO
|
||||||
|
1.827,-0.506,1.5,EP CMA
|
||||||
|
1.984,0.557,1.6,AL GEM
|
||||||
|
3.258,-1.101,1.6,AL1 CRU
|
||||||
|
1.984,0.557,1.6,AL GEM
|
||||||
|
3.278,-0.997,1.6,GA CRU
|
||||||
|
4.597,-0.648,1.6,LA SCO
|
||||||
|
1.419,0.111,1.6,Bellatrix
|
||||||
|
1.424,0.499,1.6,BE TAU
|
||||||
|
2.414,-1.217,1.7,BE CAR
|
||||||
|
1.467,-0.021,1.7,EP ORI
|
||||||
|
5.796,-0.820,1.7,AL GRU
|
||||||
|
3.377,0.977,1.8,EP UMA
|
||||||
|
2.136,-0.826,1.8,GA2 VEL
|
||||||
|
0.892,0.870,1.8,AL PER
|
||||||
|
2.896,1.078,1.8,AL UMA
|
||||||
|
1.869,-0.461,1.8,DE CMA
|
||||||
|
4.818,-0.600,1.9,EP SGR
|
||||||
|
2.193,-1.039,1.9,EP CAR
|
||||||
|
3.611,0.861,1.9,ET UMA
|
||||||
|
4.613,-0.750,1.9,TH SCO
|
||||||
|
1.569,0.784,1.9,BE AUR
|
||||||
|
4.401,-1.205,1.9,AL TRA
|
||||||
|
1.735,0.286,1.9,GA GEM
|
||||||
|
5.348,-0.990,1.9,AL PAV
|
||||||
|
2.289,-0.955,2.0,DE VEL
|
||||||
|
1.670,-0.313,2.0,BE CMA
|
||||||
|
2.477,-0.151,2.0,AL HYA
|
||||||
|
0.555,0.409,2.0,AL ARI
|
||||||
|
0.663,1.558,2.0,AL UMI
|
||||||
|
4.954,-0.459,2.0,SI SGR
|
||||||
|
0.190,-0.314,2.0,BE CET
|
||||||
|
1.487,-0.034,2.0,ZE ORI
|
||||||
|
0.037,0.508,2.1,AL AND
|
||||||
|
0.304,0.622,2.1,BE AND
|
||||||
|
1.517,-0.169,2.1,KA ORI
|
||||||
|
3.694,-0.635,2.1,TH CEN
|
||||||
|
3.886,1.294,2.1,BE UMI
|
||||||
|
4.603,0.219,2.1,AL OPH
|
||||||
|
3.258,-1.101,2.1,AL2 CRU
|
||||||
|
5.946,-0.818,2.1,BE GRU
|
||||||
|
0.821,0.715,2.1,BE PER
|
||||||
|
3.094,0.254,2.1,BE LEO
|
||||||
|
3.323,-0.855,2.2,GA CEN
|
||||||
|
5.333,0.703,2.2,GA CYG
|
||||||
|
2.391,-0.758,2.2,LA VEL
|
||||||
|
0.177,0.987,2.2,AL CAS
|
||||||
|
1.449,-0.005,2.2,DE ORI
|
||||||
|
4.078,0.466,2.2,AL CRB
|
||||||
|
4.698,0.899,2.2,GA DRA
|
||||||
|
2.110,-0.698,2.2,ZE PUP
|
||||||
|
2.431,-1.035,2.2,JO CAR
|
||||||
|
0.541,0.739,2.3,GA1 AND
|
||||||
|
0.040,1.032,2.3,BE CAS
|
||||||
|
3.508,0.959,2.3,ZE UMA
|
||||||
|
4.408,-0.599,2.3,EP SCO
|
||||||
|
3.577,-0.933,2.3,EP CEN
|
||||||
|
3.848,-0.827,2.3,AL LUP
|
||||||
|
3.820,-0.736,2.3,ET CEN
|
||||||
|
4.190,-0.395,2.3,DE SCO
|
||||||
|
2.888,0.984,2.4,BE UMA
|
||||||
|
0.115,-0.738,2.4,AL PHE
|
||||||
|
5.691,0.172,2.4,EP PEG
|
||||||
|
4.636,-0.681,2.4,KA SCO
|
||||||
|
6.038,0.490,2.4,BE PEG
|
||||||
|
4.496,-0.274,2.4,ET OPH
|
||||||
|
3.115,0.937,2.4,GA UMA
|
||||||
|
5.579,1.092,2.4,AL CEP
|
||||||
|
1.938,-0.511,2.5,ET CMA
|
||||||
|
5.438,0.593,2.5,EP CYG
|
||||||
|
0.247,1.060,2.5,GA CAS
|
||||||
|
6.042,0.265,2.5,AL PEG
|
||||||
|
2.453,-0.960,2.5,KA VEL
|
||||||
|
0.795,0.071,2.5,AL CET
|
||||||
|
3.646,-0.825,2.5,ZE CEN
|
||||||
|
2.941,0.358,2.6,DE LEO
|
||||||
|
4.351,-0.184,2.6,ZE OPH
|
||||||
|
1.452,-0.311,2.6,AL LEP
|
||||||
|
3.211,-0.306,2.6,GA CRV
|
||||||
|
3.178,-0.885,2.6,DE CEN
|
||||||
|
4.986,-0.522,2.6,ZE SGR
|
||||||
|
2.705,0.346,2.6,GA1 LEO
|
||||||
|
4.001,-0.164,2.6,BE LIB
|
||||||
|
1.570,0.649,2.6,TH AUR
|
||||||
|
4.213,-0.346,2.6,BE1 SCO
|
||||||
|
0.500,0.363,2.6,BE ARI
|
||||||
|
1.482,-0.595,2.6,AL COL
|
||||||
|
3.292,-0.408,2.6,BE CRV
|
||||||
|
4.120,0.112,2.6,AL SER
|
||||||
|
0.374,1.051,2.7,DE CAS
|
||||||
|
3.642,0.321,2.7,ET BOO
|
||||||
|
3.921,-0.753,2.7,BE LUP
|
||||||
|
1.296,0.579,2.7,JO AUR
|
||||||
|
2.822,-0.863,2.7,MY VEL
|
||||||
|
3.304,-1.207,2.7,AL MUS
|
||||||
|
4.585,-0.651,2.7,YP SCO
|
||||||
|
1.907,-0.647,2.7,PI PUP
|
||||||
|
3.861,0.473,2.7,EP BOO
|
||||||
|
4.804,-0.521,2.7,DE SGR
|
||||||
|
5.176,0.185,2.7,GA AQL
|
||||||
|
4.251,-0.064,2.7,DE OPH
|
||||||
|
4.293,1.074,2.7,ET DRA
|
||||||
|
3.493,-0.641,2.8,JO CEN
|
||||||
|
3.887,-0.280,2.8,AL2 LIB
|
||||||
|
2.805,-1.124,2.8,TH CAR
|
||||||
|
1.464,-0.103,2.8,JO ORI
|
||||||
|
4.321,0.375,2.8,BE HER
|
||||||
|
4.640,0.080,2.8,BE OPH
|
||||||
|
4.080,-0.718,2.8,GA LUP
|
||||||
|
1.343,-0.089,2.8,BE ERI
|
||||||
|
4.583,0.913,2.8,BE DRA
|
||||||
|
0.112,-1.348,2.8,BE HYI
|
||||||
|
3.208,-1.025,2.8,DE CRU
|
||||||
|
2.127,-0.424,2.8,RH PUP
|
||||||
|
4.369,0.552,2.8,ZE HER
|
||||||
|
4.834,-0.444,2.8,LA SGR
|
||||||
|
4.345,-0.492,2.8,TA SCO
|
||||||
|
0.058,0.265,2.8,GA PEG
|
||||||
|
3.413,0.191,2.8,EP VIR
|
||||||
|
1.432,-0.362,2.8,BE LEP
|
||||||
|
1.022,0.556,2.9,ZE PER
|
||||||
|
4.168,-1.107,2.9,BE TRA
|
||||||
|
4.561,-0.969,2.9,BE ARA
|
||||||
|
0.518,-1.075,2.9,AL HYI
|
||||||
|
5.840,-1.052,2.9,AL TUC
|
||||||
|
0.993,0.421,2.9,ET TAU
|
||||||
|
5.170,0.788,2.9,DE CYG
|
||||||
|
5.703,-0.281,2.9,DE CAP
|
||||||
|
1.671,0.393,2.9,MY GEM
|
||||||
|
1.038,0.698,2.9,EP PER
|
||||||
|
4.010,-1.199,2.9,GA TRA
|
||||||
|
4.184,-0.456,2.9,PI SCO
|
||||||
|
4.281,-0.447,2.9,SI SCO
|
||||||
|
5.017,-0.367,2.9,PI SGR
|
||||||
|
1.951,0.145,2.9,BE CMI
|
||||||
|
3.386,0.669,2.9,AL2 CVN
|
||||||
|
5.635,-0.097,2.9,BE AQR
|
||||||
|
0.806,0.934,2.9,GA PER
|
||||||
|
1.789,-0.883,2.9,TA PUP
|
||||||
|
5.947,0.527,2.9,ET PEG
|
||||||
|
1.039,-0.236,3.0,GA ERI
|
||||||
|
3.272,-0.288,3.0,DE CRV
|
||||||
|
4.590,-0.871,3.0,AL ARA
|
||||||
|
2.562,-1.136,3.0,YP CAR
|
||||||
|
5.785,-0.006,3.0,AL AQR
|
||||||
|
1.762,0.439,3.0,EP GEM
|
||||||
|
2.556,0.415,3.0,EP LEO
|
||||||
|
1.318,0.765,3.0,EP AUR
|
||||||
|
4.738,-0.531,3.0,GA2 SGR
|
||||||
|
4.998,0.242,3.0,ZE AQL
|
||||||
|
0.565,0.611,3.0,BE TRI
|
||||||
|
1.473,0.369,3.0,ZE TAU
|
||||||
|
3.186,-0.395,3.0,EP CRV
|
||||||
|
3.486,-0.404,3.0,GA HYA
|
||||||
|
0.973,0.834,3.0,DE PER
|
||||||
|
2.922,0.777,3.0,PS UMA
|
||||||
|
5.733,-0.652,3.0,GA GRU
|
||||||
|
1.659,-0.525,3.0,ZE CMA
|
||||||
|
1.846,-0.416,3.0,OK2 CMA
|
||||||
|
3.805,0.669,3.0,GA BOO
|
||||||
|
4.658,-0.700,3.0,JO1 SCO
|
||||||
|
0.608,-0.052,3.0,OK CET
|
||||||
|
3.620,-0.741,3.0,MY CEN
|
||||||
|
2.715,0.724,3.0,MY UMA
|
||||||
|
3.344,-1.189,3.0,BE MUS
|
||||||
|
4.017,1.254,3.0,GA UMI
|
||||||
|
5.029,1.181,3.1,DE DRA
|
||||||
|
4.415,-0.664,3.1,MY1 SCO
|
||||||
|
5.108,0.488,3.1,BE1 CYG
|
||||||
|
5.328,-0.258,3.1,BE CAP
|
||||||
|
2.336,0.104,3.1,ZE HYA
|
||||||
|
2.835,-0.283,3.1,NY HYA
|
||||||
|
4.789,-0.642,3.1,ET SGR
|
||||||
|
5.400,-0.825,3.1,AL IND
|
||||||
|
1.531,-0.624,3.1,BE COL
|
||||||
|
2.448,0.600,3.1,AL LYN
|
||||||
|
2.492,-0.995,3.1,_
|
||||||
|
3.036,-1.100,3.1,LA CEN
|
||||||
|
3.923,-0.735,3.1,KA CEN
|
||||||
|
4.445,-0.977,3.1,ZE ARA
|
||||||
|
2.353,0.838,3.1,JO UMA
|
||||||
|
4.516,0.434,3.1,DE HER
|
||||||
|
4.516,0.642,3.2,PI HER
|
||||||
|
1.337,0.720,3.2,ET AUR
|
||||||
|
1.736,-0.754,3.2,NY PUP
|
||||||
|
2.500,0.902,3.2,TH UMA
|
||||||
|
4.489,1.147,3.2,ZE DRA
|
||||||
|
4.912,-0.471,3.2,PH SGR
|
||||||
|
1.265,0.121,3.2,PI3 ORI
|
||||||
|
1.333,-0.390,3.2,EP LEP
|
||||||
|
3.851,-1.134,3.2,AL CIR
|
||||||
|
4.440,0.164,3.2,KA OPH
|
||||||
|
5.554,0.528,3.2,ZE CYG
|
||||||
|
4.668,-0.647,3.2,_
|
||||||
|
6.193,1.355,3.2,GA CEP
|
||||||
|
4.020,-0.709,3.2,DE LUP
|
||||||
|
5.285,-0.014,3.2,TH AQL
|
||||||
|
5.623,1.232,3.2,BE CEP
|
||||||
|
0.992,-1.296,3.2,GA HYI
|
||||||
|
4.269,-0.082,3.2,EP OPH
|
||||||
|
4.970,0.571,3.2,GA LYR
|
||||||
|
1.960,-0.756,3.2,SI PUP
|
||||||
|
4.805,-0.051,3.3,ET SER
|
||||||
|
0.172,0.539,3.3,DE AND
|
||||||
|
1.196,-0.961,3.3,AL DOR
|
||||||
|
1.781,-1.081,3.3,AL PIC
|
||||||
|
3.693,-0.466,3.3,PI HYA
|
||||||
|
4.547,-0.436,3.3,TH OPH
|
||||||
|
5.998,-0.276,3.3,DE AQR
|
||||||
|
1.636,0.393,3.3,ET GEM
|
||||||
|
3.945,-0.441,3.3,SI LIB
|
||||||
|
4.036,1.029,3.3,JO DRA
|
||||||
|
0.288,-0.815,3.3,BE PHE
|
||||||
|
1.365,-0.283,3.3,MY LEP
|
||||||
|
3.209,0.995,3.3,DE UMA
|
||||||
|
2.678,-1.222,3.3,OM CAR
|
||||||
|
2.758,-1.077,3.3,_
|
||||||
|
5.004,-0.483,3.3,TA SGR
|
||||||
|
4.504,-0.755,3.3,ET SCO
|
||||||
|
2.048,-0.434,3.3,XI PUP
|
||||||
|
2.942,0.269,3.3,TH LEO
|
||||||
|
4.561,-0.984,3.3,GA ARA
|
||||||
|
4.708,-0.171,3.3,NY OPH
|
||||||
|
1.110,-1.090,3.4,AL RET
|
||||||
|
5.807,1.016,3.4,ZE CEP
|
||||||
|
1.416,-0.042,3.4,ET ORI
|
||||||
|
1.768,0.225,3.4,XI GEM
|
||||||
|
2.226,1.060,3.4,OK UMA
|
||||||
|
5.085,0.054,3.4,DE AQL
|
||||||
|
3.555,-0.010,3.4,ZE VIR
|
||||||
|
4.026,-0.780,3.4,EP LUP
|
||||||
|
0.499,1.111,3.4,EP CAS
|
||||||
|
2.298,0.112,3.4,EP HYA
|
||||||
|
3.384,0.059,3.4,DE VIR
|
||||||
|
0.808,0.678,3.4,RH PER
|
||||||
|
1.172,0.277,3.4,TH2 TAU
|
||||||
|
2.693,-1.070,3.4,_
|
||||||
|
5.940,0.189,3.4,ZE PEG
|
||||||
|
0.386,-0.756,3.4,GA PHE
|
||||||
|
0.493,0.516,3.4,AL TRI
|
||||||
|
3.619,-0.728,3.4,NY CEN
|
||||||
|
3.981,-0.909,3.4,ZE LUP
|
||||||
|
4.189,-0.670,3.4,ET LUP
|
||||||
|
0.778,-0.703,3.4,TH1 ERI
|
||||||
|
4.653,0.484,3.4,MY HER
|
||||||
|
5.432,-1.155,3.4,BE PAV
|
||||||
|
5.434,1.079,3.4,ET CEP
|
||||||
|
0.214,1.009,3.4,ET CAS
|
||||||
|
2.404,-1.029,3.4,_
|
||||||
|
2.691,0.409,3.4,ZE LEO
|
||||||
|
5.001,-0.085,3.4,LA AQL
|
||||||
|
0.299,-0.178,3.5,ET CET
|
||||||
|
2.693,0.749,3.5,LA UMA
|
||||||
|
4.931,0.582,3.5,BE LYR
|
||||||
|
0.713,0.056,3.5,GA CET
|
||||||
|
1.050,0.218,3.5,LA TAU
|
||||||
|
1.840,-0.488,3.5,SI CMA
|
||||||
|
2.080,-0.925,3.5,CH CAR
|
||||||
|
3.995,0.581,3.5,DE BOO
|
||||||
|
5.231,0.340,3.5,GA SGE
|
||||||
|
2.960,0.578,3.5,NY UMA
|
||||||
|
4.514,0.251,3.5,AL1 HER
|
||||||
|
5.978,0.429,3.5,MY PEG
|
||||||
|
5.971,-0.896,3.5,EP GRU
|
||||||
|
0.454,-0.278,3.5,TA CET
|
||||||
|
3.935,0.705,3.5,BE BOO
|
||||||
|
4.830,-0.802,3.5,AL TEL
|
||||||
|
4.964,-0.368,3.5,XI2 SGR
|
||||||
|
2.166,0.160,3.5,BE CNC
|
||||||
|
2.536,0.173,3.5,OK LEO
|
||||||
|
2.650,0.293,3.5,ET LEO
|
||||||
|
5.976,1.155,3.5,JO CEP
|
||||||
|
1.172,0.335,3.5,EP TAU
|
||||||
|
1.920,0.384,3.5,DE GEM
|
||||||
|
4.143,-0.060,3.5,MY SER
|
||||||
|
4.376,0.679,3.5,ET HER
|
||||||
|
5.804,0.108,3.5,TH PEG
|
||||||
|
0.974,-0.170,3.5,DE ERI
|
||||||
|
2.604,-0.952,3.5,PH VEL
|
||||||
|
3.024,-0.556,3.5,XI HYA
|
||||||
|
4.615,-0.269,3.5,XI SER
|
||||||
|
1.514,-0.259,3.5,ZE LEP
|
||||||
|
3.750,-0.804,3.5,JO LUP
|
||||||
|
0.085,-0.154,3.6,JO CET
|
||||||
|
0.596,-0.899,3.6,PH ERI
|
||||||
|
1.125,-0.590,3.6,YP4 ERI
|
||||||
|
2.964,-0.258,3.6,DE CRT
|
||||||
|
4.022,-0.633,3.6,PH1 LUP
|
||||||
|
5.274,-1.155,3.6,DE PAV
|
||||||
|
0.428,0.849,3.6,51 AND
|
||||||
|
2.027,0.426,3.6,KA GEM
|
||||||
|
4.417,-0.664,3.6,MY2 SCO
|
||||||
|
4.804,1.269,3.6,CH DRA
|
||||||
|
5.315,-0.219,3.6,AL2 CAP
|
||||||
|
1.912,0.289,3.6,LA GEM
|
||||||
|
3.804,0.530,3.6,RH BOO
|
||||||
|
4.089,-0.491,3.6,YP LIB
|
||||||
|
3.235,-1.054,3.6,EP CRU
|
||||||
|
0.367,-0.143,3.6,TH CET
|
||||||
|
0.894,0.158,3.6,OK TAU
|
||||||
|
1.386,-0.119,3.6,TA ORI
|
||||||
|
1.503,-0.392,3.6,GA LEP
|
||||||
|
1.801,0.593,3.6,TH GEM
|
||||||
|
2.372,0.823,3.6,KA UMA
|
||||||
|
2.490,-0.706,3.6,PS VEL
|
||||||
|
2.030,-0.663,3.6,_
|
||||||
|
2.664,-0.216,3.6,LA HYA
|
||||||
|
3.101,0.031,3.6,BE VIR
|
||||||
|
0.399,0.268,3.6,ET PSC
|
||||||
|
2.270,-0.924,3.6,OK VEL
|
||||||
|
3.413,-1.249,3.6,DE MUS
|
||||||
|
4.427,-0.739,3.6,ZE2 SCO
|
||||||
|
4.586,-1.059,3.6,DE ARA
|
||||||
|
4.650,-1.130,3.6,ET PAV
|
||||||
|
6.030,0.739,3.6,OK AND
|
||||||
|
0.742,0.476,3.6,41 ARI
|
||||||
|
1.000,0.420,3.6,27 TAU
|
||||||
|
5.400,0.255,3.6,BE DEL
|
||||||
|
3.079,-1.165,3.6,LA MUS
|
||||||
|
1.134,0.273,3.6,GA TAU
|
||||||
|
3.323,-0.025,3.6,GA VIR
|
||||||
|
3.684,1.124,3.6,AL DRA
|
||||||
|
5.475,-1.020,3.6,BE IND
|
|
|
@ -1,167 +0,0 @@
|
||||||
var counter;
|
|
||||||
var counterInterval;
|
|
||||||
|
|
||||||
var settings;
|
|
||||||
|
|
||||||
var work=false; //true if training false if resting
|
|
||||||
var prep=true; //true if we are in prep phase (at the beginning of the session
|
|
||||||
var setNum;
|
|
||||||
|
|
||||||
var paused;
|
|
||||||
|
|
||||||
function endPart() {
|
|
||||||
g.clear();
|
|
||||||
if (prep){
|
|
||||||
prep=false;
|
|
||||||
work = true;
|
|
||||||
counter = settings.workseg+settings.workmin*60;
|
|
||||||
startCounter();
|
|
||||||
}else if (work){
|
|
||||||
work = false;
|
|
||||||
counter = settings.restseg+settings.restmin*60;
|
|
||||||
startCounter();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (setNum>1)
|
|
||||||
{
|
|
||||||
setNum--;
|
|
||||||
work = true;
|
|
||||||
counter = settings.workseg+settings.workmin*60;
|
|
||||||
startCounter();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//End session
|
|
||||||
setWatch(showMenu, BTN2);
|
|
||||||
E.showMessage("Press BTN2 for\ngoing back\nto the menu","Well done!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function printCounter(counter){
|
|
||||||
g.setFontAlign(0,0); // center font
|
|
||||||
g.setFont("Vector",80); // vector font, 80px
|
|
||||||
// draw the current counter value
|
|
||||||
let minutes = Math.floor(counter/60);
|
|
||||||
let segs = counter % 60;
|
|
||||||
let textMinutes = minutes.toString().padStart(2, "0");
|
|
||||||
let textSegs = segs.toString().padStart(2,"0");
|
|
||||||
g.clearRect(0,80,239,160);
|
|
||||||
g.setFont("Vector",30);
|
|
||||||
if (prep)
|
|
||||||
g.setColor(125,125,0);
|
|
||||||
else if (work)
|
|
||||||
g.setColor(255,0,0);
|
|
||||||
else
|
|
||||||
g.setColor(0,255,0);
|
|
||||||
g.drawString(setNum,120,50);
|
|
||||||
if (prep)
|
|
||||||
g.drawString("PREPARATION",120,190);
|
|
||||||
else if (work)
|
|
||||||
g.drawString("WORK",120,190);
|
|
||||||
else
|
|
||||||
g.drawString("REST",120,190);
|
|
||||||
g.setFont("Vector",10);
|
|
||||||
g.drawString("Touch to pause",120,215);
|
|
||||||
g.setFont("Vector",80);
|
|
||||||
g.drawString(textMinutes+":"+textSegs,120,120);
|
|
||||||
}
|
|
||||||
|
|
||||||
function signal_to_user(le){
|
|
||||||
if (settings.buzz)
|
|
||||||
Bangle.buzz(le);
|
|
||||||
else
|
|
||||||
Bangle.beep(le,4000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function countDown() {
|
|
||||||
counter--;
|
|
||||||
if (counter<4 && counter>0)
|
|
||||||
signal_to_user(200);
|
|
||||||
if (counter==0)
|
|
||||||
signal_to_user(600);
|
|
||||||
|
|
||||||
if (counter<0) {
|
|
||||||
clearInterval(counterInterval);
|
|
||||||
counterInterval = undefined;
|
|
||||||
endPart();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printCounter(counter);
|
|
||||||
}
|
|
||||||
g.flip();
|
|
||||||
}
|
|
||||||
|
|
||||||
function startCounter(){
|
|
||||||
if (!counterInterval)
|
|
||||||
counterInterval = setInterval(countDown, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function pause()
|
|
||||||
{
|
|
||||||
if (!paused)
|
|
||||||
{
|
|
||||||
clearInterval(counterInterval);
|
|
||||||
counterInterval = undefined;
|
|
||||||
setWatch(resume,BTN4);
|
|
||||||
setWatch(resume,BTN5);
|
|
||||||
paused=true;
|
|
||||||
g.clear();
|
|
||||||
g.setFont("Vector",60);
|
|
||||||
g.drawString("PAUSED",120,120);
|
|
||||||
g.setFont("Vector",20);
|
|
||||||
g.drawString("Touch to continue",120,180);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function resume(){
|
|
||||||
if (paused)
|
|
||||||
{
|
|
||||||
g.clear();
|
|
||||||
counterInterval = setInterval(countDown, 1000);
|
|
||||||
setWatch(pause,BTN4);
|
|
||||||
setWatch(pause,BTN5);
|
|
||||||
paused=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function startSession() {
|
|
||||||
E.showMenu();
|
|
||||||
paused=false;
|
|
||||||
setWatch(pause,BTN4);
|
|
||||||
setWatch(pause,BTN5);
|
|
||||||
require('Storage').write('intervals.settings.json',settings);
|
|
||||||
setNum = settings.sets;
|
|
||||||
counter = 5;//prep time
|
|
||||||
prep=true;
|
|
||||||
work=false;
|
|
||||||
startCounter();
|
|
||||||
}
|
|
||||||
|
|
||||||
function showMenu()
|
|
||||||
{
|
|
||||||
settings = require('Storage').readJSON('intervals.settings.json',1)||
|
|
||||||
{ sets:1,workseg:10,workmin:0,restseg:5,restmin:0,buzz:true};
|
|
||||||
|
|
||||||
var mainmenu = {
|
|
||||||
"" : { "title" : "-- Main Menu --" },
|
|
||||||
"START" : function() { startSession(); },
|
|
||||||
"Sets" : { value : settings.sets,min:0,max:20,step:1,onchange : v => { settings.sets=v; } },
|
|
||||||
"Work minutes" : { value : settings.workmin,min:0,max:59,step:1,onchange : v => { settings.workmin=v; } },
|
|
||||||
"Work seconds" : { value : settings.workseg,min:0,max:59,step:5,onchange : v => { settings.workseg=v; } },
|
|
||||||
"Rest minutes" : { value : settings.restmin,min:0,max:59,step:1,onchange : v => { settings.restmin=v; } },
|
|
||||||
"Rest seconds" : { value : settings.restseg,min:0,max:59,step:5,onchange : v => { settings.restseg=v; } },
|
|
||||||
"Signal type" : { value : settings.buzz,format : v => v?"Buzz":"Beep",onchange : v => { settings.buzz=v; }}
|
|
||||||
};
|
|
||||||
|
|
||||||
E.showMenu(mainmenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
showMenu();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.9 KiB |
Loading…
Reference in New Issue