Bestimmung der Zeitpunkte von Ereignissen
ulrich
2023-04-17 5a9f2f4d4268c886576081970bc6b8f5dc311832
Orthodoxes Ostern berichtigt
1 files deleted
3 files modified
96 ■■■■■ changed files
src/de/uhilger/zeitrechnung/ereignis/OsterEreignis.java 14 ●●●●● patch | view | raw | blame | history
src/de/uhilger/zeitrechnung/kalender/ChristlicherKalender.java 55 ●●●●● patch | view | raw | blame | history
src/de/uhilger/zeitrechnung/kalender/ISOKalender.java 17 ●●●●● patch | view | raw | blame | history
src/de/uhilger/zeitrechnung/kalender/JulianischerKalender.java 10 ●●●●● patch | view | raw | blame | history
src/de/uhilger/zeitrechnung/ereignis/OsterEreignis.java
@@ -17,9 +17,11 @@
 */
package de.uhilger.zeitrechnung.ereignis;
import de.uhilger.zeitrechnung.kalender.ChristlicherKalender;
import de.uhilger.zeitrechnung.Datum;
import de.uhilger.zeitrechnung.Definition;
import de.uhilger.zeitrechnung.kalender.ISOKalender;
import de.uhilger.zeitrechnung.kalender.JulianischerKalender;
import de.uhilger.zeitrechnung.kalender.Wandler;
import java.util.ArrayList;
import java.util.List;
@@ -103,7 +105,6 @@
   */
  @Override
  public List<Datum> getZeitpunkte(long isoJahr) {
    ChristlicherKalender ck = new ChristlicherKalender();
    Definition def = getDefinition();
    if (ostern > Long.MIN_VALUE && jahr == isoJahr && osterArt == def.getp2()) {
      // Ostern wurde fuer das fragliche Jahr schon bestimmt
@@ -111,12 +112,15 @@
      jahr = isoJahr;
      osterArt = def.getp2();
      if (osterArt == WESTLICH) {
        ostern = ck.ostern(isoJahr);
        Wandler k = new ISOKalender();
        ostern = ((ISOKalender) k).ostern(isoJahr);
      } else {
        ostern = ck.orthodoxesOstern(isoJahr);
        Wandler k = new JulianischerKalender();
        ostern = ((JulianischerKalender) k).orthodoxesOstern(isoJahr);
      }
    }
    Datum d = ck.vonTagen(ostern + getDefinition().getp1());
    ISOKalender iso = new ISOKalender();
    Datum d = iso.vonTagen(ostern + getDefinition().getp1());
    ArrayList list = new ArrayList();
    list.add(d);
    return list;
src/de/uhilger/zeitrechnung/kalender/ChristlicherKalender.java
File was deleted
src/de/uhilger/zeitrechnung/kalender/ISOKalender.java
@@ -137,4 +137,21 @@
        return 31;
    }
  }  
  public long ostern(long gregorianischesJahr) {
    long jahrhundert = 1 + ganzzahlQuotient(gregorianischesJahr, 100);
    long veraenderlicheEpakte = modulo(14
            + 11 * modulo(gregorianischesJahr, 19)
            - ganzzahlQuotient(3 * jahrhundert, 4)
            + ganzzahlQuotient(5 + 8 * jahrhundert, 25),
            30);
    long berichtigteEpakte = veraenderlicheEpakte == 0 ||
            (veraenderlicheEpakte == 1 && 10 < modulo(gregorianischesJahr, 19))
            ? veraenderlicheEpakte + 1
            : veraenderlicheEpakte;
    long vollmondOstern = zuTagen(gregorianischesJahr, Definition.APRIL, 19) -
            berichtigteEpakte;
    return tagNach(vollmondOstern, Definition.SONNTAG);
  }
}
src/de/uhilger/zeitrechnung/kalender/JulianischerKalender.java
@@ -19,6 +19,8 @@
import de.uhilger.zeitrechnung.Datum;
import de.uhilger.zeitrechnung.Definition;
import static de.uhilger.zeitrechnung.Definition.APRIL;
import static de.uhilger.zeitrechnung.Definition.SONNTAG;
/**
 * Die Klasse JulianischerKalender dient zur Umwandlung von generischem 
@@ -93,6 +95,14 @@
    return new Datum(jahr, monat, tag);
  }
  
    public long orthodoxesOstern(long gJahr) {
        long berichtigteEpakte = modulo(14 + 11 * modulo(gJahr, 19), 30);
        long jJahr = gJahr > 0 ? gJahr : gJahr - 1;
        long pMond = zuTagen(jJahr, APRIL, 19) - berichtigteEpakte;
        return tagNach(pMond, SONNTAG);
    }
  /* ------------ Besonderheiten des Julianischen Kalenders ---------- */
  
  /**