Created
June 1, 2013 10:22
-
-
Save Kirilliann/5689926 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
//=========================Значение радиана в градусах==================================================== | |
var rad=180/Math.PI | |
//=========================Тригонометрические функции с углами в градусах================================= | |
//-----------------------Синус---------------------- | |
function sind(a){ | |
return (Math.sin(a*Math.PI/180)) | |
} | |
//---------------------Косинус----------------------- | |
function cosd(a){ | |
return (Math.cos(a*Math.PI/180)) | |
} | |
//========================================================================================================= | |
//===================================Логарифм от а с основание b=========================================== | |
function log_2(a,b){ | |
return (Math.log(a)/Math.log(b)) | |
} | |
//========================================================================================================= | |
//=======================Функция перевода горизонтальных координат в экваториальные======================== | |
function horizontal_to_equatorial(h, phi, A,s) { //На входе получаем h-высота светила, phi-широта места наблюдений, A-азимут светила,s-текущее звездное время | |
A=((A+180)%360); //Переводим азимут в нужный диапазон величин | |
var sinb=sind(h)*sind(phi)+cosd(h)*cosd(phi)*cosd(A); //Синус склонения | |
var cosh=(sind(h)-sind(phi)*sinb)/(cosd(phi)*Math.sqrt(1-sinb*sinb)); //Косинус часового угла | |
var H1=Math.acos(cosh)*rad; //Значение часового угла | |
if (Math.sin(A)<0){ //Перевод часового угла в нужный диапазон величин | |
var H=H1; | |
} else { | |
var H=360-H1; | |
} | |
var delta=Math.asin(sinb)*rad; //Склонение | |
var Alpha=360+s-H; //Прямое восхождение | |
return [Alpha, delta] //Выводим результат в виде массива вида [Восхождение, склонение] | |
} | |
//========================================================================================================= | |
//==========================Перевод экваториальных координат в горизонтальные============================== | |
function equatorial_to_horizontal(d, t, phi){ //На входе получаем d-склонение t-часовой угол phi-широта места наблюдения | |
var z=Math.acos(sind(phi)*sind(d)+cosd(phi)*cosd(d)*cosd(t))*rad; //Зенитное расстояние | |
var sinAzr=(cosd(d)*sind(t)/sind(z)); //Синус азимута | |
var cosAzr=((-cosd(phi)*sind(d)+sind(phi)*cosd(d)*cosd(t))/sind(z)); //Косинус азимута | |
var Azr=Math.atan2(sinAzr,cosAzr)*rad //Значение азимута | |
return [Azr,z]; //Выводим результат в виде массива вида [азимут, зенитка] | |
} | |
//============================================================================================================ | |
//========================Атмосферная рефракция================================================================= | |
function tand(a){ | |
return (Math.tan(a*Math.PI/180)) | |
} | |
function atmospheric_refraction(z){ //Зенитное расстояние в градусах | |
var h=90-z; | |
var a_componenta=10.3/(h+5.11); | |
var b_componenta=tand(h+a_componenta); | |
var refraction=1.02/b_componenta; | |
var z_result=z-refraction/60; | |
return z_result | |
} | |
//============================================Колицество дней в месяце================================================================ | |
function getdays(year,ii){ | |
month[0]=31; | |
if (year%4==0){ | |
month[1]=29; | |
}else{ | |
month[1]=28; | |
} | |
month[2]=31; | |
month[3]=30; | |
month[4]=31; | |
month[5]=30; | |
month[6]=31; | |
month[7]=31; | |
month[8]=30; | |
month[9]=31; | |
month[10]=30; | |
month[11]=31; | |
return month[ii] | |
} | |
//=============================================Массив названий месяцев============================================ | |
var month=new Array(12); | |
month[0]="Января"; | |
month[1]="Февраля"; | |
month[2]="Марта"; | |
month[3]="Апреля"; | |
month[4]="Мая"; | |
month[5]="Июня"; | |
month[6]="Июля"; | |
month[7]="Августа"; | |
month[8]="Сентября"; | |
month[9]="Октября"; | |
month[10]="Ноября"; | |
month[11]="Декабря"; | |
//=============================================================================================================== | |
//=====================================Кадендарные функции======================================================= | |
//----------------------------------Из юлианской даты в календарную--------------------------------------------- | |
function compute_from_JD(JD){ | |
var F,A,B,C,E,G, d,I,m,y,D1,hour, minute; | |
I= Math.floor(JD+0.5); | |
F=JD+0.5-Math.floor(JD+0.5); | |
if (I>2299160){ | |
A=Math.floor((I-1867216.25)/(36524.25)); | |
B=I+1+A-Math.floor(A/4) | |
}else{A=I;B=I}; | |
C=B+1524; | |
D1=Math.floor((C-122.1)/(365.25)); | |
E=Math.floor(365.25*D1); | |
G=Math.floor((C-E)/(30.6001)); | |
d=C-E+F-Math.floor(30.6001*G); //день | |
if (G<13.5){m=G-1}else{m=G-13}; //месяц | |
if (m>2.5) {y=D1-4716} else {y=D1-4715} //год | |
hour=Math.floor(24*(d-Math.floor(d))) //час | |
minute=Math.floor(60*(24*(d-Math.floor(d)))-60*hour) //минута | |
return [y,m,d,hour,minute] | |
} | |
//---------------------------Из календарной в юлианскую-------------------------------------------------------- | |
function compute_to_JD(year,month,day,hour,min){ | |
var a=Math.floor((14-month)/12); | |
var y=year+4800-a; | |
var m=month+12*a-3; | |
var jd=day+(Math.floor(((153*m)+2)/5)+Math.floor(365*y)+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400)-32045+(hour-12)/24+min/(1440)); | |
return jd | |
} | |
//------------------------------------------------------------------------------------------------------------- | |
//=========================Стандартная запись времени===================================== | |
function timefloor(t){ | |
var hour=Math.floor(t); | |
var min=Math.floor(t*60-hour*60); | |
var res=hour+':'+min; | |
return res | |
} | |
//===============================================Преобразование в стандартную запись координат============================= | |
function alphafloor(t){ | |
var hour=Math.floor(t); | |
var min=Math.floor(t*60-hour*60); | |
var res=hour+'<sup>h</sup>'+min+'<sup>m</sup>'; | |
return res | |
} | |
function deltafloor(a){ | |
var houra=Math.floor(a); | |
var mina=Math.floor(a*60-houra*60); | |
var resa=houra+'°'+mina+'`'; | |
return resa | |
} | |
//======================================Получение текущего времени========================================================================= | |
function gettime(a){ | |
var d=Math.floor(a/24); | |
var h=Math.floor(a-d*24); | |
var min=Math.floor((a-d*24)*60-h*60); | |
return [min,h,d] | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment