|
1 | | -# Caelis Engine 3.0 |
| 1 | +# ⊛ Caelis Engine 3.0 |
2 | 2 |
|
3 | | -**An Astronomical + Astrological Engine for Modern Apps.** |
| 3 | +**Motor astronómico contemplativo — Hermetica Labs** |
4 | 4 |
|
5 | | -Caelis Engine computes real planetary positions using professional-grade algorithms, renders them as a living symbolic instrument, and exposes a full astrological analysis framework — all in a **single HTML file with zero dependencies**. |
6 | | - |
7 | | -[**→ Live Demo**](https://hermeticalabs.github.io/caelis-engine) · [**License**](#license) · [**Author**](#author) |
| 5 | +Caelis Engine es un instrumento astronómico de alta precisión ejecutado completamente en el navegador, sin dependencias de servidor. Combina cálculo astronómico riguroso (VSOP87, ELP/MPP02, IAU 2000B) con una interfaz contemplativa diseñada para la observación y el estudio del cielo. |
8 | 6 |
|
9 | 7 | --- |
10 | 8 |
|
11 | | -## What problem does it solve? |
12 | | - |
13 | | -Most astronomical software is either: |
14 | | - |
15 | | -- **Too scientific** — raw data with no symbolic or contemplative layer |
16 | | -- **Too decorative** — beautiful visuals with imprecise or opaque math |
17 | | -- **Too heavy** — frameworks, build steps, backends, APIs |
18 | | - |
19 | | -Caelis Engine sits at the intersection: **mathematically rigorous, symbolically expressive, and radically simple to run.** |
| 9 | +## Uso |
20 | 10 |
|
21 | | -No npm install. No build step. No server. Open the file. It works. |
| 11 | +Abre `caelis_engine_3_0.html` directamente en el navegador. No requiere instalación ni servidor. |
22 | 12 |
|
23 | 13 | ``` |
24 | | -Symbol → Structure → Simulation |
| 14 | +caelis_engine_3_0.html ← instrumento completo, autocontenido |
25 | 15 | ``` |
26 | 16 |
|
27 | 17 | --- |
28 | 18 |
|
29 | | -## What it does |
30 | | - |
31 | | -### 🌐 Caelis 2D — Real-time Sky Instrument |
32 | | -- Computes Sun, Moon, and all classical planets using **VSOP87B** (planets) and **ELP/MPP02-LLR** (Moon) |
33 | | -- Renders a real-time **2D sky map** with horizon, ecliptic, house cusps, Milky Way, and 600 background stars |
34 | | -- **Galactic coordinates**: accurate Milky Way band using IAU pole transformation |
35 | | -- **Day/night cycle**: organic sky gradient anchored to the real Sun position |
36 | | -- **Aspect lines**: active conjunctions, oppositions, trines, squares, sextiles with glow |
37 | | -- **Perimeter glow**: visual encoding of active aspects, natal transits, and eclipses |
38 | | -- Click/tap any planet, star, sign, or aspect to open a detailed modal |
39 | | - |
40 | | -### 🔭 Armilar — 3D Celestial Sphere |
41 | | -- Three.js orbital sphere where planets move in **true RA/Dec coordinates** from the engine |
42 | | -- **Armilar Mode**: toggle real positions vs. artistic free-orbit, with animated blend |
43 | | -- Configurable visual layers: Ecliptic, Equator, Horizon, Meridian, Dec grid |
44 | | -- Logarithmic vs. uniform radial scale (orbital proportions) |
45 | | -- 6 color palettes · Configurable trails and glow |
46 | | -- **Transformare Astralis**: cinematic transition ritual between 2D and 3D modes |
47 | | - |
48 | | -### ⊕ Astrolabe — Stereographic Projection |
49 | | -- Classical astrolabe rendering: **Tympanum** (horizon, almucantars, azimuths) + **Rete** (ecliptic, stars, planet pointers) |
50 | | -- Limbo with 360° graduation |
51 | | -- Planets positioned as astrolabe pointers on the ecliptic ring |
52 | | - |
53 | | -### ☊ Atacir — Predictive Analysis |
54 | | -- **Primary directions** (Al-Biruni / Ptolemy / Naibod) by oblique ascension |
55 | | -- Natal aspects with exactitude bars and orb classification |
56 | | -- Transit aspects overlaid on natal chart |
57 | | -- Synastry (cross-aspects between two charts, house overlay, antiscia) |
58 | | -- Planetary cycles, return analysis, resonance detection |
59 | | -- Lunar analysis: phases, perigee/apogee (Meeus Ch.50), nodal returns |
60 | | -- Export to JSON and plain text |
61 | | - |
62 | | -### ☽ Panchanga — Vedic Almanac |
63 | | -- **Lahiri Ayanamsa** (IAU 1955, 2nd-order precession) |
64 | | -- All 5 elements: Tithi, Vara, Nakshatra (27), Yoga (27), Karana |
65 | | -- Real-time countdown to next change for each element |
66 | | - |
67 | | -### ⊗ Eclipse Calculator |
68 | | -- Solar and lunar eclipses using **Meeus Ch.54** |
69 | | -- Total, annular, partial classification |
70 | | -- Geolocation-aware visibility |
71 | | -- Click any eclipse row to jump the engine to that exact moment |
72 | | - |
73 | | -### ⊞ Ephemeris Dashboard |
74 | | -- Full real-time table: ecliptic λ/β, RA/Dec, altitude, azimuth, distance (AU), angular velocity (°/day) |
75 | | -- **Rise/Set times** with Meeus Ch.15 3-point interpolation + ΔT correction |
76 | | -- Sidereal time (GST/LST), obliquity, ΔT |
77 | | - |
78 | | -### 🗺️ Natal Chart — SVG Renderer |
79 | | -- Full SVG wheel with zodiac band, house cusps, aspect lines |
80 | | -- **Bi-wheel** for synastry (two charts concentric) |
81 | | -- Exportable as SVG/PNG |
82 | | -- Essential dignities: domicile, exaltation, detriment, fall |
83 | | -- Elemental and modal distribution |
84 | | - |
85 | | ---- |
86 | | - |
87 | | -## Why it's different |
88 | | - |
89 | | -| Feature | Caelis Engine 3.0 | Typical astro library | Typical sky app | |
90 | | -|---|---|---|---| |
91 | | -| VSOP87B + ELP/MPP02-LLR | ✓ | sometimes | rarely | |
92 | | -| IAU 2000B Nutation | ✓ | rarely | no | |
93 | | -| Verified against JPL Horizons | ✓ | rarely | no | |
94 | | -| Zero dependencies | ✓ | no | no | |
95 | | -| Symbolic + scientific layer | ✓ | no | no | |
96 | | -| Panchanga / Vedic almanac | ✓ | rarely | no | |
97 | | -| Synastry + Atacir directions | ✓ | rarely | no | |
98 | | -| Eclipse calculator (Meeus 54) | ✓ | rarely | no | |
99 | | -| Armilar 3D (real RA/Dec) | ✓ | no | no | |
100 | | -| Astrolabe stereographic | ✓ | no | no | |
101 | | -| Single file, runs in browser | ✓ | no | no | |
102 | | - |
103 | | ---- |
104 | | - |
105 | | -## Precision |
106 | | - |
107 | | -All results verified — **30/30 tests PASS** (`validation.html`). |
108 | | - |
109 | | -### Moon · ELP/MPP02-LLR (Meeus Example 47.a · JDE 2448724.5) |
110 | | - |
111 | | -| Quantity | Computed | Meeus reference | Error | |
112 | | -|---|---|---|---| |
113 | | -| λ Ecliptic longitude | 133.1782° | 133.1627° | **0.016°** | |
114 | | -| β Ecliptic latitude | −3.2286° | −3.2291° | **0.001°** | |
115 | | -| Δ Geocentric distance | 368,436 km | 368,409.7 km | **27 km** | |
116 | | - |
117 | | -### Sun · VSOP87B (Meeus Cap.25) |
118 | | - |
119 | | -| Date | Computed | Reference | Error | |
120 | | -|---|---|---|---| |
121 | | -| 1992-10-13 (Libra) | 199.9068° | 199.906° | **< 0.001°** | |
122 | | -| 1992-04-12 (Taurus) | 22.3402° | 22.340° | **< 0.001°** | |
123 | | - |
124 | | -### Planets · JPL Horizons (2026-03-08 12:00 UTC) |
| 19 | +## Arquitectura |
125 | 20 |
|
126 | | -| Planet | Computed | JPL Horizons | Error | |
127 | | -|---|---|---|---| |
128 | | -| Venus | 2.5469° | 2.5500° | **0.003°** | |
129 | | -| Mars | 334.6487° | 334.6500° | **0.001°** | |
130 | | -| Jupiter | 105.0983° | 105.1000° | **0.002°** | |
131 | | -| Saturn | 2.6230° | 2.6200° | **0.003°** | |
| 21 | +Caelis Engine 3.0 es un **monolito de archivo único** (~540 KB). Todo el motor astronómico, la interfaz, los algoritmos de cálculo y la visualización 3D están contenidos en un solo archivo HTML. |
132 | 22 |
|
133 | | -### Other components |
| 23 | +### Estructura interna |
134 | 24 |
|
135 | | -| Component | Result | |
136 | | -|---|---| |
137 | | -| IAU 2000B Nutation ΔΨ | < 1 mas vs Meeus | |
138 | | -| IAU 2006 Obliquity ε | < 0.002° vs Meeus | |
139 | | -| Lahiri Ayanamsa (2nd order) | Lieske 1977 precession integration | |
140 | | -| Lunar phases (JDE) | error < 0.17 days vs Meeus Ch.49 | |
141 | | -| Placidus cusps | Newton-Raphson iteration, 12/12 correct | |
142 | | -| Lunar nodes | 15-term series, Meeus Ch.47 | |
143 | | -| Eclipse detection | Meeus Ch.54, solar + lunar | |
144 | | -| Rise/Set times | 3-point interpolation + ΔT correction | |
| 25 | +``` |
| 26 | +caelis_engine_3_0.html |
| 27 | +├── Motor de tiempo currentTime(), julianDate(), deltaT() |
| 28 | +├── Algoritmos planetarios VSOP87B (Mercurio–Saturno), ELP/MPP02 (Luna) |
| 29 | +├── Correcciones Nutación IAU 2000B, aberración anual, light-time |
| 30 | +├── Correcciones topocéntricas paralaje diurno, refracción atmosférica |
| 31 | +├── Módulo Rise/Set Meeus Cap.15, interpolación 3 puntos, ΔT correcto |
| 32 | +├── Dashboard de efemérides RA, Dec, Alt, Az, Dist, Vel, Rise, Set |
| 33 | +├── Visualización 2D Astrolabio estereográfico, modo Oculus 2D |
| 34 | +└── Visualización 3D Three.js (modo reservado) |
| 35 | +``` |
145 | 36 |
|
146 | | -**Valid range:** 1800–2100 CE at full precision. |
| 37 | +### Algoritmos de precisión |
| 38 | + |
| 39 | +| Cuerpo | Algoritmo | Precisión | |
| 40 | +|--------|-----------|-----------| |
| 41 | +| Mercurio | VSOP87B oficial (IMCCE, 122 términos) | ±3" longitud | |
| 42 | +| Venus | VSOP87 (Meeus App.II, ~79 términos) | ±5" | |
| 43 | +| Tierra | VSOP87 (Meeus App.II, ~185 términos) | ±1" | |
| 44 | +| Marte | VSOP87 (Meeus App.II, ~152 términos) | ±15" | |
| 45 | +| Júpiter | VSOP87 (Meeus App.II, ~141 términos) | ±30" | |
| 46 | +| Saturno | VSOP87 (Meeus App.II, ~167 términos) | ±40" | |
| 47 | +| Luna | ELP/MPP02 (164L + 105B + 29R términos) | ±30" longitud | |
| 48 | +| Sol | VSOP87 Tierra invertido + nutación + aberración | ±1" | |
| 49 | + |
| 50 | +Correcciones aplicadas a todos los cuerpos: |
| 51 | +- Nutación IAU 2000B (Δψ, Δε) |
| 52 | +- Aberración anual (Meeus §23) |
| 53 | +- Tiempo de luz (light-time, iterativo) |
| 54 | +- Corrección topocéntrica (paralaje diurno, RA y Dec) |
| 55 | +- ΔT (tabla IERS interpolada, 1900–2030) |
| 56 | + |
| 57 | +### Rise / Set |
| 58 | + |
| 59 | +Implementación Meeus Cap.15 con: |
| 60 | +- Interpolación cuadrática de 3 puntos (t−1d, t₀, t+1d) |
| 61 | +- ΔT aplicado al GMST (JD UT, no TT) |
| 62 | +- 3 iteraciones de corrección de altitud |
| 63 | +- h₀ correcto por cuerpo: Sol −50', Luna +7', planetas −34' |
| 64 | +- Hora local automática vía `Date.getTimezoneOffset()` |
147 | 65 |
|
148 | 66 | --- |
149 | 67 |
|
150 | | -## Quickstart |
151 | | - |
152 | | -```bash |
153 | | -git clone https://github.com/HermeticaLabs/caelis-engine |
154 | | -# Open index.html in any modern browser |
155 | | -# No install. No build. No server required. |
156 | | -``` |
157 | | - |
158 | | -Or use the JavaScript API directly: |
159 | | - |
160 | | -```javascript |
161 | | -// All computation happens inside index.html — expose via AstroSync |
162 | | -const snap = window.AstroSync.getSnapshot(); |
| 68 | +## Módulos fuente (referencia) |
163 | 69 |
|
164 | | -console.log(snap.bodies.Sol.lon_ecl); // Sun ecliptic longitude |
165 | | -console.log(snap.bodies.Luna.lon_ecl); // Moon ecliptic longitude |
166 | | -console.log(snap.houses.asc); // Ascendant |
167 | | -console.log(snap.luna.illumination); // Moon illumination 0–1 |
| 70 | +La carpeta `src/` contiene los módulos que fueron la base de desarrollo de versiones anteriores. En v3.0, toda la lógica está consolidada en el monolito. |
168 | 71 |
|
169 | | -// Compute for any moment and location |
170 | | -const historical = window.AstroSync.getSnapshotAt( |
171 | | - 2451545.0, // JDE (J2000.0) |
172 | | - -33.45, // latitude |
173 | | - -70.66 // longitude |
174 | | -); |
175 | 72 | ``` |
176 | | - |
177 | | -Run the precision test suite: |
178 | | - |
179 | | -```bash |
180 | | -# Serve locally and open validation.html |
181 | | -npx serve . |
182 | | -# → http://localhost:3000/validation.html |
| 73 | +src/ |
| 74 | +├── vsop87/ Coeficientes VSOP87B fuente |
| 75 | +├── elp/ Tablas ELP/MPP02 |
| 76 | +└── utils/ Utilidades de formateo y conversión |
183 | 77 | ``` |
184 | 78 |
|
185 | 79 | --- |
186 | 80 |
|
187 | | -## Architecture |
| 81 | +## Tests |
188 | 82 |
|
189 | 83 | ``` |
190 | | -caelis-engine/ |
191 | | -├── index.html ← Caelis Engine 3.0 — full instrument (zero deps) |
192 | | -├── validation.html ← Precision test suite — 30/30 PASS |
193 | | -├── caelis_engine_1_5.html ← Legacy v1.5 (archived) |
194 | | -└── src/ |
195 | | - ├── astro/ |
196 | | - │ └── AstroCore.js ← VSOP87B, ELP/MPP02, IAU 2000B, coordinate transforms |
197 | | - ├── TimeEngine.js ← Julian dates, ΔT, sidereal time, time control |
198 | | - └── Atacir.js ← Directions, aspects, cycles, resonances, Panchanga |
| 84 | +tests/validation.html Suite de 30 tests contra Meeus y JPL Horizons |
199 | 85 | ``` |
200 | 86 |
|
201 | | -### Key modules inside `index.html` |
202 | | - |
203 | | -**Astronomical kernel** |
204 | | -- `sunPosition()` — VSOP87B + nutation + aberration + light-time |
205 | | -- `moonPosition()` — ELP/MPP02-LLR (164L + 105B + 60R terms) + topocentric parallax |
206 | | -- `planetPosition(name)` — VSOP87B for Mercury, Venus, Mars, Jupiter, Saturn |
207 | | -- `lunarNodes()` — 15-term series (Meeus Ch.47) |
208 | | -- `nutation(T)` — IAU 2000B (77 luni-solar terms) |
209 | | -- `deltaT(jd)` — Extended table 500–2150 CE + Morrison & Stephenson extrapolation |
210 | | - |
211 | | -**Analysis** |
212 | | -- `calcAtacirCore()` — Primary directions (oblique ascension method) |
213 | | -- `calcPanchangaCore()` — Full Panchanga with Lahiri ayanamsa |
214 | | -- `calcEclipsesCore()` — Solar/lunar eclipse detection (Meeus Ch.54) |
215 | | -- `calcSinastriaCore()` — Cross-chart aspects with symbolic weighting |
216 | | -- `getSnapshotAt(jd, lat, lon)` — Full ephemeris for any moment/location |
217 | | - |
218 | | -**Rendering** |
219 | | -- `draw()` — 2D sky canvas (Canvas API) |
220 | | -- `drawAstrolabio()` — Stereographic projection (tympanum + rete) |
221 | | -- `renderOculus()` — 3D Armilar sphere (Three.js r128) |
222 | | -- `_cartaRenderSVG()` — Natal chart SVG wheel |
223 | | -- `_cartaRenderBiwheel()` — Synastry bi-wheel SVG |
224 | | - |
225 | | ---- |
226 | | - |
227 | | -## Mathematical Foundations |
228 | | - |
229 | | -- Jean Meeus — *Astronomical Algorithms*, 2nd ed. |
230 | | -- **VSOP87B** — Bretagnon & Francou (1987), IMCCE |
231 | | -- **ELP/MPP02** — Chapront & Francou (2002), A&A 412 — calibrated with LLR data |
232 | | -- **IAU 2000B** — Mathews, Herring & Buffett (2002), IERS Conventions 2003 §5.4 |
233 | | -- **IAU 2006** Obliquity — Capitaine et al. (2006) |
234 | | -- **Lahiri Ayanamsa** — IAU 1955 + Lieske (1977) 2nd-order precession |
235 | | -- **Atacir** — Al-Biruni / Ptolemy / Naibod oblique ascension method |
236 | | -- **ΔT table** — Morrison & Stephenson (2004), IERS Bulletins, USNO Circular 179 |
| 87 | +Ejecutar: abrir `tests/validation.html` en el navegador. |
237 | 88 |
|
238 | 89 | --- |
239 | 90 |
|
240 | 91 | ## Changelog |
241 | 92 |
|
242 | | -### v3.0 (2026-04-11) |
243 | | -- **Armilar 3D Mode**: real RA/Dec positioning, configurable layers (ecliptic, equator, horizon, meridian, Dec grid), logarithmic/uniform radial scale, 6 palettes, animated blend real ↔ free |
244 | | -- **Astrolabe**: full stereographic projection with tympanum + rete |
245 | | -- **Ephemeris Dashboard**: complete real-time table with rise/set (Meeus Ch.15 + ΔT) |
246 | | -- **Natal Chart SVG**: full wheel renderer + synastry bi-wheel, exportable |
247 | | -- **Eclipse Calculator**: Meeus Ch.54 solar/lunar, geolocation visibility, jump-to feature |
248 | | -- **Panchanga**: all 5 elements, 2nd-order Lahiri ayanamsa, real-time countdowns |
249 | | -- **Synastry**: cross-aspects, house overlay, antiscia, symbolic weighting |
250 | | -- **IAU 2000B** nutation replacing IAU 1980 (< 1 mas accuracy) |
251 | | -- **ELP/MPP02-LLR** replacing ELP2000 (LLR-calibrated coefficients) |
252 | | -- **VSOP87B** Mercury (122 terms) replacing simplified equation of center |
253 | | -- **ΔT** extended table 500–2150 CE |
254 | | -- Rise/Set: 3-point interpolation + ΔT correction (< 1 min accuracy) |
255 | | -- Perimeter glow system (aspects, natal transits, eclipses) |
256 | | -- i18n: ES/EN with full string tables |
257 | | -- Freemium license system with SHA-256 key validation + device fingerprint |
258 | | - |
259 | | -### v2.2 (2026-03-01) |
260 | | -- IAU 2000B nutation (transition) |
261 | | -- Panchanga (Tithi + Vara free tier) |
262 | | -- Sinastry core |
263 | | -- Eclipse calculations (Meeus Ch.54) |
264 | | -- Expanded ELP/MPP02 lunar terms |
265 | | - |
266 | | -### v1.5 (2026-01-15) |
267 | | -- Initial public release |
268 | | -- VSOP87 planets, ELP2000 Moon |
269 | | -- 2D sky map, horizon, Placidus houses |
270 | | -- Atacir primary directions |
271 | | -- Validation suite (30/30) |
272 | | - |
273 | | ---- |
274 | | - |
275 | | -## License |
276 | | - |
277 | | -Caelis Engine is dual-licensed: |
278 | | - |
279 | | -**Open Source — AGPL-3.0** |
280 | | -Free to use, study, modify and share. If you use Caelis Engine in a product or service, you must publish your source code under the same terms. |
281 | | - |
282 | | -**Commercial License — Hermetica Labs** |
283 | | -For use in proprietary products or services without the AGPL source disclosure requirement. |
284 | | -Contact: [hermeticalabs.dev@proton.me](mailto:hermeticalabs.dev@proton.me) |
| 93 | +Ver [CHANGELOG.md](CHANGELOG.md) para historial completo de versiones. |
285 | 94 |
|
286 | 95 | --- |
287 | 96 |
|
288 | | -## Author |
289 | | - |
290 | | -**Cristian Valeria Bravo** · [Hermetica Labs](https://github.com/HermeticaLabs) |
| 97 | +## Licencia |
291 | 98 |
|
292 | | -*Caelis Engine exists at the boundary between mathematical precision and symbolic observation — where the structure of time becomes navigable.* |
| 99 | +**CC BY-NC-ND 4.0** — Hermetica Labs |
| 100 | +Uso permitido con atribución. No comercial. Sin obras derivadas. |
293 | 101 |
|
294 | | -© 2024–2026 Cristian Valeria Bravo / Hermetica Labs |
| 102 | +© 2024–2026 Hermetica Labs · [github.com/HermeticaLabs](https://github.com/HermeticaLabs) |
0 commit comments