Created
June 1, 2013 10:16
-
-
Save Kirilliann/5689910 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<script src="http://code.jquery.com/jquery-latest.js"></script> | |
<head> | |
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> | |
<title>Планетарий 0.1.1 beta</title> | |
</head> | |
<body> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/atom-full-compiled.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/libcanvas-full-compiled.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/Stars.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/basic_math.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/planetsdraw.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/modal.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/Moon.js"></script> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/parab.js"></script> | |
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script> | |
<script type="text/javascript" src="http://prootime.ru/demos/scroll/js/jquery.mousewheel.min.js"></script> | |
<script type="text/javascript" src="http://prootime.ru/demos/scroll/js/increment.js"></script> | |
<script type="text/javascript" src="http://www.nihilogic.dk/labs/canvas2image/canvas2image.js"></script> | |
<link rel="stylesheet" type="text/css" href="http://astrokot.ru/planetarium/style/style.css" /> | |
<img href="#dialog" src='http://astrokot.ru/planetarium/img/stars.jpg' width=50 height=50 class="modal"> | |
<img href="#dialog2" src='http://astrokot.ru/planetarium/img/planets.jpg' width=50 height=50 class="modal"> | |
<img href="#dialog3" src='http://astrokot.ru/planetarium/img/consts.jpg' width=50 height=50 class="modal"> | |
<img href="#dialog4" src='http://astrokot.ru/planetarium/img/geo.png' width=50 height=50 class="modal"> | |
<img href="#dialog5" src='http://astrokot.ru/planetarium/img/moon.jpg' width=68 height=50 class="modal"> | |
<img href="#dialog6" src='http://astrokot.ru/planetarium/img/comet.gif' width=68 height=50 class="modal"> | |
<img href="#dialog7" src='http://astrokot.ru/planetarium/img/aster.jpg' width=68 height=50 class="modal"> | |
<img href="#dialog8" src='http://astrokot.ru/planetarium/img/sun.jpeg' onClick='rs();' width=68 height=50 class="modal"> | |
<img href="" src='http://astrokot.ru/planetarium/img/format_jpg.jpg' onClick='convert();' width=50 height=50 > | |
<img href="#dialog9" src='http://www.fcphp.usf.edu/fcphp_images/Silver-Play-Button.jpg' width=50 height=50 class="modal"><br> | |
<div id='xxx'> | |
<canvas width=600 height=600 id='main'></canvas> | |
</div> | |
<div id='control2'> | |
Время: <input type='text' id='timeh' size='2' value='12' class='wheel'>:<input type='text' id='timem' size='2' value='0' class='wheel'>:<input type='text' id='times' size='2' value='0' class='wheel'> | |
Дата: <input type='text' id='dated' size='2' value='23' class='wheel'>/<input type='text' id='datem' size='2' value='9' class='wheel'>/<input type='text' id='datey' size='4' value='2012' class='wheel'> г | |
<input type="button" value="Обновить" onClick="dodo();"> | |
<input type="button" id='sdpl' value="+1Sd" onClick=""> | |
<input type="button" id='sdmn' value="-1Sd" onClick=""> | |
<input type="button" id='xpl' value="+1" onClick="xpl()"> | |
<input type="button" id='xmn' value="-1" onClick="xmn()"> | |
<input type="button" id='xpl' value="+x" onClick="xx1()"> | |
<input type="button" id='xmn' value="-x" onClick="xx2()"> | |
<input type="button" id='xpl' value="+y" onClick="y1()"> | |
<input type="button" id='xmn' value="-y" onClick="y2()"> | |
</div> | |
<input type='text' id='tsts' size='10' > | |
<div id='planets_info'> | |
</div><br> | |
<div id="boxes"> | |
<div id="dialog" class="window"> | |
<h3>Звёзды</h3> | |
Предельная звёздная величина:<input type='text' id='maxmag' size='2' value='4' class='wheel3'><br> | |
Градиент блеска:<input type='text' id='k1' size='2' value='1' class='wheel3'><br> | |
Абсолютный градиент блеска:<input type='text' id='k2' size='2' value='1' class='wheel3'><br> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="mask">121</div> | |
<div id="dialog2" class="window"> | |
<h3>Планеты</h3> | |
<table> | |
<tr><td><input type='text' id='kp2' size='2' value='0.5' class='wheel3'></td><td align='left'>Абсолютный градиент гало</td></tr> | |
<tr><td><input type='text' id='kp1' size='2' value='2.5' class='wheel3'></td><td align='left'>Размер гало</td></tr> | |
<tr><td><input type="checkbox" name="option1" value="a1" onClick='consts3();' checked ></td><td align='left'> Показывать инфо о планетах внизу</td></tr> | |
<tr><td><input type="checkbox" name="option1" value="a1" onClick='consts4();' checked ></td><td align='left'> Коллаж планет внизу</td></tr> | |
</table> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog3" class="window"> | |
<h3>Созвездия</h3> | |
<input type="checkbox" name="option1" value="a1" onClick='consts1();' checked >Линии созвездий<br> | |
<input type="checkbox" name="option1" value="a1" onClick='consts02();' checked>Названия созвездий<br> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog4" class="window"> | |
<h3>Местоположение</h3><br> | |
Широта:<input type='text' id='phi' size='4' value='53' class='wheel3'><br> | |
Долгота:<input type='text' id='lambda' size='4' value='53' class='wheel3'> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog5" class="window"> | |
<h3>Луна</h3><br> | |
Диаметр:<input type='text' id='kl1' size='4' value='1' class='wheel3'><br> | |
Гало:<input type='text' id='kl2' size='4' value='3' class='wheel3'><br> | |
<table> | |
<tr><td>Восхождение: <span id='moonalpha' ></span></td><td>Расстояние: <span id='moonr' ></span></td></tr> | |
<tr><td>Склонение: <span id='moondelta' ></span></td><td>Вид. Диаметр: <span id='moond' ></span></td></tr> | |
</table> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog6" class="window"> | |
<h3>Кометы</h3><br> | |
Раздел в доработке <br> | |
<div class="example cursor" id="content">Click to update</div> | |
<input id="btn2" type="button" class='button' value="Обновить"> | |
<select size="3" id='cmt' width='200'> | |
</select> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog7" class="window"> | |
<h3>Астероиды</h3><br> | |
Раздел в доработке | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog8" class="window"> | |
<h3>Восходы и заходы солнца</h3><br> | |
<table> | |
<tr><td>Восход: <span id='risetime' value='12'></span></td><td><a href='' id='st1' class='setttime'>Установить время</a></td></tr> | |
<tr><td>Заход: <span id='settime' value='12'></span></td><td><a href='' id='st2' class='setttime'>Установить время</a></td></tr> | |
</table> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
<div id="dialog9" class="window"> | |
<h3>Анимация</h3><br> | |
Шаг анимации <br> | |
<table> | |
<tr><td> | |
<input type='text' id='anims' size='4' value='4' class='wheel'>сек | |
<input type='text' id='animm' size='4' value='56' class='wheel'>мин | |
<input type='text' id='animh' size='4' value='23' class='wheel'>час | |
</td></tr> | |
<tr><td> | |
<input type='text' id='animd' size='4'value='0' class='wheel'>д | |
<input type='text' id='animmm' size='4'value='0' class='wheel'>мм | |
<input type='text' id='animy' size='4' value='0' class='wheel'>гг | |
</td></tr> | |
</table> | |
<input type="button" id='siderial' value="Зв. сутки" onClick="st()"> x <input type='text' id='kst' size='2' value='1' class='wheel'> | |
<span><a href="#" class="close"/>Закрыть</a> | |
</div> | |
</div> | |
<canvas width=600 height=200 id='planetsmap'></canvas> | |
<script type="text/javascript" src="http://astrokot.ru/planetarium/js/modules/functs1.js"></script> | |
<script type="text/javascript"> | |
$('#btn2').click(function(){ | |
$.ajax({ | |
url: "http://astrokot.ru/math/cometarray.php", | |
cache: false, | |
success: function(html){ | |
//$("#content").html(html); | |
comets=Array(html); | |
alert(comets) | |
} | |
}); | |
}); | |
var sunx, suny, sunz=0; | |
var Po = []; | |
var m=0; | |
function rs(){ | |
var phi=document.getElementById('phi').value*1; | |
var h=Math.acos(-tand(sundelta)*tand(phi))*rad | |
var ts=12+h/15; | |
var tr=12-h/15; | |
document.getElementById('risetime').innerHTML=timefloor(tr) | |
document.getElementById('settime').innerHTML=timefloor(ts) | |
document.getElementById('st1').href=tr | |
document.getElementById('st2').href=ts | |
} | |
function chekingup(){ //функция проверки данных | |
var h=document.getElementById('timeh').value*1 | |
var m=document.getElementById('timem').value*1 | |
var s=document.getElementById('times').value*1 | |
var d=document.getElementById('dated').value*1 | |
var mm=document.getElementById('datem').value*1 | |
var y=document.getElementById('datey').value*1 | |
var phi=document.getElementById('phi').value*1 | |
if (s>59){ | |
s=s-60; | |
m=m+1; | |
}else{ | |
if (s<0){ | |
s=60+s | |
m=m-1 | |
} | |
} | |
if (m>59){ | |
m=m-60; | |
h=h+1; | |
}else{ | |
if (1*m<0){ | |
h=h-1 | |
m=60+m | |
} | |
} | |
if (h>=24){ | |
h=h-24; | |
d=d+1; | |
}else{ | |
if(h<0){ | |
h=24+h; | |
d=d-1; | |
} | |
} | |
if (d>getdays(y,mm-1)){ | |
d=d-getdays(y,mm-1); | |
mm=mm+1; | |
}else{ | |
if (1*d<=0){ | |
if (mm<2){ | |
mm=13 | |
y=y-1 | |
} | |
d=1*getdays(y,mm-2)+d; | |
mm=mm-1; | |
} | |
} | |
if (mm>12){ | |
mm=mm-12; | |
y=y+1; | |
}else{ | |
if(mm<=0){ | |
mm=12+mm; | |
y=y-1; | |
} | |
} | |
if (phi>=90){ | |
phi=90; | |
} | |
document.getElementById('timeh').value=h | |
document.getElementById('timem').value=m | |
document.getElementById('times').value=s | |
document.getElementById('dated').value=d | |
document.getElementById('datem').value=mm | |
document.getElementById('datey').value=y | |
document.getElementById('phi').value=phi | |
} | |
//=============================================================== | |
function plsed(){ | |
document.getElementById('timeh').value=1*document.getElementById('timeh').value+1*document.getElementById('animh').value | |
document.getElementById('timem').value=1*document.getElementById('timem').value+1*document.getElementById('animm').value | |
document.getElementById('times').value=1*document.getElementById('times').value+1*document.getElementById('anims').value | |
document.getElementById('dated').value=1*document.getElementById('dated').value+1*document.getElementById('animd').value | |
chekingup() | |
dodo() | |
} | |
function mned(){ | |
document.getElementById('timeh').value=1*document.getElementById('timeh').value-1*document.getElementById('animh').value | |
document.getElementById('timem').value=1*document.getElementById('timem').value-1*document.getElementById('animm').value | |
document.getElementById('times').value=1*document.getElementById('times').value-1*document.getElementById('anims').value | |
document.getElementById('dated').value=1*document.getElementById('dated').value-1*document.getElementById('animd').value | |
//chekingup() | |
chekingup() | |
dodo() | |
} | |
var intervalId | |
var button=document.getElementById('sdpl') | |
var button2=document.getElementById('sdmn') | |
button.addEventListener('mousedown',function () { | |
intervalId=setInterval(plsed,100) | |
}, false) | |
button.addEventListener('mouseup',function () { | |
clearInterval(intervalId) | |
}, false) | |
button2.addEventListener('mousedown',function () { | |
intervalId=setInterval(mned,100) | |
}, false) | |
button2.addEventListener('mouseup',function () { | |
clearInterval(intervalId) | |
}, false) | |
$(function() { | |
$("#xxx").bind("mousewheel", function(event, delta) { | |
if (delta > 0) { | |
xpl() | |
} else { | |
// if (parseInt(this.value) > 0) { | |
xmn() | |
// } | |
} | |
return false; | |
}); | |
}); | |
var flag,xcc,ycc; | |
var canvas=document.getElementById('xxx'); | |
canvas.addEventListener('mousedown',function (event) { | |
flag=0; | |
xcc=event.offsetX; | |
ycc=event.offsetY; | |
//alert(flag) | |
}, false); | |
canvas.addEventListener('mouseup',function (event) { | |
flag=1; | |
}, false); | |
canvas.addEventListener('mousemove',function (event) { | |
if (flag==0){ | |
xccc=event.offsetX; | |
yccc=event.offsetY; | |
var dx=xccc-xcc | |
var dy=yccc-ycc | |
x_circle+=dx; | |
y_circle+=dy; | |
var pp = new LibCanvas.Point(dx.toFixed(0),dy.toFixed(0)); | |
//ct.translate(10,10); | |
dodo(); | |
document.getElementById('tsts').value=(pp.x) | |
xcc=xccc; | |
ycc=yccc; | |
} | |
}, false); | |
//актионлистенеры маус велов | |
$(function() { | |
$(".wheel").bind("mousewheel", function(event, delta) { | |
if (delta > 0) { | |
this.value = parseInt(this.value) + 1; | |
} else { | |
// if (parseInt(this.value) > 0) { | |
this.value = parseInt(this.value) - 1; | |
// } | |
} | |
chekingup() | |
dodo() | |
return false; | |
}); | |
}); | |
$(function() { | |
//$("div").append('<img src="images/mousewheelupdown.png" />'); | |
$(".wheel2").bind("mousewheel", function(event, delta) { | |
dodo() | |
chekingup() | |
if (delta > 0) { | |
this.value = parseInt(this.value) + 1; | |
} else { | |
if (parseInt(this.value) > -90) { | |
this.value = parseInt(this.value) - 1; | |
} | |
} | |
return false; | |
}); | |
}); | |
$(function() { | |
//$("div").append('<img src="images/mousewheelupdown.png" />'); | |
$(".wheel3").bind("mousewheel", function(event, delta) { | |
dodo() | |
chekingup() | |
if (delta > 0) { | |
this.value = 1*this.value + 0.1; | |
} else { | |
if (1*this.value > 0) { | |
this.value = 1*this.value - 0.1; | |
} | |
} | |
return false; | |
}); | |
}); | |
//============================текущие дата/время============================================ | |
var date = new Date(); | |
document.getElementById('datem').value=date.getMonth() + 1; | |
document.getElementById('dated').value=date.getDate(); | |
document.getElementById('datey').value=date.getFullYear(); | |
document.getElementById('timeh').value=date.getHours(); | |
document.getElementById('timem').value=date.getMinutes() | |
//========================================================================================== | |
function dodo(){ //общая функция отображения | |
var time=1*document.getElementById('timeh').value+1*document.getElementById('timem').value/60; | |
var jd=compute_to_JD(1*document.getElementById('datey').value,1*document.getElementById('datem').value,1*document.getElementById('dated').value,0,0) | |
var T=12+24*(jd-2456193.5)/365.25 | |
//alert(time) | |
Po = []; | |
m=0; | |
draw_star(T+time-12) | |
} | |
var lambda=37;//Долгота | |
var zm=39;//Зенит | |
var rad=180/Math.PI;//Формула перевода | |
const A=0.0657098; | |
const C=1.002738; | |
var inc=0; //Инкримент для служебных целей | |
//=========Инициализация канвы | |
var LC = LibCanvas.extract({}); //LibCanvas => LC (сокр) | |
libc = new LibCanvas(document.getElementById('main')); | |
var canvas = document.getElementById('main'); //DOM Canvasx | |
var ct = canvas.getContext('2d-libcanvas'); //Получаем контекст | |
var ct2 = canvas.getContext('2d-libcanvas'); //Получаем контекст | |
//var ct = libc.ctx; | |
/* img = new Image(); | |
img.src = "http://astrokot.ru/planetarium/dev/3px.png"; | |
img.onload = function(){ | |
draw_star(inc); | |
}*/ | |
function draw_star(hour){ //Функция вычисления времени и отрисовки | |
/*var circle = new LC.Circle( 300,300, 300 );//Главный круг | |
ct.clip(circle);*/ | |
ct.restore(); | |
var R_circle=300*kimg | |
ct.fillAll('#f0ebeb');//Фон | |
//alert(R_circle) | |
var Mcircle = new LC.Circle( x_circle,y_circle, R_circle );//Главный круг | |
/*ct.save() | |
ct.clip(Mcircle); | |
*/ | |
ct.stroke(Mcircle, 'black');//Кантик | |
ct.fill(Mcircle, 'rgba(0,0,150,1)');//Фон | |
var phi=1*document.getElementById('phi').value;//Широта | |
var year=1*document.getElementById('datey').value; | |
var month=1*document.getElementById('datem').value; | |
var day=1*document.getElementById('dated').value; | |
//var hour=12; | |
var min=0; | |
var a=(14-1*month)/12; | |
a=a-(a%1) | |
var y=1*year+4800-a; | |
y=y-(y%1) | |
var m=1*month+12*a-3; | |
//m=m-(m%1) | |
var jdn=day+(Math.floor((153*m)+2)/5)+Math.floor(365*y)+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400)-32045; | |
/*var t=((1*2455927-2415020)/36525); | |
var r=6.6460656+2400.051262*t*1+0.00002581*t*1*t; | |
var u=1*r-24*(1*year-1900); | |
var B=24-u; | |
var to=(1*jdn-2455927.500000)*A-1*B | |
var gmt1=1*hour+1*min/60; | |
var gst=1*gmt1*C+1*to;//GST*/ | |
sr=15*hour;//Поворотный угол | |
//=========Открисовка звезд | |
if (sunz<90){ | |
ct.fill(Mcircle, 'rgba(176,176,220,1)');//Обновляем круг | |
}else{ | |
if (sunz<108){ | |
var blue=Math.round(220*(1 + (90-sunz)/18)) | |
var red=Math.round(176*Math.pow((1 + (90-sunz)/18),2)) | |
var green=Math.round(176*Math.pow((1 + (90-sunz)/18),2)) | |
ct.fill(Mcircle, 'rgba('+red+','+green+','+blue+',1)');//Обновляем круг | |
}else{ | |
ct.fill(Mcircle, 'rgba(0,0,0,1)');//Обновляем круг | |
} | |
} | |
if (consts==1){ | |
for (var i = 0; i < (lns.length); i++){ | |
var dec1=lns[i][1];//Склонение | |
var t1=sr-lns[i][0]*15;//Прямое восхождение | |
var dec2=lns[i][3];//Склонение | |
var t2=sr-lns[i][2]*15;//Прямое восхождение | |
var zl1=atmospheric_refraction(equatorial_to_horizontal(dec1, t1, phi)[1]);//Зенитное расстояние | |
var zl2=atmospheric_refraction(equatorial_to_horizontal(dec2, t2, phi)[1]);//Зенитное расстояние | |
// var mag=Math.round(stars[i][2]/100);//Магнитуда | |
if ((zl1<90)&(zl2<90)){//Все звезды, которые выше горизонта | |
// var r_star=(4-mag); | |
var Az1=equatorial_to_horizontal(dec1, t1, phi)[0]; //Азимут | |
var Az2=equatorial_to_horizontal(dec2, t2, phi)[0]; //Азимут | |
var cor1=to_xy(zl1,Az1); | |
var cor2=to_xy(zl2,Az2); | |
var x1=(1*cor1[0]).toFixed(0);//Абцисс координата | |
var y1=(1*cor1[1]).toFixed(0);//Ординат | |
var x2=(1*cor2[0]).toFixed(0);//Абцисс координата | |
var y2=(1*cor2[1]).toFixed(0);//Ординат | |
lineX = new LC.Line( new LC.Point( x1, y1 ), new LC.Point( x2, y2 ) ); | |
ct.stroke(lineX, '#483D8B'); | |
//var circl = new LC.Circle( x,y,r_star);//Рисуем круг | |
//ct.fill(circl, '#FFF');Белый круг | |
//Po[m] = new LC.Point( x, y ); | |
////LC.mouse.addEvent('click', function (e) {alert('Звезда!');}); | |
// ct.drawImage({image:img, center: [x,y], size: [10, 10] }); | |
// m++; | |
} | |
} | |
} | |
if (consts2==1){ | |
for (var i = 0; i < (cnts.length); i++){ | |
var dec1=cnts[i][1];//Склонение | |
var t1=sr-cnts[i][0]*15;//Прямое восхождение | |
var name=cnts[i][2];//Прямое восхождение | |
var zl1=atmospheric_refraction(equatorial_to_horizontal(dec1, t1, phi)[1]);//Зенитное расстояние | |
// var mag=Math.round(stars[i][2]/100);//Магнитуда | |
if (zl1<90){//Все звезды, которые выше горизонта | |
// var r_star=(4-mag); | |
var Az1=equatorial_to_horizontal(dec1, t1, phi)[0]; //Азимут | |
var cor1=to_xy(zl1,Az1); | |
var x1=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y1=(cor1[1]*1).toFixed(0);//Ординат | |
ct.text({ | |
text: name, | |
padding: [ 1*y1, 1*x1], | |
size:11, | |
color:'rgba(100,100,120,1)' | |
}); | |
//var circl = new LC.Circle( x,y,r_star);//Рисуем круг | |
//ct.fill(circl, '#FFF');Белый круг | |
//Po[m] = new LC.Point( x, y ); | |
////LC.mouse.addEvent('click', function (e) {alert('Звезда!');}); | |
// ct.drawImage({image:img, center: [x,y], size: [10, 10] }); | |
// m++; | |
} | |
} | |
} | |
var magmax=document.getElementById('maxmag').value*1 | |
var k1=document.getElementById('k1').value*1 | |
var k2=document.getElementById('k2').value*1 | |
if (planetinfo2==0){ | |
document.getElementById('planetsmap').style.display='none' | |
}else{ | |
document.getElementById('planetsmap').style.display='' | |
} | |
if (planetinfo1==0){ | |
document.getElementById('planets_info').style.display='none' | |
}else{ | |
document.getElementById('planets_info').style.display='' | |
} | |
//alert(planetinfo2+' / '+document.getElementById('planets_info').style.display) | |
for (var i = 0; i < (stars.length); i++){ | |
var decr=stars[i][1];//Склонение | |
var tr=sr-stars[i][0];//Прямое восхождение | |
var zl=atmospheric_refraction(equatorial_to_horizontal(decr, tr, phi)[1]);//Зенитное расстояние | |
var mag=Math.round(stars[i][2]/100);//Магнитуда | |
if (zl<90 && mag<magmax){//Все звезды, которые выше горизонта | |
var r_star=k1*1+k2*(magmax-mag); | |
var Az=equatorial_to_horizontal(decr, tr, phi)[0]; //Азимут | |
var cor1=to_xy(zl,Az); | |
var x=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y=(cor1[1]*1).toFixed(0);//Ординат | |
if (mag<1.5){ | |
var circl3 = new LC.Circle( x,y,r_star*2); | |
ct.fill(circl3, ct | |
.createRadialGradient( | |
new LC.Circle(x, y, 1), | |
new LC.Circle(x, y, r_star*2)) | |
.addColorStop({ | |
'0.0': 'rgba(200,200,200,0.4)', | |
'1.0': 'rgba(200,200,200,0)' | |
})); | |
var circl = new LC.Circle( x,y,r_star*0.8);//Рисуем круг | |
ct.fill(circl, '#FFF');//Белый круг | |
}else{ | |
var circl = new LC.Circle( x,y,r_star);//Рисуем круг | |
ct.fill(circl, '#FFF');//Белый круг | |
} | |
Po[m] = new LC.Point( x, y ); | |
//LC.mouse.addEvent('click', function (e) {alert('Звезда!');}); | |
// ct.drawImage({image:img, center: [x,y], size: [10, 10] }); | |
m++; | |
} | |
} | |
ctx.fillStyle='#000' | |
ctx.fillRect(0,0,800,800) | |
//======================================Планеты====================================================================== | |
var res=""; | |
var kp1=document.getElementById('kp1').value*1 | |
var kp2=document.getElementById('kp2').value*1 | |
var date=year+'/'+month+'/'+day | |
for (var i = 0; i < (planets.length); i++){ | |
var tyu=planetposition(planets[i][0], planets[i][1], jdn, planets[i][3], planets[i][4], planets[i][5], planets[i][6], planets[i][7], planets[i][8],planets[i][9],planets[i][10]) | |
if (i==0){ | |
sundelta=tyu[1] | |
} | |
if (planetinfo1==1){ | |
res+="<tr><td>"+planets[i][8]+"</td><td>"+deltafloor(tyu[1])+"</td><td>"+alphafloor(tyu[0])+"</td><td>"+(tyu[3]).toFixed(3)+"</td><td>"+(tyu[2]).toFixed(1)+"</td><td>"+(2*tyu[4]).toFixed(1)+"</td></tr>"; | |
} | |
var zl=atmospheric_refraction(equatorial_to_horizontal(tyu[1], sr-15*tyu[0], phi)[1]);//Зенитное расстояние | |
if (i==0){ | |
sunz=zl | |
} | |
//alert(tyu) | |
if (i>0){ | |
draw(ctx, tyu[4], i,tyu[3],planets[i][8], date); | |
} | |
if (zl<90){ | |
var Az=equatorial_to_horizontal(tyu[1], sr-15*tyu[0], phi)[0]; //Азимут | |
var cor1=to_xy(zl,Az); | |
var x=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y=(cor1[1]*1).toFixed(0);//Ординат | |
var R=Math.round((9-1*tyu[2])*kp2); | |
if (R>10){ | |
R=10 | |
var R1=20*R | |
if (planets[i][8]=='Солнце'){ //Делаем большой ореол для Солнца | |
R=7 | |
sunx=x | |
suny=y | |
} | |
}else{ | |
var R1=kp1*R | |
} | |
var circl = new LC.Circle( x,y,R); //Рисуем круг планеты | |
var circl2 = new LC.Circle( x,y,R1); //Рисуем круг ореола | |
ct.fill(circl, 'rgba('+planets[i][11][0]+','+planets[i][11][1]+','+planets[i][11][2]+',1)'); //заливаем круг планеты | |
//пишем название планеты | |
ct.text({ | |
text: planets[i][8], | |
padding: [ 1*y, 1*x], | |
size:15, | |
color:'rgba('+planets[i][11][0]+','+planets[i][11][1]+','+planets[i][11][2]+',1)' | |
}); | |
//alert(planets[i][11][0]) | |
//Заливаем ореол градиентом----- | |
ct.fill(circl2, ct | |
.createRadialGradient( | |
new LC.Circle(x, y, 1), | |
new LC.Circle(x, y, R1)) | |
.addColorStop({ | |
'0.0': 'rgba('+planets[i][11][0]+','+planets[i][11][1]+','+planets[i][11][2]+',0.85)', | |
'1.0': 'rgba('+planets[i][11][0]+','+planets[i][11][1]+','+planets[i][11][2]+',0)' | |
}));/**/ | |
//---------- | |
} | |
} | |
document.getElementById('planets_info').innerHTML="<table border='1'></td><td>Имя</td><td>α</td><td>δ</td><td>Фаза</td><td>Блеск</td><td>Dia</td></tr>"+res+"</table>"; | |
//============================================================================================================= | |
for(var i=0; i<comets.length; i++){ | |
var jdn=compute_to_JD(1*document.getElementById('datey').value,1*document.getElementById('datem').value,1*document.getElementById('dated').value, 1*document.getElementById('timeh').value, 1*document.getElementById('timem').value) | |
var coo=(parab(1*jdn,comets[i][1],comets[i][0],comets[i][4],comets[i][3],comets[i][2],comets[i][6])) | |
//alert(comets[i][5]) | |
var alpha=coo[2] | |
var deltac=coo[1] | |
//alert(coo) | |
var zc=atmospheric_refraction(equatorial_to_horizontal(deltac, sr-15*alpha, phi)[1]); | |
if (zc<90){ | |
var Az=equatorial_to_horizontal(deltac, sr-15*alpha, phi)[0]; //Азимут | |
var cor1=to_xy(zc,Az); | |
var x=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y=(cor1[1]*1).toFixed(0);//Ординат | |
var circl = new LC.Circle( x,y,4); | |
/* var k=(suny-y)/(sunx-x) | |
if (coo[3]*1<5){ | |
var l0=Math.pow((7-coo[3]*1),2) | |
var x0=l0/(k*k+1) | |
var l1=Math.pow((7-coo[3]*1),2)*0.6 | |
var x1=l1/((k-0.2)*(k-0.2)+1) | |
var l2=Math.pow((7-coo[3]*1),2)*0.6 | |
var x2=l2/((k+0.2)*(k+0.2)+1) | |
}else{ | |
var l0=0 | |
var x0=l0/(k*k+1) | |
var l1=0 | |
var x1=l0/(k*k/4+1) | |
var l2=0 | |
var x2=l0/(k*k*4+1) | |
} | |
*/ | |
/*ct.text({ | |
text: comets[i][5]+' / '+coo[3].toFixed(0), | |
padding: [ 1*y-5, 1*x+5], | |
size:15, | |
color:'rgba(250,250,250,1)' | |
}); | |
ct.fill(circl, '#FFF'); | |
ct.text({ | |
text: comets[i][5]+' / '+coo[3].toFixed(0), | |
padding: [ 1*y-5, 1*x+5], | |
size:15, | |
color:'rgba(250,250,250,1)' | |
}); | |
lineXz = new LC.Line( new LC.Point( 1*x, 1*y ), new LC.Point( kz*2*x0+1*x , 1*y+kz*k*2*x0 ) ); | |
ct.stroke(lineXz, '#FFF'); | |
lineXz = new LC.Line( new LC.Point( 1*x, 1*y ), new LC.Point( kz*2*x1+1*x , 1*y+kz*(k-0.2)*2*x1/2 ) ); | |
ct.stroke(lineXz, '#FFF'); | |
lineXz = new LC.Line( new LC.Point( 1*x, 1*y ), new LC.Point( kz*2*x2+1*x , 1*y+kz*(k+0.2)*2*x2*2 ) ); | |
ct.stroke(lineXz, '#FFF'); */ | |
//alert(k) | |
/* | |
if (coo[3]*1<5){ | |
var pO = new LibCanvas.Point(x, y); | |
var imin=Math.round(15*(7-coo[3]*1)) | |
var i=1 | |
do{ | |
var kk=Math.pow(1/i, (coo[3]*1+10)/17); | |
var circll = new LC.Circle( 1*x+kz*i,1*y+k*kz*i,Math.round(1*Math.sqrt(i))); | |
ct.fill(circll, ct | |
.createRadialGradient( | |
new LC.Circle(1*x+kz*i, 1*y+k*kz*i, 1), | |
new LC.Circle(1*x+kz*i, 1*y+k*kz*i,1*Math.round(1*Math.sqrt(i)))) | |
.addColorStop({ | |
'0.0': 'rgba(250,250,250,'+kk*(imin+1-i)/(imin+2)+')', | |
'1.0': 'rgba(250,250,250,'+0.1*kk*(imin+1-i)/(imin+2)+')' | |
})); | |
i+=2; | |
}while(i<imin) | |
} | |
*/ | |
/* var angle=Math.atan(k); | |
if (coo[3]*1<5){ | |
var ppO = new LibCanvas.Point(1*x, 1*y); | |
var imin=1*Math.round(15*(7-coo[3]*1)) | |
var i=1 | |
do{ | |
var kk=Math.pow(1/i, (coo[3]*1+10)/17); | |
var pA = new LibCanvas.Point((1*x+kz*i*1),1*(1*y)); | |
pA.rotate(angle, ppO); | |
var circll = new LC.Circle( pA.x,pA.y,1*Math.round(1*Math.sqrt(i))); | |
ct.fill(circll, ct | |
.createRadialGradient( | |
new LC.Circle(pA.x,pA.y, 1), | |
new LC.Circle(pA.x,pA.y,1*1*Math.round(1*Math.sqrt(i)))) | |
.addColorStop({ | |
'0.0': 'rgba(250,250,250,'+kk*(imin+1-i)/(imin+2)+')', | |
'1.0': 'rgba(250,250,250,'+0.1*kk*(imin+1-i)/(imin+2)+')' | |
})); | |
i+=2; | |
}while(i<imin*kimg) | |
}else{ | |
}*/ | |
lineX = new LC.Line( new LC.Point( 1*x-4, 1*y ), new LC.Point(1*x+4, 1*y ) ); | |
lineY = new LC.Line( new LC.Point(1*x, 1*y-4 ), new LC.Point(1*x, 1*y+4 ) ); | |
ct.stroke(lineX, 'white'); | |
ct.stroke(lineY, 'white'); | |
ct.text({ | |
text: 'Comet', | |
padding: [ 1*y-5, 1*x+5], | |
size:15, | |
color:'rgba(250,250,250,1)' | |
}); | |
} | |
} | |
//==============================Moon============================================================================== | |
var moon=moondrawf(1*document.getElementById('datey').value,1*document.getElementById('datem').value,1*document.getElementById('dated').value, 1*document.getElementById('timeh').value, 1*document.getElementById('timem').value) | |
var zl=atmospheric_refraction(equatorial_to_horizontal(moon[2]*rad, sr-rad*moon[1], phi)[1]); | |
document.getElementById('moonalpha').innerHTML=alphafloor(rad*moon[1]/15); | |
document.getElementById('moondelta').innerHTML=deltafloor(rad*moon[2]); | |
var D=2*Math.asin(1735/moon[3])*rad | |
document.getElementById('moonr').innerHTML=Math.round(moon[3]); | |
document.getElementById('moond').innerHTML=deltafloor(D); | |
//alert(zl) | |
if (zl<90){ | |
var Az=equatorial_to_horizontal(moon[2]*rad, sr-rad*moon[1], phi)[0]; //Азимут | |
var cor1=to_xy(zl,Az); | |
var x=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y=(cor1[1]*1).toFixed(0);//Ординат | |
var RL=10*document.getElementById('kl1').value*1 | |
var circl = new LC.Circle( x,y,RL); | |
ct.fill(circl, '#FFF'); | |
ct.text({ | |
text: 'Луна', | |
padding: [ 1*y-5, 1*x+5], | |
size:15, | |
color:'rgba(250,250,250,1)' | |
}); | |
var circl2 = new LC.Circle( x,y,RL*document.getElementById('kl2').value*1); | |
ct.fill(circl2, ct | |
.createRadialGradient( | |
new LC.Circle(x, y, 1), | |
new LC.Circle(x, y, RL*document.getElementById('kl2').value*1)) | |
.addColorStop({ | |
'0.0': 'rgba(250,250,250,1)', | |
'1.0': 'rgba(250,250,250,0)' | |
})); | |
} | |
//================================================================================================================== | |
// | |
/*if (sunz<90){ | |
ct.fill(circle, ct | |
.createRadialGradient( | |
new LC.Circle(300, 300, 250), | |
new LC.Circle(300, 300, 300)) | |
.addColorStop({ | |
'0.0': 'rgba(150,150,200,0)', | |
'1.0': 'rgba(150,150,200,0.5)' | |
})); | |
} | |
*/ | |
var xtst=x; | |
var ytst=y; | |
ct.save() | |
ct2.clip(Mcircle); | |
var delta=70; | |
var deltap=70; | |
do{ | |
var aaa=0; | |
var i=0; | |
do{ | |
var P1=new LibCanvas.Point(x,y); | |
var coor=equatorial_to_horizontal(delta, sr-aaa, phi); | |
//if(coor[1]<90){ | |
var cor1=to_xy(coor[1],coor[0]); | |
var x=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y=(cor1[1]*1).toFixed(0);//Ординат | |
var P2=new LibCanvas.Point(x,y); | |
if ((delta==deltap)&(xtst!=P1.x)){ | |
lineX = new LC.Line( P1, P2 ); | |
ct2.stroke(lineX, 'rgba(250,250,250,0.1)'); | |
}else{ | |
} | |
//} | |
deltap=delta | |
aaa+=15; | |
}while(aaa<=360); | |
delta-=20; | |
}while(delta>=-70) | |
var xtst2=x; | |
var ytst2=y; | |
var alpha=0; | |
var alphap=0; | |
var i=0 | |
do{ | |
var delta=70; | |
do{ | |
var P1=new LibCanvas.Point(x,y); | |
//var cp=coor | |
var coor=equatorial_to_horizontal(delta, sr-alpha, phi); | |
//if((coor[1]<90) || (cp[1]<90)){ | |
var cor1=to_xy(coor[1],coor[0]); | |
var x=(cor1[0]*1).toFixed(0);//Абцисс координата | |
var y=(cor1[1]*1).toFixed(0);//Ординат | |
var P2=new LibCanvas.Point(x,y); | |
if (i=!0){ | |
if ((alpha==alphap)&(xtst2!=P1.x)){ | |
lineX = new LC.Line( P1, P2 ); | |
ct2.stroke(lineX, 'rgba(250,250,250,0.1)'); | |
} | |
} | |
//} | |
alphap=alpha | |
delta-=20; | |
}while(delta>=-70); | |
i++; | |
alpha+=15; | |
}while(alpha<=360); | |
} | |
libc.listenMouse(); | |
libc.mouse.addEvent('click', function (e) { | |
// | |
//document.getElementById('star_info').innerHTML=''; | |
for (var i = 0; i < Po.length; i++){ if (e.offset.distanceTo(Po[i])<5) { | |
var coord = Po[i].toObject(); | |
lineX = new LC.Line( new LC.Point( coord['x']-4, coord['y'] ), new LC.Point( coord['x']+4, coord['y'] ) ); | |
lineY = new LC.Line( new LC.Point( coord['x'], coord['y']-4 ), new LC.Point( coord['x'], coord['y']+4 ) ); | |
ct.stroke(lineX, 'white'); | |
ct.stroke(lineY, 'white'); | |
//========Вывод информации о звезде при клике на ней============================================ | |
var x_star=coord['x']; // получаем значение абциссы звезды | |
var y_star=coord['y'];// получаем значение ординаты звезды | |
var z_star=90*Math.sqrt(Math.pow(300-x_star,2)+Math.pow(300-y_star,2))/300 //вычисляем зенитное расстояние | |
var a_tan_componenta=(300-x_star)*90/300; // считаем первый аргумент для тангенса азимута | |
var b_tan_componenta=(y_star-300)*90/300; // второй аргумент для тангенса азимута | |
var Azimuth_star=Math.atan2(a_tan_componenta,b_tan_componenta)*180/Math.PI //считаем азимут | |
var equatorial_coordinates_star=horizontal_to_equatorial(90-z_star, phi, Azimuth_star,inc) //получаем массив экваториальных координат | |
var RA_star=equatorial_coordinates_star[0]; //прямое восхождение звезды в градусах | |
var DEC_star=equatorial_coordinates_star[1]; //склонение звезды в градусах | |
for (var i = 0; i < (stars.length); i++){ | |
var decr=stars[i][1];//Склонение | |
var tr=stars[i][0];//Прямое восхождение | |
if((Math.abs(decr-DEC_star)<1)&(Math.abs(tr-RA_star)<1)){ //Условие: координат звезды не должны отличаться от координаты точки клика более чем на 1 градус | |
var mag_star_can=stars[i][2]/100 //блеск звезды | |
if(mag_star_can<4){ | |
//document.getElementById('star_info').innerHTML+='<br>Звезда! RA='+RA_star.toFixed(1)+' DEC='+DEC_star.toFixed(1)+' m= '+mag_star_can | |
// alert('Звезда! RA='+RA_star.toFixed(1)+'<br>DEC='+DEC_star.toFixed(1)+' m= '+mag_star_can) | |
} | |
} | |
} | |
//=================================================================================== | |
;break; | |
}}/**/ | |
}); | |
dodo(); | |
</script> | |
<div id='star_info'></div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment