Astrologische Berechnungen

AstroOL
Klasse LowPrecCalculator

java.lang.Object
  |
  +--AstroOL.Calculator
        |
        +--AstroOL.LowPrecCalculator
Alle implementierten Interfaces:
ICalculator

public class LowPrecCalculator
extends Calculator
implements ICalculator

Die Klasse LowPrecCalculator ergänzt die Klasse Calculator um explizite Methoden zur Berechnung der Planeten und Häuser. Die Berechnungen, die von der Calculator-Klasse normalerweise mittels eines Servlets im Backend ausgeführt werden, sind im LowPrecCalculator konkret ausprogrammiert.

Wie Calculator hat auch LowPrecCalculator den Zweck, astrologische Berechnungen effizient durchzuführen. Sie ist jedoch als Standalone Version gedacht, die auch offline verwendbar ist.- Um sie dennoch kompakt und schnell zu halten, wurde von den hohen Genauigkeitsansprüchen der Swiss Ephemeris abgerückt: Der LowPrecCalculator rechnet Planetenstände auf die Bogenminute genau, nur die Sonne ist auf die Bogensekunde genau, so dass auch Solarberechnungen möglich sind.

LowPrecCalculator erbt von Calculator, so dass keine doppelte Logik programmiert werden musste. Die meisten Hilfsfunktionen existierten bereits in der Nachfolgefunktion oder konnten leicht in diese übernommen werden.

Siehe auch:
Datenmodell und die Kompressionsmethode des LowPrecCalculator

Überblick Felder
static double cInvers
          Reziprokwert der Lichtgeschwindigkeit in d/AE
 double ee
          Schiefe der Ekliptik zur Instanz in Grad
static boolean geometric
          Gibt an, ob Aberration und Lichtlaufzeit berücksichtigt werden sollen.
 double[] h
          Häuserspitzen.
static byte hSystem
          Verwendetes Häusersystem.
 double lat
          Geographische Breite der Instanz (in Grad).
 double lon
          Geographische Länge der Instanz (in Grad).
static double naibod
          Naibodschlüssel (mittlere Bewegung der Sonne am Tag)
 double[] pb
          Ekliptikale Breiten der Planeten.
 double[] pl
          Ekliptikale Längen der Planeten.
 double ramc
          Rektaszension des Medium Coeli (RAMC) in Grad.
static double ST_UT
          Umwandlungsfaktor Sternzeit in Weltzeit
 double ut
          Weltzeit der Instanz
 double xjd
          Julianisches Datum der Instanz (in Ephemeridenzeit)
 
Von Klasse AstroOL.Calculator geerbte Felder
DEFAULT_LAT, DEFAULT_LON, digit, ECL, GEO, LAT, LONG, NO_ROUND, pknam, SEC, sknam, TIME, toDeg, toRad
 
Überblick Konstruktoren
LowPrecCalculator()
          Der leere Konstruktor instanziiert zum aktuellen Datum.
LowPrecCalculator(double xjd, double lon, double lat)
          Konstruktor mit Julianischem Datum, geographischer Länge und Breite
LowPrecCalculator(java.lang.String in)
          Konstruktor mit Zeit/Ort String.
 
Methoden-Überblick
static double[] brown(double jd)
          Mondephemeride nach Brown.
static double[] carpo(double[] car)
          Cartesische in Polarkoordinaten umwandeln.
static double[] compute(double jd)
          Die Längen der zehn astrologischen Planeten errechnen.
static void compute(double jd, double[][] lbr)
          Die vollständigen geozentrischen Polarkoordinaten der zehn astrologischen Planeten errechnen.
static double deltat(double xjd)
          Korrektur zur Umrechnung Weltzeit (UT) in Ephemeridenzeit (ET).
static double[] ekq(double e, double[] lb)
          Ekliptikale in aequatoriale Koordinaten umwandeln
 boolean getPlanetsAndHouses(double iXjd, double iLon, double iLat, double[] cPl, double[] cH)
          Implementierung der Methode ICalculator.getPlanetsAndHouses()
static double gst0(double jd)
          Greenwich Sternzeit (in Grad, also die RAMC) um 0h Weltzeit berechnen.
static double[] helge(double[] lbrHelio, double[] lbrEarth)
          Umrechnung von heliozentrisch auf geozentrisch.
static double[] kepler(double[] elements)
          Löst das Keplerproblem.
 double lst()
          Instanzmethode zur Methode lst(st0,ut,laenge).
static double lst(double st0, double ut, double laenge)
          RAMC aus: Greenwich-Sternzeit um 0 Uhr, Weltzeit und östl.
static double[] newcomb(double jd)
          Bogensekundengenaue Sonnenposition nach einer Reihenentwicklung von S.
 double nutation()
          Berechnet die Nutationskorrektur, die an die geozentrischen Längen zur mittleren Ekliptik des Datums anzubringen ist, um die sogenannten wahren Längen zu bekommen.
static double nutation(double jd)
          Berechnet die Nutationskorrektur, die an die geozentrischen Längen zur mittleren Ekliptik des Datums anzubringen ist, um die sogenannten wahren Längen zu bekommen
static double[] pocar(double[] lbr)
           
static double[] qek(double e, double[] rd)
          Aequatoriale in ekliptikale Koordinaten umrechnen
 void setServletURL(java.lang.String iServletURL)
          Leere Implementierung, da diese Klasse kein Backend benötigt
 double tilt()
          Instanzmethode zur Berechnung der Schiefe der Ekliptik.
static double tilt(double jd)
          Mittlere Schiefe der Ekliptik berechnen.
 java.lang.String toString()
          Ausgabe der Attribute einer Calculator-Instanz
 
Von Klasse AstroOL.Calculator geerbte Methoden
acos, analyzeString, arcdiff, arcdiffAbs, asin, atan, atan2, calendarDate, cos, date, dms, dms, doubleList, doubleList, doubleList, fabs, fmod, fmod360, fract, getHouse, getPlanet, getPlanetsAndHouses, getServletURL, julianDate, main, parseDoubleList, parseTimePlace, renderTimePlace, renderTimePlace, renderTimePlace, renderTimePlace, renderTimePlace, sgn, sin, sort, sort, tan, thisjd
 
Von Klasse java.lang.Object geerbte Methoden
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Vom Interface AstroOL.ICalculator geerbte Methoden
getHouse, getPlanet, getServletURL
 

Feld-Details

cInvers

public static final double cInvers
Reziprokwert der Lichtgeschwindigkeit in d/AE

ee

public double ee
Schiefe der Ekliptik zur Instanz in Grad

geometric

public static boolean geometric
Gibt an, ob Aberration und Lichtlaufzeit berücksichtigt werden sollen. Ist es gesetzt, so werden Aberration und Lichtlaufzeit nicht berücksichtigt. Man erhält die geometrischen Planetenpositionen

h

public double[] h
Häuserspitzen. Es ist
h[1] = Aszendent,
h[4] = I.C.,
h[7] = Deszendent,
h[10] = M.C.,
h[i] = i. Häuserspitze
in der in der Astrologie üblichen Zählweise.

hSystem

public static byte hSystem
Verwendetes Häusersystem.

lat

public double lat
Geographische Breite der Instanz (in Grad). Nördliche Breiten werden positiv, südliche negativ gerechnet.

lon

public double lon
Geographische Länge der Instanz (in Grad). Östliche Längen werden positiv, westliche negativ gerechnet.

naibod

public static final double naibod
Naibodschlüssel (mittlere Bewegung der Sonne am Tag)

pb

public double[] pb
Ekliptikale Breiten der Planeten. Die Indizierung entspricht der Reihenfolge (mit 0 = SO beginnend) im String Calculator.pknam.

pl

public double[] pl
Ekliptikale Längen der Planeten. Die Indizierung entspricht der Reihenfolge (mit 0 = SO beginnend) im String Calculator.pknam.

ramc

public double ramc
Rektaszension des Medium Coeli (RAMC) in Grad. Dies ist derselbe Wert wie die in Grad umgerechnete Ortssternzeit (LST)

ST_UT

public static final double ST_UT
Umwandlungsfaktor Sternzeit in Weltzeit

ut

public double ut
Weltzeit der Instanz

xjd

public double xjd
Julianisches Datum der Instanz (in Ephemeridenzeit)
Konstruktor-Details

LowPrecCalculator

public LowPrecCalculator()
Der leere Konstruktor instanziiert zum aktuellen Datum. Als Ort wird Zürich zugrundegelegt

LowPrecCalculator

public LowPrecCalculator(double xjd,
                         double lon,
                         double lat)
Konstruktor mit Julianischem Datum, geographischer Länge und Breite
Parameter:
xjd - Julianisches Datum in ET
lon - Geographische Länge
lat - Geographische Breite

LowPrecCalculator

public LowPrecCalculator(java.lang.String in)
Konstruktor mit Zeit/Ort String.
Parameter:
in - Eingabestring für Datum, Uhrzeit und Ort. Zum Format des Strings siehe die Methode Calculator.parseTimePlace()
Methoden-Details

brown

public static double[] brown(double jd)
Mondephemeride nach Brown. Es wird die Mondposition zur Ephemeridenzeit jd berechnet. Das Resultat ist in Länge auf 1-2 Bogenminuten genau.
Parameter:
jd - Julianisches Datum in ET (Ephemeridenzeit)
Rückgabewert:
Mondposition in Polarkoordinaten (Länge, Breite, Radiusvektor)

carpo

public static double[] carpo(double[] car)
Cartesische in Polarkoordinaten umwandeln.

compute

public static double[] compute(double jd)
Die Längen der zehn astrologischen Planeten errechnen. Die Genauigkeit der Methode liegt im Bereich von 1 Bogenminute.
Parameter:
jd - Julianisches Datum
Rückgabewert:
Array mit den zehn geozentrischen Planetenlängen. Die Reihenfolge entspricht der Reihenfolge der Planeten in der globalen Konstante Calculator.pknam

compute

public static void compute(double jd,
                           double[][] lbr)
Die vollständigen geozentrischen Polarkoordinaten der zehn astrologischen Planeten errechnen. Die Genauigkeit der Methode liegt im Bereich von 1 Bogenminute.
Parameter:
jd - Julianisches Datum
lbr - Zweidimensionaler Array mit den Ergebnissen. Der erste Index entspricht der Nummer des Planeten in der globalen Konstante Calculator.pknam. Der zweite Index zählt die drei Polarkoordinaten durch, in der Reihenfolge Länge, Breite, Distanz in AE.

deltat

public static double deltat(double xjd)
Korrektur zur Umrechnung Weltzeit (UT) in Ephemeridenzeit (ET). Es wird eine Nährungsformel von Stephenson und Morrison (Sun and Planetary System vol. 96 (1982), p.73) verwendet. Es gilt ET = UT + Delta T.
Parameter:
xjd - Julianisches Datum
Rückgabewert:
Korrektur in Tagen

ekq

public static double[] ekq(double e,
                           double[] lb)
Ekliptikale in aequatoriale Koordinaten umwandeln

getPlanetsAndHouses

public boolean getPlanetsAndHouses(double iXjd,
                                   double iLon,
                                   double iLat,
                                   double[] cPl,
                                   double[] cH)
Implementierung der Methode ICalculator.getPlanetsAndHouses()
Erklärt durch:
getPlanetsAndHouses in Interface ICalculator
Überschreibt:
getPlanetsAndHouses in Klasse Calculator
Folgendes kopiert von Interface: AstroOL.ICalculator
Parameter:
jd_ut - julianisches Datum in Weltzeit (nicht Ephemeridenzeit)
lon - geographische Länge des Ortes (für Hausberechnungen)
lat - geographische (nicht geozentrische) Breite des Ortes (für Hausberechnungen)
pl - die Referenz auf ein Array von doppeltgenauen Gleitkommazahlen mit mindestens zehn Elementen; die ersten zehn Elemente werden mit den geozentrischen ekliptikalen Planetenpositionen in der Reihenfolge SO, MO, ME, VE, MA, JU, SA, UR, NE und PL gefüllt.
h - die Referenz auf ein Array von doppeltgenauen Gleitkommazahlen mit mindestens dreizehn Elementen. Das erste Element (mit Index 0) bleibt leer. Das Element h[i] wird für i = 1 bis 12 mit dem Wert der i. Hausspitze gefüllt. Die Wahl oder gar Wählbarkeit des Häsersystems ist im Interface nicht festgelegt und stellt somit ein Implementierungsdetail dar.

gst0

public static double gst0(double jd)
Greenwich Sternzeit (in Grad, also die RAMC) um 0h Weltzeit berechnen.
Parameter:
jd - Julianisches Datum
Rückgabewert:
RAMC

