1// Script per il calcolo delle effemeridi di Sole 2 3var gradi = 180/Math.PI; 4var rad = 1/gradi; 5var AlfaSole 6var DeltaSole 7var hsorge 8var htram 9 10function DataOggi() 11 { 12 var oggi= new Date() 13 var s=oggi.getDay() 14 var g=oggi.getDate() 15 var m=1+oggi.getMonth() 16 var a=oggi.getFullYear() 17 var gS 18 var ms 19 var DataCompleta 20 if (s==0){gS="Domenica"} 21 if (s==1){gS="Lunedi"} 22 if (s==2){gS="Martedi"} 23 if (s==3){gS="Mercoledi"} 24 if (s==4){gS="Giovedi"} 25 if (s==5){gS="Venerdi"} 26 if (s==6){gS="Sabato"} 27 28 if (m==1){ms="Gennaio"} 29 if (m==2){ms="Febbraio"} 30 if (m==3){ms="Marzo"} 31 if (m==4){ms="Aprile"} 32 if (m==5){ms="Maggio"} 33 if (m==6){ms="Giugno"} 34 if (m==7){ms="Luglio"} 35 if (m==8){ms="Agosto"} 36 if (m==9){ms="Settembre"} 37 if (m==10){ms="Ottobre"} 38 if (m==11){ms="Novembre"} 39 if (m==12){ms="Dicembre"} 40 41 DataCompleta=gS+" "+g+" "+ms+" "+a 42return DataCompleta 43} 44 45function ultimoaggiornamento() 46{ 47 var data=document.lastModified; 48 var gg=data.substring(3,5) 49 var mm=data.substring(0,2) 50 var aaaa=data.substring(6,10) 51 var datagg 52 datagg="Ultimo aggiornamento: "+gg+"/"+mm+"/"+aaaa 53return datagg 54} 55 56function AngoloGiro(a) 57{ 58 var Ag 59 var Sgn 60 if (a<0) {Sgn=-1} else {Sgn=1} 61 var I=Math.floor(Math.abs(a)) 62 var F=Math.abs(a)-I 63 var R=I%360 64 if (Sgn>0) {Ag=R+F} else {Ag=360-(R+F)} 65return Ag 66} 67 68function FormatGPS(grd) 69{ 70 var Sgn 71 if (grd<0) {Sgn="-"} else {Sgn="+"} 72 var ang=Math.abs(grd) 73 var g=Math.floor(ang) 74 var p=Math.floor((ang-g)*60) 75 var s=Math.floor(ang*3600-g*3600-p*60) 76 var formato=Sgn+g+"°"+p+"'"+s+"\"" 77return formato 78} 79 80function FormatHMS(grd) 81{ 82 var Sgn 83 if (grd<0) {Sgn="-"} else {Sgn="+"} 84 var ang=Math.abs(grd) 85 var g=Math.floor(ang) 86 var p=Math.floor((ang-g)*60) 87 var s=Math.floor(ang*3600-g*3600-p*60) 88 var formato=Sgn+g+"h"+p+"m"+s+"s" 89return formato 90} 91 92function FormatHM(grd) 93{ 94 var ang=Math.abs(grd) 95 var g=Math.floor(ang) 96 var p=Math.floor((ang-g)*60+0.5) 97 zero="" 98 if(p<10) 99 { 100 zero="0" 101 } 102 var formato=g+":"+zero+p 103return formato 104} 105 106function GiornoGiuliano(g,m,a,h,mn,s) 107{ 108 var y 109 var mm 110 var x 111 var b 112 var ora_dec=(h+mn/60+s/3600)/24 113 var g_dec=g+ora_dec 114 var JulD 115 if (m<=2) { 116 y=a-1 117 mm=m+12 118 } 119 else { 120 y=a 121 mm=m 122 } 123 x=Math.floor(y/100) 124 b=2-x+Math.floor(x/4) 125 JulD=Math.floor(365.25*(y+4716))+Math.floor(30.6*(mm+1))+g_dec+b-1524.5 126return JulD 127} 128 129function SecoloGiuliano(JD) 130{ 131 var T 132 T=(JD-2415020.0)/36525 133return T 134} 135 136function Keplero(ec,M) 137{ 138 var Conv 139 var ecg=ec*gradi 140 var Eapp=M 141 for (var i=1; i<=20; i++) 142 { 143 Conv=Eapp 144 var Temp=Eapp+((M+ecg*Math.sin(Eapp*rad)-Eapp)/(1-ec*Math.cos(Eapp*rad))) 145 Eapp=Temp 146 if (Math.abs(Conv-Eapp)<0.000001) {break} 147 } 148return Eapp 149} 150 151function AnomVera(ecc,Anecc) 152{ 153 var a=Math.sqrt((1+ecc)/(1-ecc)) 154 var b=Math.tan((Anecc/2)*rad) 155 var c=(2*Math.atan(a*b))*gradi 156 var AnV=AngoloGiro(c) 157return AnV 158} 159 160function Nutazione(T,Deps,Dpsi) 161{ 162 var T2=T*T 163 var L=rad*(AngoloGiro(279.6967+36000.7689*T+0.000303*T2)) 164 var L1=rad*(AngoloGiro(270.4342+481267.8831*T-0.001133*T2)) 165 var M=rad*(AngoloGiro(358.4758+359999.0498*T-0.000150*T2)) 166 var M1=rad*(AngoloGiro(296.1046+477198.8491*T+0.009192*T2)) 167 var omega=rad*(AngoloGiro(259.1833-1934.1420*T+0.002078*T2)) 168 var P1=-(17.2327+0.01737*T)*Math.sin(omega)-(1.2729+0.00013*T)*Math.sin(2*L) 169 var P2=0.2088*Math.sin(2*omega)-0.2037*Math.sin(2*L1)+(0.1261-0.00031*T)*Math.sin(M) 170 var P3=0.0675*Math.sin(M1)-(0.0497-0.00012*T)*Math.sin(2*L+M)-0.0342*Math.sin(2*L1-omega) 171 var P4=-0.0261*Math.sin(2*L1+M1)+0.0214*Math.sin(2*L-M)-0.0149*Math.sin(2*L-2*L1+M) 172 var P5=0.0124*Math.sin(2*L-omega)+0.0114*Math.sin(2*L1-M1) 173 Dpsi=(P1+P2+P3+P4+P5)/3600 174 var P1=(9.21+0.00091*T)*Math.cos(omega)+(0.5522-0.00029*T)*Math.cos(2*L) 175 var P2=-0.0904*Math.cos(2*omega)+0.0884*Math.cos(2*L1)+0.0216*Math.cos(2*L+M) 176 var P3=0.0183*Math.cos(2*L1-omega)+0.0113*Math.cos(2*L1+M1)-0.0093*Math.cos(2*L-M)-0.0066*Math.cos(2*L-omega) 177 Deps=(P1+P2+P3)/3600 178} 179 180function TempoSidereo1(g,ms,a,h,mn,s) 181{ 182 var JD=GiornoGiuliano(g,ms,a,0,0,0) 183 var T=SecoloGiuliano(JD) 184 var T2=T*T 185 var T3=T2*T 186 var Deps="" 187 var Dpsi="" 188 Nutazione(T)
189 var eps=23.452294-0.0130125*T-0.00000164*T2+0.000000503*T3 190 var epsc=(eps+Deps)*rad 191 var Ts=Math.floor(0.276919398+100.0021359*T+0.000001075*T2)*24 192 var oradec=h+mn/60+s/3600 193 Ts=(Ts+oradec*1.002737908)*15 194 Ts=AngoloGiro(Ts+(Dpsi*Math.cos(epsc))/15) 195return Ts 196} 197 198function TempoSidereo(g,ms,a,h,mn,s) 199{ 200 var JD=GiornoGiuliano(g,ms,a,h,mn,s) 201 var T=(JD-2451545.0)/36525 202 var T2=T*T 203 var T3=T2*T 204 var Ts=280.46061837+360.98564736629*(JD-2451545.0)+0.000387933*T2-T3/38710000 205 var Deps="" 206 var Dpsi="" 207 Nutazione(T,Deps,Dpsi) 208 var eps=23.43929111-0.0130042*T-0.00000164*T2+0.000000503*T3 209 var epsc=(eps+Deps)*rad 210 Ts=AngoloGiro(Ts+(Dpsi*Math.cos(epsc))/15) 211 Ts=Ts+360 212 Ts=AngoloGiro(Ts) 213return Ts 214} 215 216function EquazTM(T) 217{ 218 var T2=T*T 219 var T3=T2*T 220 var L=rad*(AngoloGiro(279.69668+36000.76892*T+0.0003025*T2)) 221 var M=rad*(AngoloGiro(358.47583+35999.04975*T-0.000150*T2-0.0000033*T3)) 222 var e=0.01675104-0.0000418*T-0.000000126*T2 223 var eps=rad*(23.452294-0.0130125*T-0.00000164*T2+0.000000503*T3) 224 var y=Math.tan(eps/2)*Math.tan(eps/2) 225 var EQTM=y*Math.sin(2*L)-2*e*Math.sin(M)+4*e*Math.sin(M)*Math.cos(2*L)*y 226 EQTM=EQTM-0.5*(y*y)*Math.sin(4*L)-(5/4)*(e*e)*Math.sin(2*M) 227 EQTM=EQTM*4*gradi 228return EQTM 229} 230 231function AltezzaAzimuth(Lat,Decl,TA) 232{ 233 TA=TA+360 234 TA=AngoloGiro(TA) 235 if (TA<180) {AP=TA} else {AP=360-TA} 236 var D=Math.sin(rad*Lat)*Math.sin(rad*Decl)+Math.cos(rad*Lat)*Math.cos(rad*Decl)*Math.cos(rad*AP) 237 Alt=gradi*Math.asin(D) 238 var D=(Math.sin(rad*Decl)-Math.sin(rad*Lat)*Math.sin(rad*Alt))/(Math.cos(rad*Lat)*Math.cos(rad*Alt)) 239 Az=gradi*Math.acos(D) 240 if (TA<180) {Az=360-Math.abs(Az)} 241} 242 243function EffemeridiSole(T) 244{ 245 var T2=T*T 246 var T3=T2*T 247 var L=AngoloGiro(279.69668+36000.76892*T+0.0003025*T2) 248 var M=AngoloGiro(358.47583+35999.04975*T-0.000150*T2-0.0000033*T3) 249 var e=0.01675104-0.0000418*T-0.000000126*T2 250 var AnEcc=Keplero(e,M) 251 var AnV=AnomVera(e,AnEcc) 252 var c1=rad*(153.23+22518.7541*T) 253 var c2=rad*(216.57+45037.5082*T) 254 var c3=rad*(312.69+32964.3577*T) 255 var c4=rad*(350.74+445267.1142*T-0.00144*T2) 256 var c5=rad*(231.19+20.20*T) 257 var c6=rad*(353.40+65928.7155*T) 258 var cl=0.00134*Math.cos(c1)+0.00154*Math.cos(c2)+0.00200*Math.cos(c3)+0.00179*Math.sin(c4)+0.00178*Math.sin(c5) 259 var cr=0.00000543*Math.sin(c1)+0.00001575*Math.sin(c2)+0.00001627*Math.sin(c3)+0.00003076*Math.cos(c4)+0.00000927*Math.sin(c6) 260 var LV=L+AnV-M+cl 261 var RV=1.0000002*(1-e*Math.cos(rad*AnEcc))+cr 262 var Deps="" 263 var Dpsi="" 264 Nutazione(T,Deps,Dpsi) 265 var Lapp=LV-0.00569+Dpsi 266 var eps=23.452294-0.0130125*T-0.00000164*T2+0.000000503*T3 267 var epsc=eps+Deps 268 DeltaSole=gradi*(Math.asin(Math.sin(rad*eps)*Math.sin(rad*Lapp))) 269 var N=Math.cos(rad*eps)*Math.sin(rad*Lapp) 270 var D=Math.cos(rad*Lapp) 271 AlfaSole=gradi*(Math.atan2(N,D)) 272 if (AlfaSole<0) {AlfaSole=AlfaSole+360} 273} 274 275function TransitoSole(g,ms,a,Lat,Long) 276{ 277 var T=SecoloGiuliano(GiornoGiuliano(g,ms,a,0,0,0)) 278 var EOT="" 279 for (var i=1; i<=4; i++) 280 { 281 EOT=EquazTM(T)/60 282 var tv=0 283 var tm=AngoloGiro(tv+180)/15-EOT 284 var TMG=tm-Long/15 285 var nore=Math.floor(TMG) 286 var nmin=Math.floor((TMG-nore)*60) 287 var nsec=Math.floor((((TMG-nore)*60)-nmin)*60) 288 T=SecoloGiuliano(GiornoGiuliano(g,ms,a,nore,nmin,nsec)) 289 } 290return tm 291} 292 293function SorgeSole(g,ms,a,Lat,Long) 294{ 295 var T=SecoloGiuliano(GiornoGiuliano(g,ms,a,0,0,0)) 296 var h0=-0.8333 297 var EOT="" 298 for (var i=1; i<=4; i++) 299 { 300 EffemeridiSole(T) 301 EOT=EquazTM(T)/60 302 var temp=(Math.sin(h0*rad)-Math.sin(Lat*rad)*Math.sin(DeltaSole*rad))/(Math.cos(Lat*rad)*Math.cos(DeltaSole*rad)) 303 if (Math.abs(temp)>1) { 304 var HS=9999 305 } 306 else 307 { 308 var HS=Math.acos(temp)*gradi 309 } 310 var tv=360-HS 311 var tm=AngoloGiro(tv+180)/15-EOT 312 var TMG=tm-Long/15 313 var nore=Math.floor(TMG) 314 var nmin=Math.floor((TMG-nore)*60) 315 var nsec=Math.floor((((TMG-nore)*60)-nmin)*60) 316 T=SecoloGiuliano(GiornoGiuliano(g,ms,a,nore,nmin,nsec)) 317 } 318return tm 319} 320 321function TramSole(g,ms,a,Lat,Long) 322{ 323 var T=SecoloGiuliano(GiornoGiuliano(g,ms,a,0,0,0)) 324 var h0=-0.8333 325 var EOT="" 326 for (var i=1; i<=4; i++) 327 { 328 EffemeridiSole(T) 329 EOT=EquazTM(T)/60 330 var temp=(Math.sin(h0*rad)-Math.sin(Lat*rad)*Math.sin(DeltaSole*rad))/(Math.cos(Lat*rad)*Math.cos(DeltaSole*rad)) 331 if (Math.abs(temp)>1) { 332 var HS=9999 333 } 334 else 335 { 336 var HS=Math.acos(temp)*gradi 337 } 338 var tv=HS 339 var tm=AngoloGiro(tv+180)/15-EOT 340 var TMG=tm-Long/15 341 var nore=Math.floor(TMG) 342 var nmin=Math.floor((TMG-nore)*60) 343 var nsec=Math.floor((((TMG-nore)*60)-nmin)*60) 344 T=SecoloGiuliano(GiornoGiuliano(g,ms,a,nore,nmin,nsec)) 345 } 346return tm 347} 348 349function Calcola() 350{ 351 var oggi= new Date() 352 var gi=oggi.getDate() 353 var me=oggi.getMonth()+1 354 var an=oggi.getYear() 355 356 var Lat=37.1348 357 var Long=15.1312 358 var fuso=1 359 var cf=(fuso*15-Long)*4 360 if (me>3 && me<11) {var OraLeg=1} else {var OraLeg=0} 361 362 var hs=SorgeSole(gi,me,an,Lat,Long) 363 hsorge=FormatHM(hs+cf/60+OraLeg) 364 365 var hs=TramSole(gi,me,an,Lat,Long) 366 htram=FormatHM(hs+cf/60+OraLeg) 367} 368
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.