Модераторы: Ulmo, Булдаков Сергей
LeonidOS писал(а):у нас на сервере ваши исполняемые файлы?
Ни в коем случае!!!
С точки зрения безопасности я категорически против!
Опыт у нас был - и очень печальный....
Не обижайтесь, но Вас мы совсем не знаем. А угрозы в наш адрес были...
"Не в глаз, так в бровь" - если не из календаря берем данные,Астрометрические алгоритмы Меюса писал(а):From an accurate ephemeris, we take the following values:
ShuBlog писал(а):Итак, речь пойдёт о двух функциях PHP с названием date_sunrise и date_sunset. Рассмотрим их примеры.
date_sunrise(time(),SUNFUNCS_RET_STRING,35.68, 139.6, 90+50/60, 9);
date_sunset(time(),SUNFUNCS_RET_STRING,35.68, 139.6, 90+50/60, 9);
Функции принимают 6 параметров:
1.timestamp. Время и дата, для которой определяется восход и закат в формате UNIX.
2.format. Формат возвращаемого значения. Может принимать одно из трёх значений: SUNFUNCS_RET_STRING (возвращает строку со значением от 00:00 до 23:59), SUNFUNCS_RET_DOUBLE (возвращает время в виде величины с плавающей точкой от 0 до 23.99), SUNFUNCS_RET_TIMESTAMP (возвращает время в UNIX формате).
3.latitude. Или по русски “широта”. Для северной широты используются положительные числа, для южной – отрицательные.
4.longitude. Или “долгота”. Для восточное долготы используются положительные числа, для западной – отрицательные.
5.zenith. Зенит солнца (в градусах). Выделяют четыре основных значения. Официальный (offical): 90 градусов 50’. Гражданский (civil): 96 градусов. Навигационный (nautical): 102 градуса. Астрономический (astronomical): 108 градусов.
6.gmtoffset. Смещение от времени по Гринвичу в часах. Иными словами часовой пояс по GMT.
Теперь смотрим на пример. В качестве первого параметра мы используем функцию time(). В качестве второго параметра выбираем SUNFUNCS_RET_STRING.
Третий и четвёртый параметр – координаты нужного нам города. В данном случае Токио. Однако не забываем, что 35°41’ будет записано не как 35.41, а как 35.68. Думаю не надо объяснять почему. В интернете я нашёл интересный сервис, который даёт и обычные координаты, и десятичные. Например, для Токио я нашёл координаты здесь.
Пятый параметр указываем по официальному – 90+50/60 (90°50’). Шестой параметр – для Токио часовой пояс +9. Ставим цифру 9.
Теперь мы знаем дату восхода и заката для Токио. По ссылке вы найдёте работающий пример, где написан его код, и указано время для Токио и для Санкт-Петербурга.
Сегодня в Санкт-Петербурге восход в 10:00, а закат в 16:09
В то время как в Токио восход в 06:50, а закат в 16:41
А вот и код.
< ?
$spb_sunrise = date_sunrise(time(), SUNFUNCS_RET_STRING, 60.25, 29.6, 90+50/60, 3);
$spb_sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 60.25, 29.6, 90+50/60, 3);
$tokyo_sunrise = date_sunrise (time(), SUNFUNCS_RET_STRING, 35.68, 139.6, 90+50/60, 9);
$tokyo_sunset = date_sunset (time(), SUNFUNCS_RET_STRING, 35.68, 139.6, 90+50/60, 9);
echo "Сегодня в Санкт-Петербурге восход в <b>".$spb_sunrise."</b>, а закат в <b>".$spb_sunset."</b><br>";
echo "В то время как в Токио восход в <b>".$tokyo_sunrise."</b>, а закат в <b>".$tokyo_sunset."</b>";
? >
LeonidOS писал(а):Если интересно, могу выложить книгу "Астрометрические алгоритмы" Меюса
А еще есть книга Астрономические формулы для калькуляторов, того же автора.
O. Montenbruck, T. Pfleger
ASTRONOMY ON THE PERSONAL
COMPUTER
(3rd edition 1997)
(*-----------------------------------------------------------------------*)
(* MINI_SUN: low precision solar coordinates (approx. 1') *)
(* T : time in Julian centuries since J2000 *)
(* ( T=(JD-2451545)/36525 ) *)
(* RA : right ascension (in h; equinox of date) *)
(* DEC: declination (in deg; equinox of date) *)
(*-----------------------------------------------------------------------*)
procedure TFormMain.MINI_SUN(T: REAL; var RA, DEC: REAL);
CONST P2 = 6.283185307; COSEPS=0.91748; SINEPS=0.39778;
VAR L,M,DL,SL,X,Y,Z,RHO: REAL;
FUNCTION FRAC(X:REAL):REAL;
BEGIN X:=X-TRUNC(X); IF (X<0) THEN X:=X+1; FRAC:=X END;
BEGIN
M := P2*FRAC(0.993133+99.997361*T);
DL := 6893.0*SIN(M)+72.0*SIN(2*M);
L := P2*FRAC(0.7859453 + M/P2 + (6191.2*T+DL)/1296E3);
SL := SIN(L);
X:=COS(L); Y:=COSEPS*SL; Z:=SINEPS*SL; RHO:=SQRT(1.0-Z*Z);
DEC := (360.0/P2)*ARCTAN(Z/RHO);
RA := ( 48.0/P2)*ARCTAN(Y/(X+RHO)); IF (RA<0) THEN RA:=RA+24.0;
END;
(*-----------------------------------------------------------------------*)
(* MINI_MOON: low precision lunar coordinates (approx. 5'/1') *)
(* T : time in Julian centuries since J2000 *)
(* ( T=(JD-2451545)/36525 ) *)
(* RA : right ascension (in h; equinox of date) *)
(* DEC: declination (in deg; equinox of date) *)
(*-----------------------------------------------------------------------*)
procedure TFormMain.MINI_MOON(T: REAL; var RA, DEC: REAL);
CONST P2 =6.283185307; ARC=206264.8062;
COSEPS=0.91748; SINEPS=0.39778; (* cos/sin(obliquity ecliptic) *)
VAR L0,L,LS,F,D,H,S,N,DL,CB : REAL;
L_MOON,B_MOON,V,W,X,Y,Z,RHO: REAL;
FUNCTION FRAC(X:REAL):REAL;
(* with some compilers it may be necessary to replace *)
(* TRUNC by LONG_TRUNC oder INT if T<-24! *)
BEGIN X:=X-TRUNC(X); IF (X<0) THEN X:=X+1; FRAC:=X END;
BEGIN
(* mean elements of lunar orbit *)
L0:= FRAC(0.606433+1336.855225*T); (* mean longitude Moon (in rev) *)
L :=P2*FRAC(0.374897+1325.552410*T); (* mean anomaly of the Moon *)
LS:=P2*FRAC(0.993133+ 99.997361*T); (* mean anomaly of the Sun *)
D :=P2*FRAC(0.827361+1236.853086*T); (* diff. longitude Moon-Sun *)
F :=P2*FRAC(0.259086+1342.227825*T); (* mean argument of latitude *)
DL := +22640*SIN(L) - 4586*SIN(L-2*D) + 2370*SIN(2*D) + 769*SIN(2*L)
-668*SIN(LS)- 412*SIN(2*F) - 212*SIN(2*L-2*D) - 206*SIN(L+LS-2*D)
+192*SIN(L+2*D) - 165*SIN(LS-2*D) - 125*SIN(D) - 110*SIN(L+LS)
+148*SIN(L-LS) - 55*SIN(2*F-2*D);
S := F + (DL+412*SIN(2*F)+541*SIN(LS)) / ARC;
H := F-2*D;
N := -526*SIN(H) + 44*SIN(L+H) - 31*SIN(-L+H) - 23*SIN(LS+H)
+ 11*SIN(-LS+H) -25*SIN(-2*L+F) + 21*SIN(-L+F);
L_MOON := P2 * FRAC ( L0 + DL/1296E3 ); (* in rad *)
B_MOON := ( 18520.0*SIN(S) + N ) / ARC; (* in rad *)
(* equatorial coordinates *)
CB:=COS(B_MOON);
X:=CB*COS(L_MOON); V:=CB*SIN(L_MOON); W:=SIN(B_MOON);
Y:=COSEPS*V-SINEPS*W; Z:=SINEPS*V+COSEPS*W; RHO:=SQRT(1.0-Z*Z);
DEC := (360.0/P2)*ARCTAN(Z/RHO);
RA := ( 48.0/P2)*ARCTAN(Y/(X+RHO)); IF RA<0 THEN RA:=RA+24.0;
END;
L0:= FRAC(0.606433+1336.855225*T); (* mean longitude Moon (in rev) *)
L :=P2*FRAC(0.374897+1325.552410*T); (* mean anomaly of the Moon *)
LS:=P2*FRAC(0.993133+ 99.997361*T); (* mean anomaly of the Sun *)
D :=P2*FRAC(0.827361+1236.853086*T); (* diff. longitude Moon-Sun *)
F :=P2*FRAC(0.259086+1342.227825*T); (* mean argument of latitude *)
Administrator писал(а):Удачи вам в этом нелегком труде!
На голову шлем наденьте на всякий
Благодарю Вас за предоставленную мне возможность ПЕРВЫМ посмотреть результат Вашей работы, но мне придется, наверное, Вас разочаровать, так как я не смогу достоверно
Мне всегда импонировали люди, которые в короткий срок могли разобраться с сущностью какой либо проблемы, в нашем случае – это Юлианский период, который является основным аргументом для всех вычислений, и я рад за Вас, что Вы откопали в ИНЕТЕ программы, написанные на Паскале, мне пришлось немного труднее. Я думаю, что теперь мои исходники Вам не потребуются, раз найдены оригиналы.
По Луне.
Еще внимательно почитайте в книге о восходе и заходе Луны, так как, в некоторые дни, Луна либо не восходит, либо не заходит, как это получилось 01/01/2010. В этот день на 00 часов Луна была уже на небе, то есть не всходила, а только заходила.
Rise Set
31.12.2009 0
01.01.2010 0
02.01.2010 0
03.01.2010 0
04.01.2010 0
05.01.2010 ----- 0
06.01.2010 === 1
07.01.2010 2
08.01.2010 3
09.01.2010 4
10.01.2010 5
11.01.2010 6
12.01.2010 7
13.01.2010 8
14.01.2010 9
15.01.2010 10
16.01.2010 11
17.01.2010 12
18.01.2010 13
19.01.2010 14
20.01.2010 15
21.01.2010 ----- 16
22.01.2010 === 1
23.01.2010 2
24.01.2010 3
25.01.2010 4
26.01.2010 5
27.01.2010 6
28.01.2010 7
29.01.2010 8
30.01.2010 9
31.01.2010 10
01.02.2010 11
02.02.2010 12
03.02.2010 ----- 13
04.02.2010 === 1
05.02.2010 2
06.02.2010 3
07.02.2010 4
08.02.2010 5
09.02.2010 6
10.02.2010 7
11.02.2010 8
12.02.2010 9
13.02.2010 10
14.02.2010 11
15.02.2010 12
16.02.2010 13
17.02.2010 14
18.02.2010 15
19.02.2010 ----- 16
20.02.2010 === 1
21.02.2010 2
22.02.2010 3
23.02.2010 4
24.02.2010 5
25.02.2010 6
26.02.2010 7
27.02.2010 8
28.02.2010 9
01.03.2010 10
02.03.2010 11
03.03.2010 12
04.03.2010 ----- 13
05.03.2010 === 1
06.03.2010 2
07.03.2010 3
08.03.2010 4
09.03.2010 5
10.03.2010 6
11.03.2010 7
О временах.
Возможно Вы обратили внимание и учли это, что в астрономии ВСЕ просчитывается по Гринвичскому времени (UTC или GMT), а в месте наблюдения существуют
Среднее местное время,
Истинное местное время
Поясное время (зимнее/летнее)
Поэтому при вычислении времен восхода, заката, полдня следует учитывать эти нюансы.
Чтобы точно проверить работу Вашей программы, я посоветую найти в ИНЕТЕ, хотя бы даже и на ASTROGALAXY, программу планетария, а в этих программах обязательно должны вычисляться все времена для любой точки Земли, по крайней мере я так думаю.
В настоящий момент я немного поостыл к астрономии, меня сейчас интересует создание устройства на базе КОМПА, контролирующее линейные сигналы низкой частоты, а более проще – переговорное устройство типа телефона, а заодно подучиться работать со звуковой картой (почти что на уровне оборудования).
Обращу Ваше внимание на мою ошибку по поводу восхода и захода Луны.
Недорозумение возникло из-за ассоциаций - подсознательно предполагается, что заход должен быть позже восхода, а, следовательно, расположение клетки со временем захода ожидается после клетки со временем восхода. Это меня и смутило.
Сергей писал(а):Алексей, здравствуйте!
Посмотрел Ваше решение, и вот какие у меня возникли вопросы и пожелания:
Минеральные Воды по латинице так и пишутся Mineralnye Vody, но это так ...
Опция TIME - мне понравилась, дает широкую перспективу.
Выбор ЗИМНЕГО и ЛЕТНЕГО времени желательно сделать в автомате,
Кнопка Add не учитывакт уже введенные города и нет возможности вводить земные координаты места,
Так же, желательно, уточнить, какое время отображается - ПОЯСНОЕ или СРЕДНЕЕ МЕСТНОЕ.
А так, достаточно прилично, хорошая работа!
С уважением, Сергей.
Идея была в том, чтобы писать именно наМинеральные Воды по латинице так и пишутся Mineralnye Vody,
но это так ...
Если вы о Time Zone, то это должно быть полезно. Рад, чтоОпция TIME - мне понравилась, дает широкую перспективу.
Снова та же проблема. Далеко не во всех странахВыбор ЗИМНЕГО и ЛЕТНЕГО времени желательно сделать в автомате
Это так. Как-то не подумал об этом. Спасибо.Кнопка Add не учитывакт уже введенные города и
нет возможности вводить земные координаты места,
Так же, желательно, уточнить, какое время отображается - ПОЯСНОЕ или СРЕДНЕЕ МЕСТНОЕ.
А так, достаточно прилично, хорошая работа!
Вернуться в Астрономия и компьютеры
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2