Верховный Наставник (240355)

Код утилиты для расчета долготы дня по широте и долготе местности




<META content="MSHTML 5.00.3315.2870" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff topMargin=0>
<CENTER>


<TABLE border=0 cellPadding=5 cellSpacing=0 align=center>

<TR>
<TD>
<TABLE border=0 cellPadding=0 cellSpacing=0>

<TR vAlign=top>

<TD>
<CENTER><!-- BEGIN OF CONTENT -->
<SCRIPT language=JavaScript>
<!-- Hide
var P1,P2,DR,F,J

function init() {
today= new Date()
ID=today.getDate()
IM=today.getMonth()+1
IY=today.getYear()+1900
B5=55.02
L5=82.5
H=3
P1=3.14159265
P2=2.*P1
DR=P1/180.
document.suncalc.ID.value=ID
document.suncalc.IM.value=IM
document.suncalc.IY.value=IY
document.suncalc.B5.value=B5
document.suncalc.L5.value=L5
document.suncalc.H.value=H
document.suncalc.SR.value=""
document.suncalc.SS.value=""
}

function myint(x){
if (x>=0)
x=Math.floor(x)

else
x=Math.ceil(x)
return x
}

function sunrise(form) {
with (Math){
ID=parseInt(form.ID.value)
IM=parseInt(form.IM.value)
IY=parseInt(form.IY.value)
B5=parseFloat(form.B5.value)
L5=parseFloat(form.L5.value)
H =parseInt(form.H.value)
form.SR.value=""
form.SS.value=""
L5=L5/360.

Z0=-H/24.

G=1
J3=0
if (IY<1583){
G=0
}
with(Math){
D1=myint(ID)
F=ID-D1-.5
J=-myint(7*(myint((IM+9)/12)+IY)/4)
if (G != 0) {
S(IM-9)<0?-1:1)
A=abs(IM-9)
J3=myint(IY+S*myint(A/7))
J3=-myint((myint(J3/100)+1)*3/4)
}

J=J+myint(275*IM/9)+D1+G*J3
J=J+1721027+2*G+367*IY
if (F<0) {
F=F+1
J=J-1
}
}

TJ-2451545.)+F
TT=T/36525.+1.
T0=T/36525.
S=24110.5+8640184.813*T0
S=S+86636.6*Z0+86400.*L5
S=S/86400.
SM=myint(S)
S=S-myint(S)
T0=S*360.*DR
T=T+Z0
// funarg 1
L=.779072+.00273790931*T
G=.993126+.0027377785*T
L=L-myint(L)
G=G-myint(G)
L=L*P2
G=G*P2
V=.39785*sin(L)
V=V-.01000*sin(L-G)
V=V+.00333*sin(L+G)
V=V-.00021*TT*sin(L)
U=1-.03349*cos(G)
U=U-.00014*cos(2*L)
U=U+.00008*cos(L)
W=-.00010-.04129*sin(2*L)
W=W+.03211*sin(G)
W=W+.00104*sin(2*L-G)
W=W-.00035*sin(2*L+G)
W=W-.00008*TT*sin(G)
S=W/sqrt(U-V*V)
AA1=L+atan(S/sqrt(1-S*S))
S=V/sqrt(U)
DA1=atan(S/sqrt(1-S*S))
R5=1.00021*sqrt(U)
T=T+1

// funarg 2
L=.779072+.00273790931*T
G=.993126+.0027377785*T
L=L-myint(L)
G=G-myint(G)
L=L*P2
G=G*P2
V=.39785*sin(L)
V=V-.01000*sin(L-G)
V=V+.00333*sin(L+G)
V=V-.00021*TT*sin(L)
U=1-.03349*cos(G)
U=U-.00014*cos(2*L)
U=U+.00008*cos(L)
W=-.00010-.04129*sin(2*L)
W=W+.03211*sin(G)
W=W+.00104*sin(2*L-G)
W=W-.00035*sin(2*L+G)
W=W-.00008*TT*sin(G)
S=W/sqrt(U-V*V)
AA2=L+atan(S/sqrt(1-S*S))
S=V/sqrt(U)
DA2=atan(S/sqrt(1-S*S))
R5=1.00021*sqrt(U)
if (AA2 < AA1) {
AA2=AA2+P2
}

Z1=DR*(90.833)

