Skip to content

Instantly share code, notes, and snippets.

@Kirilliann
Created June 1, 2013 10:16
Show Gist options
  • Save Kirilliann/5689910 to your computer and use it in GitHub Desktop.
Save Kirilliann/5689910 to your computer and use it in GitHub Desktop.
<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>&alpha;</td><td>&delta;</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