ot: analemma
Miroslav Draxal
evik na volny.cz
Pondělí Srpen 26 22:14:04 CEST 2013
Děkuji všem. Pro mcu raději zvolím tabulku a nějakou tu aproximaci. Tabulka
je http://mail.astrohk.cz/~mira/shc/advanced/analema/ viz casova_rce.dat
<http://mail.astrohk.cz/~mira/shc/advanced/analema/casova_rce.dat>
Míra
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Ales Prochaska, Divesoft
Sent: Monday, August 26, 2013 9:12 PM
To: HW-news
Subject: Re: ot: analemma
{ Vypocet polohy Slunce }
uses
datim,graf0,m2;
type
real = extended;
const
lat = 50.0875;
lon = +14.4714;
{---------------------------------------------------------------------------
-}
function daynumber (Y,M,D : longint; UT : real) : real;
{ Plati pro roky 1901 - 2099
}
{---------------------------------------------------------------------------
-}
begin
daynumber:=367*Y-int(7*(Y+int((M+9)/12))/4)+int(275*M/9)+D-730530+UT/24;
end;
{---------------------------------------------------------------------------
-}
function arcsin (x : real) : real;
{ ve stupnich
}
{---------------------------------------------------------------------------
-}
begin
arcsin:=arctan(x/sqrt(1-sqr(x)))/pi*180;
end;
{---------------------------------------------------------------------------
-}
function sin (x : real) : real;
{ ve stupnich
}
{---------------------------------------------------------------------------
-}
begin
sin:=system.sin(x/180*pi);
end;
{---------------------------------------------------------------------------
-}
function cos (x : real) : real;
{ ve stupnich
}
{---------------------------------------------------------------------------
-}
begin
cos:=system.cos(x/180*pi);
end;
{---------------------------------------------------------------------------
-}
function tan (x : real) : real;
{ ve stupnich
}
{---------------------------------------------------------------------------
-}
begin
tan:=sin(x)/cos(x)
end;
{---------------------------------------------------------------------------
-}
function arctan (x : real) : real;
{ ve stupnich
}
{---------------------------------------------------------------------------
-}
begin
arctan:=system.arctan(x)/pi*180;
end;
{---------------------------------------------------------------------------
-}
function atan2 (y,x : real) : real;
{ ve stupnich
}
{---------------------------------------------------------------------------
-}
begin
if x>0 then atan2:=arctan(y/x)
else if x<0 then atan2:=arctan(y/x)+180
else if y>0 then atan2:=90
else if y<0 then atan2:=-90
else atan2:=0;
end;
{---------------------------------------------------------------------------
-}
function norm (x : real) : real;
{ normalizuje uhel do intervalu (-180, 180>
}
{---------------------------------------------------------------------------
-}
begin
{ jak od blbyho (co byste taky cekali) }
while x>180 do x:=x-360;
while x<=-180 do x:=x+360;
norm:=x;
end;
{---------------------------------------------------------------------------
-}
procedure poloha ( lat : real; { sirka
}
lon : real; { delka
}
year : integer; { rok
}
month : integer; { mesic
}
day : integer; { den
}
UT : real; { cas
}
var az : real; { azimut
}
var h : real); { vyska
}
{ Vypocita azimut a vysku Slunce pro zadane misto v zadanem okamziku.
}
{ Uhly jsou ve stupnich a desetinach, cas v hodinach a desetinach.
}
{---------------------------------------------------------------------------
-}
var
d : real; { day number
}
lst : real; { local sidereal time (ve stupnich)
}
oblecl : real; { obliquity of the ecliptic
}
w : real; { argument of perihelion
}
M : real; { mean anomaly (ve stupnich)
}
e : real; { eccentricity
}
EA : real; { eccentric anomaly (ve stupnich)
}
A,B : real; { pracovni promenne
}
r : real; { distance
}
v : real; { true anomaly
}
slon : real; { Sun's true longitude
}
sRA : real; { Sun's right ascension
}
sDec : real; { Sun's declination
}
t_sRA : real; { tan(sRA)
}
s_sDec : real; { sin(sDec)
}
HA : real; { hour angle
}
begin {poloha}
d:=daynumber(year,month,day,UT);
lst:=norm(98.9818+0.985647352*d+UT*15+lon);
oblecl:=23.4393-3.563e-7*d;
w:=282.9494+4.70935e-5*d;
M:=356.0470+0.98566002585*d;
e:=0.016709-1.151e-9*d;
EA:=M+e*(180/pi)*sin(M)*(1+e*cos(M));
A:=cos(EA)-e;
B:=sqrt(1-e*e)*sin(EA);
r:=sqrt(A*A+B*B);
v:=atan2(B,A);
slon:=v+w;
t_sRA:=(sin(slon)*cos(oblecl))/cos(slon);
sRA:=atan2(sin(slon)*cos(oblecl),cos(slon));
s_sDec:=sin(oblecl)*sin(slon);
sDec:=arcsin(s_sDec);
HA:=lst-sRA;
az:=atan2(sin(HA),cos(HA)*sin(lat)-tan(sDec)*cos(lat))+180;
h:=arcsin(sin(lat)*sin(sDec)+cos(lat)*cos(sDec)*cos(HA));
end {poloha};
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
__________ Informace od ESET NOD32 Antivirus, verze databaze 8730 (20130826)
__________
Tuto zpravu proveril ESET NOD32 Antivirus.
http://www.eset.cz
__________ Informace od ESET NOD32 Antivirus, verze databaze 8731 (20130826)
__________
Tuto zpravu proveril ESET NOD32 Antivirus.
http://www.eset.cz
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130826/e16d118b/attachment.htm>
Další informace o konferenci Hw-list