S=sin(B5*DR)
C=cos(B5*DR)
Z=cos(Z1)
M8=0.
W8=0.
A0=AA1
D0=DA1
DA=AA2-AA1
DD=DA2-DA1
for(C0=0;C0<=23;C0++){
PC0+1.)/24.
A2=AA1+P*DA
D2=DA1+P*DD
K1=15.*DR*1.0027379
L0=T0+C0*K1
L2=L0+K1
H0=L0-A0
H2=L2-A2
H1H2+H0)/2.
D1D2+D0)/2.
if (C0<=0.) {
V0=S*sin(D0)+C*cos(D0)*cos(H0)-Z
}
V2=S*sin(D2)+C*cos(D2)*cos(H2)-Z

if ((V0<0?-1:1)=V2<0?-1:1)) {
//return
A0=A2
D0=D2
V0=V2

continue
}
V1=S*sin(D1)+C*cos(D1)*cos(H1)-Z
A=2.*V2-4.*V1+2.*V0
B=4.*V1-3.*V0-V2
D=B*B-4.*A*V0
if (D<0) {
//return
A0=A2
D0=D2
V0=V2
continue
}
D=sqrt(D)
EE-B+D)/(2.*A)
if (EE>1 || EE<0.) {
EE-B-D)/(2.*A)
}
T3=C0+EE+1./120.
H3=myint(T3)
M3=myint((T3-H3)*60.)
if (V0<0. && V2>0.) {
form.SR.value=H3+":"+(M3<10?"0":"")+M3
M8=1.
XXX1=H3*60+M3
}
if (V0>0. && V2<0.) {
form.SS.value=H3+":"+(M3<10?"0":"")+M3
W8=1.
XXX2=H3*60+M3
XXX3=myint((XXX2-XXX1)/60)
XXX4XXX2-XXX1)/60
XXX5=XXX4-XXX3
XXX6=myint(XXX5*60)
if ((XXX5*60)-myint(XXX5*60)>0.5) {XXX6=XXX6+1}
form.SSS.value=XXX3+":"+(XXX6<10?"0":"")+XXX6
}
H7=H0+EE*(H2-H0)
N7=-cos(D1)*sin(H7)
D7=C*sin(D1)-S*cos(D1)*cos(H7)
AZ=atan(N7/D7)/DR
if (D7<0.) {
AZ=AZ+180.
}
if (AZ<0.) {
AZ=AZ+360.
}
if (AZ>360) {
AZ=AZ-360.
}

A0=A2
D0=D2
V0=V2

}


if (M8+W8==0) {
if (V2<0) {
form.SR.value="Полярная ночь"
}
if (V2>0) {
form.SR.value="Полярный день"
}
}
if (M8+W8!=0) {
if (M8==0) {
form.SR.value="Сегодня нет восхода"
}
if (W8==0) {
form.SS.value="Сегодня нет заката"
}
}


}
}



// -->
</SCRIPT>

<TABLE align=center border=0 cellPadding=0 cellSpacing=0>
<TR>
<TD><!-- BEGIN OF INSERTIONS -->
<CENTER><h4>Расчет времени<br> восхода и захода Солнца</h4></CENTER>
</TD></TR>
</TABLE>

<TABLE align=center border=0 cellPadding=2 cellSpacing=0 width=95%>
<TR>
<TD>
<SCRIPT language=JavaScript>init()</SCRIPT>
<font color="darkblue">Используя нижерасположенную форму Вы
можете рассчитать время восхода и заката солнца для любой
точки Земли, для любого дня года.<BR>Для северного полушария
широта является положительной величиной, западные долготы -
отрицательные. Временная зона - это разница времени Гринвича и
местного времени. Например, для Рыбинска зимой 3 часа, в период
действия летнего времени 4 часа.</font><br><BR>
<TABLE align=center border=1 cellPadding=3 cellSpacing=0 bgcolor="#9999FF">
<FORM name=suncalc>

