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?








Zitieren

Lesezeichen