Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Saturn's rings from measured radial profiles (optical depth and I/F)

Open
#217 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
42/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
javascript, three.js

Research direction

Start with js/scene/rings/ringPhotometry.js and the Lighting section of js/scene/rings/rings.md to understand how the current colour and opacity maps feed the slab model. Find Cassini UVIS or RSS optical-depth profiles and Cassini ISS or HST low-phase I/F measurements, then create 1-D textures that preserve the named ring gaps and document sources and licence in rings.md. Done means the rendered low-phase radial I/F is within about 20% of a published profile while integrated light still matches Mallama & Hilton.

Written by the indexing model from the issue text.

Description

What

Replace Saturn's ring colour and opacity maps (public/textures/saturnringcolor.png, saturnringalpha.png) with radial profiles from measurements. The profiles needed are the normal optical depth τ(r) and the reflectivity I/F(r) or particle albedo ϖ(r).

Why

The rings are now lit in exposure units by the classical single-scattering slab model (js/scene/rings/ringPhotometry.js; rings.md, Lighting). That model reads the colour map as the particles' albedo and the opacity map as 1 − e^(−τ). The maps are pictures, though, not measurements, and their radial structure isn't registered to the rings':

  • The map's brightest band is fairly opaque (stored value 0.8-1.0, opacity 0.6-0.9) and falls at 72-92 Mm. That is the C ring, which is the darkest and most transparent of the main rings (τ ≈ 0.1, I/F ≈ 0.1).
  • The Cassini Division reads 0.7 opaque.
  • The A ring reads about 0.3 opaque, where its τ is 0.4-1.

The integrated light is calibrated: RING_ALBEDO_SCALE matches Mallama & Hilton's ring term at B = 26.6°, and agrees to 0.04 mag at B = 7.4°. The radial distribution of that light is not.

Scope

  • τ(r) from Cassini UVIS or RSS occultations (PDS Rings Node).
  • I/F(r) at low phase from Cassini ISS or HST, giving ϖ(r) through the slab model.
  • A 1-D texture of each at a resolution that keeps the Encke and Keeler gaps and the Cassini Division.
  • Document the sources and licence in rings.md, and refit RING_ALBEDO_SCALE.
  • Optional: the ring's shadow on the globe as e^(−τ/μ₀) (injectPlanetShadow). Today it is 1 − 0.9·opacity.

Done when

The rendered radial I/F profile at low phase matches a published one within about 20%, and the integrated light still matches Mallama & Hilton.

Follow-up from the PR that made the rings physical (sky gains PR, atmospheres' double-counted falloff).

Dominant language
JavaScript
Stars
55
Forks
4
Avg merge
10h 12m
Merged PRs (30d)
134

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from celestiary/web

All issues in celestiary/web

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.