<TR>
<TD> День: 
<SELECT name=ID size=1>
<OPTION value=1>01</OPTION>
<OPTION selected value=2>02</OPTION>
<OPTION value=3>03</OPTION>
<OPTION value=4>04</OPTION>
<OPTION value=5>05</OPTION>
<OPTION value=6>06</OPTION>
<OPTION value=7>07</OPTION>
<OPTION value=8>08</OPTION>
<OPTION value=9>09</OPTION>
<OPTION value=10>10</OPTION>
<OPTION value=11>11</OPTION>
<OPTION value=12>12</OPTION>
<OPTION value=13>13</OPTION>
<OPTION value=14>14</OPTION>
<OPTION value=15>15</OPTION>
<OPTION value=16>16</OPTION>
<OPTION value=17>17</OPTION>
<OPTION value=18>18</OPTION>
<OPTION value=19>19</OPTION>
<OPTION value=20>20</OPTION>
<OPTION value=21>21</OPTION>
<OPTION value=22>22</OPTION>
<OPTION value=23>23</OPTION>
<OPTION value=24>24</OPTION>
<OPTION value=25>25</OPTION>
<OPTION value=26>26</OPTION>
<OPTION value=27>27</OPTION>
<OPTION value=28>28</OPTION>
<OPTION value=29>29</OPTION>
<OPTION value=30>30</OPTION>
<OPTION value=31>31</OPTION>
</select>


 Месяц: 

<SELECT name=IM size=1>
<OPTION value=1>Январь</OPTION>
<OPTION selected value=2>Февраль</OPTION>
<OPTION value=3>Март</OPTION>
<OPTION value=4>Апрель</OPTION>
<OPTION value=5>Май</OPTION>
<OPTION value=6>Июнь</OPTION>
<OPTION value=7>Июль</OPTION>
<OPTION value=8>Август</OPTION>
<OPTION value=9>Сентябрь</OPTION>
<OPTION value=10>Октябрь</OPTION>
<OPTION value=11>Ноябрь</OPTION>
<OPTION value=12>Декабрь</OPTION>
</select>

 Год: 

<SELECT name=IY size=1>
<OPTION value=2003>2003</OPTION>
<OPTION value=2004>2004</OPTION>
<OPTION value=2005>2005</OPTION>
<OPTION selected value=2006>2006</OPTION>
<OPTION value=2007>2007</OPTION>
<OPTION value=2008>2008</OPTION>
<OPTION value=2009>2009</OPTION>
<OPTION value=2010>2010</OPTION>
</select>

</TD>
</TR><TR>
<TD> Временная зона: <INPUT name=H size=3 value=3></TD>
</TR><TR>

<TD> Широта: <INPUT name=B5 size=6 value=58.05>
 Долгота: <INPUT name=L5 size=6 value=39.11></TD>
</TR><TR>
<TD>
<CENTER><INPUT name=calc onclick=sunrise(this.form) type=button value=Расчет></CENTER></TD>
</TR><TR>
<TD> Восход <INPUT name=SR size=6>
 Закат <INPUT name=SS size=6>
 Долгота дня <INPUT name=SSS size=6>
</TD>
</TR>
</FORM>

</TABLE></FONT>
</FONT></TD></TR></TABLE><!-- END OF CONTENT --></CENTER></TD></TR></TABLE>

</TD></TR></TABLE><BR>
<BR></CENTER></CENTER></BODY>
</HTML>

</tr>
</table>
</body></html>


<!-- meteo -->

<!-- This document source from http://www.meteo.nso.ru/weather/vzs/ -->
к сожалению при передаче файлов ломается синтаксис, чтобы исправить нужно вручную в блокноте вместо смайлика вписать "=(", естественно без кавычек и программа заработает!!!
правда в блокноте смайлика уже не будет видно, он не скопируется в блокнот, нужно просто смотреть где он был и вставлять "=("
это мне подсказал один грамотный пользователь, спасибо ему за это!...))
https://old.qna.center/comments/answer/28000361/#cmt_21813986
Дополнен 4 года назад
так что, достаточно скопировать текстовую часть (код), потом открыть блокнот и затем произвести правку - в места смайликов (9шт) вставить равно и окрытие скобки, затем сохранить файл с расширением (Имя).htm а при присвоении имени и расширения во время сохранения файла выбрать не "txt", а "все файлы" (иначе файл сохранится с расширением "txt") и вуаля - у вас будет готовая утилитка независимая для вычисления восхода, захода Солнца и долготы дня, также можно в части кода:
<TD> Широта: <INPUT name=B5 size=6 value=58.05>
Долгота: <INPUT name=L5 size=6 value=39.11></TD>
</TR><TR>
<TD>
это в самом конце программы, вставить свои координаты, чтобы не вводить их каждый раз заново открыв утилитку!
Дополнен 4 года назад
После регистрации Вы сможете получать до 300 руб за каждую тысячу уникальных поисковых переходов на Вашу статью в блоге Подробнее