helge

public static double[] helge(double[] lbrHelio,
                             double[] lbrEarth)
Umrechnung von heliozentrisch auf geozentrisch. Alle Positionen sind in Polarkoordinaten anzugeben. Diese werden in einem Array in der Form { Länge, Breite, Distanz } übergeben.

Ist das Flag geometric abgeschaltet (Default), so so wird an dieser Stelle auch die Aberration (nicht die Lichtlaufzeit) berücksichtigt, wobei näherungsweise die mittlere Erdgeschwindigkeit (Naibodbogen) verwendet wird.

Parameter:
lbrHelio - Heliozentrische Position des Objekts
lbrEarth - Heliozentrische Position der Erde
Rückgabewert:
Geozentrische Position des Objekts

kepler

public static double[] kepler(double[] elements)
Löst das Keplerproblem. Im Array elements[] werden die Bahnelemente sowie ein Korrekturterm für den Radiusvektor übergeben. Als Rückgabewert erhält man einen Array mit den Polarkoordinaten der Lösung des Keplerproblems.
Parameter:
elements - Bahnelemente. Übergeben werden
Grosse Halbachse= elements[0]
Exzentrizität = elements[1]
Bahnneigung = elements[2]
Aufst. Knoten = elements[3]
Perhihellänge = elements[4]
Mittl. Anomalie = elements[5]
Tagesbewegung = elements[6]
Korrektur für r = elements[7]

lst

public double lst()
Instanzmethode zur Methode lst(st0,ut,laenge). Es werden das Datum (xjd) und die Weltzeit (ut) der Instanz zugrundegelegt.
Rückgabewert:
Ortssternzeit in Grad ( = RAMC ).

lst

public static double lst(double st0,
                         double ut,
                         double laenge)
RAMC aus: berechnen.
Parameter:
st0 - Greenwich-Sternzeit (RAMC) um 0 Uhr Weltzeit, z.B. mit der Methode gst0() berechnet.
ut - Weltzeit in Stunden
laenge - geographische Länge in Grad
Rückgabewert:
Ortssternzeit in Grad ( = RAMC )

newcomb

public static double[] newcomb(double jd)
Bogensekundengenaue Sonnenposition nach einer Reihenentwicklung von S. Newcomb.
Parameter:
jd - Julianisches Datum in Ephemeridenzeit
Rückgabewert:
Polarkoordinaten der Sonne (Länge, Breite, Radius) in dieser Reihenfolge

nutation

public double nutation()
Berechnet die Nutationskorrektur, die an die geozentrischen Längen zur mittleren Ekliptik des Datums anzubringen ist, um die sogenannten wahren Längen zu bekommen.

Dies ist die Instanzmethode nutation(). Sie berechnet die Korrektur für das Julianische Datum der Instanz.

Rückgabewert:
Nutationskorrektur in Grad

nutation

public static double nutation(double jd)
Berechnet die Nutationskorrektur, die an die geozentrischen Längen zur mittleren Ekliptik des Datums anzubringen ist, um die sogenannten wahren Längen zu bekommen
Parameter:
jd - Julianisches Datum
Rückgabewert:
Nutationskorrektur in Grad

pocar

public static double[] pocar(double[] lbr)

qek

public static double[] qek(double e,
                           double[] rd)
Aequatoriale in ekliptikale Koordinaten umrechnen

setServletURL

public void setServletURL(java.lang.String iServletURL)
Leere Implementierung, da diese Klasse kein Backend benötigt
Erklärt durch:
setServletURL in Interface ICalculator
Überschreibt:
setServletURL in Klasse Calculator

tilt

public double tilt()
Instanzmethode zur Berechnung der Schiefe der Ekliptik. Es wird das Datum der Instanz zugrundegelegt.
Rückgabewert:
Mittlere Schiefe der Ekliptik in Grad

tilt

public static double tilt(double jd)
Mittlere Schiefe der Ekliptik berechnen.
Parameter:
jd - Julianisches Datum
Rückgabewert:
Mittlere Schiefe der Ekliptik in Grad

toString

public java.lang.String toString()
Ausgabe der Attribute einer Calculator-Instanz
Überschreibt:
toString in Klasse java.lang.Object

Astrologische Berechnungen