PageSourceSearch

http://www.augusta-framacamo.net/solehome/solehome.js

js augusta-framacamo.net collected 2026-10-02 07:31:03 UTC 9,396 bytes, 368 lines download raw bytes

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.