hab mal was gegoogelt und dabei folgendes Java Script gefunden:
http://lexikon.astronomie.info/zeitg...ng/source.html
müsste man dann nur noch in Deine gewünschte ProgrammierspracheCode:<!-- KOMMENTAR ZUM SCRIPT
Wir freuen uns selbstverstaendlich wenn Sie sich
fuer die Details unseres kleinen Skripts interessieren.
Es bringt jedoch nichts, wenn Sie dieses Script auf Ihre Seite kopieren.
Ein einfacher Link beweist genau so gut, dass Sie das Script gefunden haben.
Kopieren Sie deshalb diese Script nicht auf Ihre 'private' Hompage.
Roland Brodbeck/Arnold Barmettler, Verein astroinfo, www.astronomie.info, Version 2008
-->
<SCRIPT LANGUAGE="JavaScript">
pi = 3.1415926536;
RAD = pi/180.0; // Umrechnungsfaktor von Grad nach Radians
h = -(50.0/60.0)*RAD; // Höhe des Sonnenmittelpunkts bei Aufgang: Radius+Refraktion
function sqr(x)
{
// Quadrat von x
return x*x;
}
function sonnendeklination(T)
{
// Deklination der Sonne in Radians
// Formula 2008 by Arnold(at)Barmettler.com, fit to 20 years of average declinations (2008-2017)
return 0.409526325277017*Math.sin(0.0169060504029192*(T-80.0856919827619));
}
function zeitdifferenz(Deklination)
{
// Dauer des halben Tagbogens in Stunden: Zeit von Sonnenaufgang (Höhe h) bis zum höchsten Stand im Süden
return 12.0*Math.acos((Math.sin(h) - Math.sin(B)*Math.sin(Deklination)) / (Math.cos(B)*Math.cos(Deklination)))/pi;
}
function zeitgleichung(T)
{
// Differenz zwischen wahrer und mittlerer Sonnenzeit
// formula 2008 by Arnold(at)Barmettler.com, fit to 20 years of average equation of time (2008-2017)
return -0.170869921174742*Math.sin(0.0336997028793971 * T + 0.465419984181394) - 0.129890681040717*Math.sin(0.0178674832556871*T - 0.167936777524864);
}
function aufgang(T)
{
DK = sonnendeklination(T);
return 12 - zeitdifferenz(DK) - zeitgleichung(T);
}
function untergang(T)
{
DK = sonnendeklination(T);
return 12 + zeitdifferenz(DK) - zeitgleichung(T);
}
// Berechnung von Azimut und Höhe des Sonnenmittelpunkts über Horizont
function AzimutHoehe(B, T, ZeitSeitMittag)
{
// Azimut und Höhe der Sonne (ohne Refraktion)
DK = sonnendeklination(T);
cosdec = Math.cos(DK);
sindec = Math.sin(DK);
lha = ZeitSeitMittag*(1.0027379-1./365.25)*15*RAD; // Stundenwinkel seit wahrem Mittag in Radians
// 1.0027379: Faktor für Sternzeitkorrektur, 1./365.25: Fortschreiten der Rektaszension der Sonne in einem Tag in Grad
coslha = Math.cos(lha);
sinlha = Math.sin(lha);
coslat = Math.cos(B);
sinlat = Math.sin(B);
N = -cosdec * sinlha;
D = sindec * coslat - cosdec * coslha * sinlat;
var coor = new Object();
coor.azimut = Math.atan2(N, D); if (coor.azimut<0) coor.azimut += 2*pi; // Azimut. Norden=0, Osten=pi/2, Westen=3/4pi
coor.hoehe = Math.asin( sindec * sinlat + cosdec * coslha * coslat ); // Höhe des Sonnenmittelpunkts
return coor;
}
function Refraktion(hoehe)
{
// Näherungslösung für die Refraktion für ein Objekt bei Höhe hoehe über mathematischem Horizont
// Refraktion beträgt bei Sonnenaufgang 34 Bogenminuten = 0.56667°
// Falls die Höhe der Sonne nicht genauer als auf 0.5° gewünscht ist, kann diese Funktion ignoriert werden
P=1013.25; // Luftdruck der Standard-Atmosphäre in hPa (=mbar)
T=15; // Temperatur der Standard-Atmosphäre in °C
R = 0;
if (hoehe>=15*RAD) R = 0.00452*RAD*P/Math.tan(hoehe)/(273+T); // über 15° - einfachere Formel
else if (hoehe>-1*RAD) R = RAD*P*(0.1594+0.0196*hoehe+0.00002*sqr(hoehe))/((273+T)*(1+0.505*hoehe+0.0845*sqr(hoehe)));
return R; // Refraktion in Radians
}
function compute(form)
{
Laenge = eval(form.Laenge.value.replace(/,/,'.'));
Breite = eval(form.Breite.value.replace(/,/,'.'));
Zone = eval(form.Zone.value.replace(/,/,'.'));
T = eval(form.T.value.replace(/,/,'.'));
B = Breite*RAD; // geogr. Breite in Radians
// Berechnung von Sonnenauf- und -Untergang
Aufgang = aufgang(T); // Sonnenaufgang bei 0° Länge
Untergang = untergang(T);// Sonnenuntergang bei 0° Länge
Aufgang = Aufgang - Laenge /15.0 + Zone; // Sonnenaufgang bei gesuchter Länge und Zeitzone in Stunden
Untergang = Untergang - Laenge /15.0 + Zone; // Sonnenuntergang bei gesuchter Länge und Zeitzone in Stunden
form.Aufgang.value = Aufgang;
form.Untergang.value = Untergang;
form.Zeitgleichung.value = 60.0*zeitgleichung(T);
form.Deklination.value = sonnendeklination(T)/RAD;
// Ab hier Berechnung von Azimut und Höhe zu gegebener Zeit
Zeit = eval(form.Zeit.value); // Zeit in Stunden (Dezimal-Minuten!); nur für die Berechnung von Azimut und Höhe
ZeitSeitMittag = Zeit+Laenge/15.0-Zone -12 +zeitgleichung(T); // Zeit in Stunden seit Sonne im Süden
coor = AzimutHoehe(B, T, ZeitSeitMittag); // Azimut/Höhe über mathematischem Horizont des Sonnenmittelpunkts
form.Azimut.value = coor.azimut/RAD; // Azimut in Grad: 0°-Norden, 90°-Osten, 180°-Süden, 270°-Westen
form.Hoehe.value = (coor.hoehe+Refraktion(coor.hoehe))/RAD; // Höhe mit Refraktionskorrektur in Grad
}
function init(form)
{
// Startwerte
form.Laenge.value = "10.0";
form.Breite.value = "50.0";
form.Zone.value ="1";
form.T.value ="1";
form.Zeit.value ="8"; // Zeit nur für die Berechnung von Aziumt und Höhe verwendet
// Ausgabewerte zurücksetzen
form.Aufgang.value ="0";
form.Untergang.value ="0";
form.Zeitgleichung.value = "0";
form.Deklination.value ="0";
form.Azimut.value ="0";
form.Hoehe.value ="0";
}
adaptieren und gut ist.
10° wären aber ne Menge Holz ... es sollte sich doch schon mal ein
Kompas finden lassen um das Ding gescheit einzunorden.
Was bei der Sensorvariante auch noch ist; was machste wenn sich
n Vogel auf das Ding hockt oder ggf noch drauf kackt?