尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Interactive 3D WebGL globe visualizing the El Niño–Southern Oscillation (ENSO), Walker atmospheric circulation, and historical climate impacts.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗An interactive 3D WebGL climatological simulation visualizing the El Niño–Southern Oscillation (ENSO) cycle and Super El Niño extremes. Built with Angular 21, Three.js, and modern SCSS design tokens.
🔗 Explore Live Demo: https://kmd-labs.github.io/el-nino/
Interactive 3D WebGL Globe:
world-atlas GeoJSON) with offline local asset fallback.Walker Circulation & Thermocline (merged view):
Live data & splash experience:
Historical Impacts Database:
Simulation & Time Controls:
The codebase follows modern Angular standalone component architecture with reactive state management powered by Angular Signals:
src/
├── _variables.scss # Reusable SCSS design system tokens (colors, radii, mixins, glass panels)
├── styles.scss # Global resets and typography
├── index.html # HTML entry point configured for GitHub Pages
├── main.ts # Application bootstrap
├── app/
│ ├── app.component.ts|html|scss# Root application shell
│ ├── core/
│ │ ├── constants/
│ │ │ └── enso-data.ts # Scientific data constants, color LUTs, and historical event records
│ │ ├── models/
│ │ │ └── enso.model.ts # TypeScript interfaces and domain types
│ │ └── services/
│ │ ├── enso-math.service.ts # Pure math model (climatology, anomalies, thermocline, 3D math)
│ │ └── enso-state.service.ts# Centralized reactive state using Angular Signals
│ └── components/
│ ├── globe/ # Three.js 3D viewport, particles, labels, and raycasting
│ ├── header/ # Brand logotype, language selector and view switcher
│ ├── map-dock/ # Floating glassmorphic control dock, date pill and legends
│ ├── walker-view/ # Walker circulation + thermocline cross-section
│ ├── splash/ # Host timing for the shared design-system loader
│ ├── impact-modal/ # Event detail dialog with external research links
│ └── glossary/ # Searchable glossary popup
└── assets/
└── data/
├── land-50m.json # Bundled Natural Earth land topology
├── timeline-meta.json # Weekly keyframes, live Open-Meteo snapshot
└── timeline-sst.bin.gz # Packed 0.5° weekly SST frames
All UI styling is strictly tokenized in src/_variables.scss:
$colors, $breakpoints, $transitions, $radii, $font-weights, $font-sizes.color($key), radius($key), font-size($key), font-weight($key), transition($key).@mixin glass-panel($heavy): Glassmorphic panel styling with backdrop-filter: blur(...) and glowing border highlights.@mixin respond-to($breakpoint): Mobile-first responsive layout breakpoints.@mixin custom-scrollbar: Sleek, unobtrusive dark-theme scrollbars.Sea Surface Temperature (SST) Climatology: $$T_{\text{clim}}(\lambda, \phi) = -1.8 + 30.5 \cos^{2.2}(\phi) + \sum_{k} A_k \exp\left(-\frac{\Delta\lambda_k^2}{w_k^2}\right) \exp\left(-\frac{\phi^2}{\sigma_k^2}\right)$$ Models the Pacific warm pool, equatorial cold tongue, Humboldt Current, and global oceanic features.
ENSO Anomaly Formulation: $$A(\lambda, \phi, s) = \begin{cases} s \cdot \text{basis}_P + \max(0, s - 1.4) \cdot \text{basis}_C & \text{if } s \ge 0 \ -s \cdot \text{basis}_N & \text{if } s < 0 \end{cases}$$ Incorporates the non-linear coastal Peruvian warming characteristic of historic Super El Niño events (1982–83, 1997–98, 2015–16).
Thermocline Profile: Calculates the 20 °C isotherm depth across $120^\circ\text{E} \to 80^\circ\text{W}$ coupled to trade wind strength variations: $$z(\lambda, s) = -1.75 + 0.85 \cdot \text{trade}(s) \cdot u(\lambda)$$
# Clone the repository
git clone https://github.com/kmd-labs/el-nino.git
cd el-nino
# Install dependencies
npm install
# Start local development server (runs on http://localhost:4200/)
npm start
# Production build
npm run build
# Production build with GitHub Pages base-href
npm run build:gh-pages
Deployments to GitHub Pages are automated via .github/workflows/deploy.yml:
main, scheduled every 3 hours, repository dispatch or manual workflow_dispatch.ubuntu-latest, refreshes the live Open-Meteo snapshot and NOAA OISST frames, compiles the application with npm run build:gh-pages (--base-href /el-nino/), and uploads static assets via actions/upload-pages-artifact@v3.actions/deploy-pages@v4.dist/) is gitignored, and build artifacts reside strictly in ephemeral runner environments..github/workflows/update-weather.yml runs daily at 05:17 UTC. It extends the weekly NOAA OISST backfill, refreshes the Open-Meteo air-temperature/wind/wave snapshot in src/assets/data/, commits the updated data to main, and dispatches the Pages deployment. The NOAA NetCDF downloads are cached between runs.