|
Registriert seit: 5. Mär 2009 Ort: Hamburg 569 Beiträge Delphi XE8 Professional |
#1
Hallo,
im Laufe der Zeit haben sich bei mir einige Funktionen zur Berechnung astronomischer Daten gesammelt, die ich nun in eine Unit gepackt habe : Tag im Jahr, Woche im jahr, Schaltjahr(boolean), Sommerzeit(boolean), Jahreszeit, Feiertage (in Abhängigkeit vom Bundesland), Sternzeichen ... Für Mond und Sonne : -Aufgang, Untergang, Höchststand, Mondphase, Mondalter, nächste und vorige Mondphase ... Funktionen :
Delphi-Quellcode:
im Anhang :
function GetDayOfYear(CDate:TDateTime):Integer;
function GetDaysPerYear(CDate:TDateTime):Integer; function IsLeapYear(CDate:TDateTime):boolean; function GetWeekOfYear(CDate:TDateTime):Integer; function GetWeeksPerYear(CDate:TDateTime):Integer; function GetDaysPerMonth(CDate:TDateTime):Integer; function GetFirstDayOfWeek(CDate:TDateTime; DayIndex:Integer):TDateTime; function IsSummertime(CDate:TDateTime):boolean; function GetHolidayIndex(CDate:TDateTime; Land:TdeState):integer; function last_phase(date:TDateTime; phase:TMoonPhase):TDateTime; function next_phase(date:TDateTime; phase:TMoonPhase):TDateTime; function age_of_moon(date: TDateTime):extended; function current_phase(date:TDateTime):extended; function moon_distance(date: TDateTime): extended; function lunation(date:TDateTime):integer; function sun_distance(date: TDateTime): extended; function nextperigee(date:TDateTime):TDateTime; function nextapogee(date:TDateTime):TDateTime; function StartSeason(year: integer; season:TSeason):TDateTime; function Eclipse(var date:TDateTime; sun:boolean):TEclipse; function NextEclipse(var date:TDateTime; sun:boolean):TEclipse; function Sun_Rise(date:TDateTime; latitude, longitude:extended):TDateTime; function Sun_Set(date:TDateTime; latitude, longitude:extended):TDateTime; function Sun_Transit(date:TDateTime; latitude, longitude:extended):TDateTime; function Moon_Rise(date:TDateTime; latitude, longitude:extended):TDateTime; function Moon_Set(date:TDateTime; latitude, longitude:extended):TDateTime; function Moon_Transit(date:TDateTime; latitude, longitude:extended):TDateTime; function GetSternzeichen(const CDat:TDateTime):Integer; function GetSeason(CDat:TDate):String; function StartDateSeason(CDat:TDate; Season:TSeason): TDate; function GetMoonPhase(const Dat:TDateTime): String; function GetMoonPhaseNum(Age : extended):Integer; function GetMoonPhaseConst(Age : extended):TMoonPhase8; function DateTimeReal(DtTm : TDateTime; Long : extended):TDateTime; function DateTimeTZ(DtTm : TDateTime; Hour : ShortInt):TDateTime; - die Unit : AstroUnit - ein Demo zur Übersicht - ein Screenshot vom Demo falls Ihr noch Funktionen vermisst >>> lässt sich ja noch einfügen --> 21.12.2013 : Version 4 angefügt (Astro4.rar) : hinzugekommen sind Berechnungen zum "Blue Moon": function BlueMoon . . . - hier wird auf vier Vollmonde in einer Jahreszeit geprüft, der dritte Vollmond ist dann der Blue Moon. Im Aufruf der Funktion kann dann noch festgelegt werden, ob der vergangene Winter oder der kommende Winter berücksichtigt wird, geprüft wird über vier Jahreszeiten. function Double Moon . . . - hier wird auf zwei Vollmonde in einem Monat geprüft, je nach Definition (es gibt mehrere) ist dann der zweite Vollmond (30. od. 31. eines Monats) der Blue Moon. -- allg. Überarbeitung -- in Kürze : Auswahl der Berechnungen zu Sonnenstand, Auf-Untergang nach realer (-0,83333°), bürgerlicher(-6°), nautischer(-12°), astronomischer(-18°) Dämmerung --> erledigt. die Funktionen Sun_Rise ... und Sun_Set... erhalten nun einen weiteren Parameter vom Typ TCalcType (ctNull, ctGeneral, ctZivil, ctNautic, ctAstronomical) Diese Parameter berechnen den Sonnen-Auf- bzw. Untergang nach einer Winkelabweichung von (0°, -0,8333°, -6°, -12°, -18°) 0° --> theor. Werte -0,8333° allg. gültige Berechnung zu Soonen-Auf und Untergang -6° bürgerliche Dämmerung -12° nautische Dämmerung -18° astronomische Dämmerung
Delphi-Quellcode:
function Jul_Date(Year, Month, Day, Houre, Minute, Second : Word) : Extended; // Julianisches Datum [JD]
function Jul_Day(JulianDate : Extended) : Extended; // Julianische Tageszahl [n] function TimeZoneBias:longint; // TimeZone function TransformDate(Datum: TDatetime): TDateTime; // Umwandlung TDateTIME function Julian_Date(Date : TDateTime): Extended; // Julianisches Datum [JD, nach 15.10.1582] function Delphi_Date(J_Date : Extended): TDateTime; // Delphi Datum function Star_Time(Date : TDateTime): Extended; // Sternenzeit function DayOfYear(Date : TDateTime): Integer; // Tag im Jahr function DaysPerYear(Date : TDateTime): Integer; // Schaltjahr (?) function IsLeapYear(Date : TDateTime): Boolean; // Woche im Jahr function WeekOfYear(Date : TDateTime): Integer; // akt. Woche im jahr (KW) function WeeksPerYear(Date : TDateTime): Integer; // Anzahl der Wochen im Jahr function DaysPerMonth(Date : TDateTime): Integer; // Anzahl Tage im Monat function FirstDayOfWeek(Date : TDateTime; DayIndex : Integer): TDateTime; // Erster Tag in der Woche function DayFromDate(Date : TDate): Integer; // Tag aus Datum function IsSummertime(Date : TDateTime): Boolean; // Sommerzeit (?) function GetHolidayIndex(Date : TDateTime; Land : TdeState): Integer; // Feiertage (--> Index) procedure calc_geocentric(var coord : t_coord; Date : TDateTime); // Rektaszension, Deklination function sun_coordinate(Date : TDateTime): t_coord; // Koordinaten der Sonne function moon_coordinate(Date : TDateTime): t_coord; // Koordinaten des Mondes procedure calc_phase_data(Date : TDateTime; phase : TMoonPhase; var jde, kk, m, ms, f, o, e: Extended); // Daten für Mondphase function nextphase(Date : TDateTime; phase : TMoonPhase): TDateTime; // nächste MondPhase, Berechnung function last_phase(Date : TDateTime; phase : TMoonPhase): TDateTime; // vorige Mondphase, Ausgabe function next_phase(Date : TDateTime; phase : TMoonPhase): TDateTime; // nächste Mondphase, Ausgabe function moon_phase_angle(Date: TDateTime): Extended; // Mondphase, Winkel function age_of_moon(Date: TDateTime): Extended; // Mondalter in Tagen function current_phase(Date : TDateTime): Extended; // aktuelle Mondphase function moon_distance(Date: TDateTime): Extended; // Entfernung zum Mond function lunation(Date: TDateTime): Integer; // Mondwechsel, synodische Umlaufzeit (29,530589 d), Bezug 16.01.1923 function sun_distance(Date : TDateTime): Extended; // Entfernung zur Sonne function sun_diameter(Date : TDateTime): Extended; // rel. Sonnen-Durchmesser function moon_diameter(Date : TDateTime): Extended; // rel. Mond-Durchmesser function nextXXXgee(Date : TDateTime; apo: Boolean): TDateTime; // Berechnung Apogee, Perigee function nextperigee(Date : TDateTime): TDateTime; // Perigee, Ausgabe function nextapogee(Date : TDateTime): TDateTime; // Apogee, Ausgabe function StartSeason(year : Integer; season : TSeason): TDateTime; // Anfang d. Jahreszeiten function Eclipse(var Date : TDateTime; sun : Boolean) : TEclipse; // Finsternis function NextEclipse(var Date : TDateTime; sun : Boolean): TEclipse; // nächste Finsternis procedure correct_position(var position :t_coord; Date : TDateTime; Latitude, Longitude, Height: Extended); // Positionsberechnungen function Calc_Set_Rise(Date : TDateTime; Latitude, Longitude : Extended; sun: Boolean; kind: T_RiseSet): TDateTime; // Auf- Untergang, Berechnungen function Sun_Rise(Date : TDateTime; Latitude, Longitude : Extended; CalcType : TCalcType): TDateTime; // Sonnenaufgang function Sun_Set(Date : TDateTime; Latitude, Longitude : Extended; CalcType : TCalcType): TDateTime; // Sonnenuntergang function Sun_Transit(Date : TDateTime; Latitude, Longitude : Extended): TDateTime; // Sonnenhöchststand function Moon_Rise(Date : TDateTime; Latitude, Longitude : Extended): TDateTime; // Mondaufgang function Moon_Set(Date : TDateTime; Latitude, Longitude : Extended): TDateTime; // Monduntergang function Moon_Transit(Date : TDateTime; Latitude, Longitude : Extended): TDateTime; // Mondhöchststand function GetSternzeichen(const Date : TDateTime): Integer; // Sternzeichen --> uTable - Sternzeichen : array[1..12] of String function GetSeason(Date : TDate): String; // Jahreszeit function StartDateSeason(Date : TDate; Season : TSeason): TDate; // Anfangsdatum für Jahreszeiten function GetMoonPhase(const Date : TDateTime): String; // Mondphase (String) function GetFullMoonPhase(const Date : TDateTime): Boolean; // Vollmond ? function GetMoonPhaseNum(Age : Extended): Integer; // Mondphase (Integer, 1 .. 8) function DateTimeReal(DtTm : TDateTime; Long : Extended): TDateTime; // TDateTime an der aktuellen Position function DateTimeTZ(DtTm : TDateTime; Hour : ShortInt): TDateTime; // TDateTime in der Zeitzone procedure InitLocale; // lokale Einstellungen TDateTime function BlueMoon(Year : Word; WinterBefore : Boolean): TDateTime; // Datum BlueMoon --> 4 Vollmonde in einer Jahreszeit function DoubleMoon(Year, Month : Word): TDateTime; // Datum zweiter Vollmond in einem Monat
Markus H.
Geändert von markus5766h (21. Dez 2013 um 19:46 Uhr) |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |