NB: Questa pagina è stata interamente riscritta in data 25-03-2019, alcune delle considerazioni fatte all'epoca della scrittura erano inesatte e fuorvianti, me ne scuso con i lettori
L'astrologia non usa un sistema di riferimento inerziale. Inerziale vuol dire che gli oggetti, se non sono sottoposti a forze esterne, mantengono la loro velocità iniziale. Se compaiono accelerazioni, quindi forze impresse agli oggetti, il sistema di riferimento NON è inerziale. Il più inerziale fra quelli disponibili è il International Celestial Reference Frame (ICRF), adottato dall'International Astroniomical Union dal 1 gennaio 1998, in sostituzione del precedente FK5. E' quasi inerziale perchè basato sulla misura di più di 200 sorgenti extragalattiche nello spazio profondo.
Precisiamo inoltre che gli astrologi usano un sistema di riferimento che è assolutamente non inerziale, perchè non è basato su punti fissi dello spazio profondo, ma su un punto di origine nel cerchio dell'eclittica, il punto vernale o 0° di Ariete, dato dall'intersezione di equatore ed eclittica, nell'istante in cui la declinazione solare (in termini di coordinate equatoriali) torna ad essere positiva. Questo vale per tutta la superficie terrestre, anche se i cicli stagionali variano da emisfero nord a emisfero sud, creando espressioni climatiche differenti.
Il punto vernale è dato dall' intersezione dell'equatore (che esprime il moto di rotazione terrestre) e dell'eclittica (cioè dal moto di rivoluzione della Terra intorno al Sole), ma risente di almeno altre due componenti del moto. Le quattro principali sono la rotazione, la rivoluzione, la precessione (che è un moto periodico di circa 26000 anni in cui il Polo Nord celeste descrive un cerchio nel riferimento inerziale) e la nutazione, che è un'ondulazione di quest'ultimo cerchio, come appare come nella figura seguente:
Nel post precedente abbiamo utilizzato il frame J2000, che la documentazione di SPICE descrive come "Earth mean equator, dynamical equinox of J2000. The root reference frame for SPICE". Ai fini astrologici dobbiamo passare ad un sistema di riferimento eclittico, dinamico, cioè tempo dipendente, che integri tutte le componenti principali del moto. Il JPL toolkit ci dà la possibilità di costruire un kernel su misura, che costruiremo secondo le regole indicate nella documentazione. In primo luogo renderemo dinamico il frame, riferito pero' al sistema di riferimento eclittico.
Usiamo un template che ci fornisce la documentazione:
FRAME_= FRAME_ _NAME = FRAME_ _CLASS = 5 FRAME_ _CLASS_ID = FRAME_ _CENTER = 399 FRAME_ _RELATIVE = 'ECLIPJ2000' FRAME_ _DEF_STYLE = 'PARAMETERIZED' FRAME_ _FAMILY = 'MEAN_ECLIPTIC_AND_EQUINOX_OF_DATE' FRAME_ _PREC_MODEL = 'EARTH_IAU_1976' FRAME_ _OBLIQ_MODEL = 'EARTH_IAU_1980' FRAME_ _ROTATION_STATE= 'ROTATING'
In primo luogo, essendo un frame kernel, sarà un file con estensione .tf:
NAIF recommends kernel names use only lower case letters. NAIF further recommends one follows the conventions established for kernel name extensions, shown below. .bc binary CK .bes binary Sequence Component EK .bpc binary PCK .bsp binary SPK .tf text FK .ti text IK .tls text LSK .tm text meta-kernel (FURNSH kernel) .tpc text PCK .tsc text SCLK
quindi lo salveremo, per esempio, come "trueepoch.tf".
Quindi assegneremo un frame_ID, che dovrà essere tra quelli consentiti da NAIF: "If the frame is a TK frame, the class ID must match the frame ID. For both ID codes you should use a positive integer in the range from 1400000 to 2000000 (unless you are working in an official project capacity in which case you should ask NAIF to provide a CLASS_ID for you)". Potremo scegliere un numero come 1987654, e sostituirlo nel template dove previsto.
FRAME_= 1987654 FRAME_1987654_NAME = FRAME_1987654_CLASS = 5 FRAME_1987654_CLASS_ID = 1987654 FRAME_1987654_CENTER = 399 FRAME_1987654_RELATIVE = 'ECLIPJ2000' FRAME_1987654_DEF_STYLE = 'PARAMETERIZED' FRAME_1987654_FAMILY = 'MEAN_ECLIPTIC_AND_EQUINOX_OF_DATE' FRAME_1987654_PREC_MODEL = 'EARTH_IAU_1976' FRAME_1987654_OBLIQ_MODEL = 'EARTH_IAU_1980' FRAME_1987654_ROTATION_STATE= 'ROTATING'
Per il frame name sceglieremo qualcosa di indicativo, da richiamare nella funzione spkezr_c già tradotta in Python in un post precedente, per esempio "MYTRUEEPOCH"
FRAME_MYTRUEEPOCH = 1987654 FRAME_1987654_NAME = 'MYTRUEEPOCH' FRAME_1987654_CLASS = 5 FRAME_1987654_CLASS_ID = 1987654 FRAME_1987654_CENTER = 399 FRAME_1987654_RELATIVE = 'ECLIPJ2000' FRAME_1987654_DEF_STYLE = 'PARAMETERIZED' FRAME_1987654_FAMILY = 'MEAN_ECLIPTIC_AND_EQUINOX_OF_DATE' FRAME_1987654_PREC_MODEL = 'EARTH_IAU_1976' FRAME_1987654_OBLIQ_MODEL = 'EARTH_IAU_1980' FRAME_1987654_ROTATION_STATE= 'ROTATING'
I primi 6-8 byte del file sono dedicati all'identificazione del tipo di kernel, per un kernel FK la dicitura prevista è KPL/FK, in una riga a se stante, seguito da una breve descrizione. Inoltre il blocco di definizioni deve essere compreso fra le istruzioni escaped \begindata e \begintext. Il risultato finale potrebbe essere:
KPL/FK private Kernel FK, dynamic, geocentric, time-based. It integrates precession, nutation and ecliptic obliquity models \begindata FRAME_MYTRUEEPOCH = 1987654 FRAME_1987654_NAME = 'MYTRUEEPOCH' FRAME_1987654_CLASS = 5 FRAME_1987654_CLASS_ID = 1987654 FRAME_1987654_CENTER = 399 FRAME_1987654_RELATIVE = 'ECLIPJ2000' FRAME_1987654_DEF_STYLE = 'PARAMETERIZED' FRAME_1987654_FAMILY = 'MEAN_ECLIPTIC_AND_EQUINOX_OF_DATE' FRAME_1987654_PREC_MODEL = 'EARTH_IAU_1976' FRAME_1987654_OBLIQ_MODEL = 'EARTH_IAU_1980' FRAME_1987654_ROTATION_STATE= 'ROTATING' \begintext
La classe 5 è prevista per i modelli dinamici, 'PARAMETERIZED' è una definizione di default, 'ROTATING' significa non inerziale. Non prevedo ulteriori informazioni testuali, per cui lascio vuoto lo spazio oltre \begintext.
Salviamo tutto come trueepoch.tf e cominciamo a usare il kernel.
Scriviamo un breve programma python che calcola le posizioni eclittiche di Sole, Luna e pianeti usando il nuovo modello per la data di oggi e per il mezzogiorno della data in cui sto scrivendo: 8-Ago-2017.
Codice e risultati riferiti a tale data:
from tools import * import jpltoolkit as jpl lista = [b"SUN", b"MOON", b"MERCURY", b"VENUS", b"MARS", b"JUPITER_BARYCENTER", b"SATURN_BARYCENTER", b"URANUS_BARYCENTER", b"NEPTUNE_BARYCENTER", b"PLUTO_BARYCENTER"] # kernels load jpl.furnsh_c(b'./de421.bsp') jpl.furnsh_c(b'./naif0012.tls') # calculate geocentric ecliptic coordinates jpl.furnsh_c(b'./trueepoch.tf') timestring = b"2013-08-08T12:00:00" ref = b"MYTRUEEPOCH" abcorr = b"NONE" print ("ecliptic coordinates (earthtrueeopch) 2013-08-08 12:00:00 UTC") for i in lista: target = i observer = b"EARTH" # first equatorial xyz = jpl.spkezr_c(target, ref, timestring, abcorr, observer) x = xyz[0]; y = xyz[1]; z = xyz[2] rec_vector = (x,y,z) result = jpl.reclat_c(rec_vector) a = result[1] while a < 0: a += math.pi*2 print ("reclat", i, result[0], ddd2dms(a * jpl.dpr_c()), ddd2dms(result[2] * jpl.dpr_c())) print("\n") print("\n") print("\n") --------------------------- ecliptic coordinates (earthtrueeopch) 2013-08-08 12:00:00 UTC ('reclat', 'SUN', 151683411.43760258, (136, 6, 25), (0, 0, 1)) ('reclat', 'MOON', 396667.3758218271, (154, 9, 47), (-4, 37, 28)) ('reclat', 'MERCURY', 165672145.9315892, (119, 59, 32), (0, 14, 9)) ('reclat', 'VENUS', 191961492.69616985, (170, 19, 16), (1, 4, 57)) ('reclat', 'MARS', 355674573.1827142, (107, 18, 15), (0, 46, 30)) ('reclat', 'JUPITER_BARYCENTER', 885254140.6884873, (99, 32, 37), (0, 9, 16)) ('reclat', 'SATURN_BARYCENTER', 1493132563.8426943, (215, 36, 25), (2, 20, 15)) ('reclat', 'URANUS_BARYCENTER', 2911577405.9178605, (12, 19, 43), (0, 42, 57)) ('reclat', 'NEPTUNE_BARYCENTER', 4341288355.286687, (334, 27, 18), (0, 40, 55)) ('reclat', 'PLUTO_BARYCENTER', 4737631830.616889, (279, 25, 10), (3, 8, 39))
Per confronto allego una copia della pagina corrispondente delle Rosycrucian Ephemeris 2000-2100 12h TDT (noon)- International Edition The Rosicrucian Felloship - Publisher - Oceanside). Si tenga comunque conto delle differenze di impostazione (TDT anzichè UTC, JPL DE102 anzichè JPL DE421, rotazione alla J2000 standard epoch, riduzione alle coordinate apparenti, deflessione della luce nel campo gravitazionale del Sole ecc.):
No comments:
Post a Comment