A sundog is geometry doing optics.
Geometry follows Greenler (1980) and Tape (1994); see History & reading for citations.
Every visible arc in a sundog photograph is a slice of a complete circle. The live atlas keeps the physics visible: the 22° halo for scale, parhelia for the promoted inverse, and boundary-gated arcs such as the CZA and upper tangent arc. Rendered does not mean promoted: most layers are forward geometry or vocabulary; only the eligible parhelion-offset route is currently treated as a hidden-state measurement handle.
Every bright feature has a name.
When you photograph a sundog you don't see one phenomenon; you see a stack of them. The bright spots at the sun's left and right are the parhelia. The white ring around the sun is the 22° halo. The colorful arc near the top of the sky is the circumzenithal arc. The vertical light shaft is the sun pillar. Each is its own geometric primitive, but they do not carry the same evidence weight.
- 22° halo
- Tight ring around the sun. Most commonly seen alone.
- 46° halo
- Larger faint ring, roughly twice the 22° halo's radius.
- Sundog / parhelion
- Bright spot on the parhelic circle at the sun's altitude, just outside the 22° halo.
- Parhelic circle
- Horizontal great circle through the sun. Looks roughly horizontal in a photo.
- Circumzenithal arc (CZA)
- Colorful "smile" near the zenith, tangent to the 46° halo at its top.
- Supralateral arc
- Less common arc tangent to the 46° halo, just outside the CZA.
- Upper tangent arc
- "Eyelid" tangent to the 22° halo's top, from column-oriented crystals.
- Suncave Parry arc
- Parry-orientation cousin of the upper tangent, nested inside it.
- Lower tangent arc
- Mirror of upper tangent at the 22° halo's bottom edge.
Why do the bright spots sit at 22° from the sun?
Sundogs form when sunlight refracts through hexagonal ice crystals: tiny six-sided columns or plates falling through high cirrus clouds. A light ray entering one face of a hexagonal column and exiting an adjacent face traverses a 60° prism. The minimum-deviation angle of that prism for visible light in ice is almost exactly 22°. So most refracted light bunches up at 22° from the source. To an observer, that's a bright spot 22° away from the sun.
Machine-checked core: the public Lean proof now checks the calculus part of that sentence: the symmetric ray is stationary for the prism deviation function. The proof names, but does not prove, the physical optics wall. Lean method ledger.
The two crystal families that matter for the most common arcs:
Plate-oriented hexagonal crystals — flat hexagonal disks falling with their flat face horizontal. Light entering a side face and exiting the bottom face passes through a 90° prism, producing the 46° halo and the circumzenithal arc.
Column-oriented hexagonal crystals — hexagonal columns with their long axis horizontal. Light entering one side face and exiting the adjacent side face passes through a 60° prism, producing the 22° halo, the parhelia, and the upper tangent arc.
Sources: Greenler, Rainbows, Halos, and Glories (1980), Ch. 2–4. Tape, Atmospheric Halos (1994). Cowley, atoptics.co.uk.
When the sun rises, the parhelia slide outward.
The 22° angle is measured along the shortest path on the celestial sphere: the great-circle distance from the sun. But the parhelion sits on the parhelic circle, which is horizontal through the sun. Those two are the same thing only when the sun is on the horizon. When the sun rises, the parhelic-circle azimuthal offset has to grow to keep the actual angle from the sun at 22°. The exact relationship is
parhelion offset = R₂₂ / cos(h)
where R₂₂ is the apparent 22° halo radius and h is the sun's altitude. This is one of those rare cases where you can read the sun's altitude directly from a photograph, with no metadata and no instruments: just measure where the parhelion sits, divide.
Drag the slider. The atlas above re-derives every dependent primitive. At h ≈ 32.2° the CZA disappears (it has exited the visible hemisphere); near 29° the tangent arcs merge into the circumscribed halo regime; the parhelia drift outward across the entire range.
R₂₂ × 1.103
CZA visible: yes
This is also how a sundog photograph can become a measuring instrument. For the plain step-by-step inverse, start with the h-of-x math demo. The 7-photo calibration pass shipped with this project (see §Multi-Photo Calibration Pass) recovers the sun's altitude from each photograph with no EXIF or astronomical metadata, within roughly 1 pixel of residual.
Current evidence keeps this narrow. The promoted inverse handle is parhelion offset on eligible photos with bilateral parhelia and an independent 22° halo anchor; the CZA, supralateral, tangent-family, parhelic-belt, and pillar layers are rendered context, vocabulary, or coverage-gated routes unless their own receipts say otherwise.
Every visible arc, mapped to a circle.
Atmospheric optics has spent two centuries naming the arcs in a halo display. The twelve primitives below are the set this atlas renders. Some are scale or context; some are optional vocabulary; one route, parhelion offset, is promoted as the current inverse measurement handle. One paragraph each: what it is, where it sits, how the atlas constructs it, and what status it carries.
For the broader vocabulary ledger — including named-only, not-modeled, and speculative families — see the Sundog Halo Legend. The h-of-x page isolates the first promoted inverse equation; the atlas shows the current rendered geometry; the legend is the definition layer that separates rendered primitives, optional labels, and not-yet-modeled halo names.
Boundary landmarks: tangent arcs merge into the circumscribed halo near 29° sun elevation; the CZA leaves the visible hemisphere at about 32.2°; parhelic-belt y and the stylized pillar generator remain visual QA, not hidden-state evidence.
22° halo
The bright ring around the sun. The most common halo phenomenon. Refraction through 60° prism in column-oriented hexagonal ice crystals.
circle (sun, R₂₂)46° halo
Larger faint ring, roughly twice the 22° halo's radius. Refraction through 90° prism in plate-oriented crystals.
circle (sun, 2·R₂₂)Sundog / parhelion
Bright spot on the parhelic circle just outside the 22° halo. Offset grows with sun altitude as R₂₂/cos(h).
point on parhelic ∩ 22°-coneParhelic circle
Horizontal great circle through the sun, carrying the parhelia. The atlas draws the unique circle through both parhelia and the sun.
circle through (sun, L-parhelion, R-parhelion)Circumzenithal arc (CZA)
"Smile" near the zenith, colored like an inverted rainbow. Always tangent to the 46° halo at its top.
circle tangent to 46° halo at its top pointSupralateral arc
Tangent to the 46° halo just outside the CZA, curving away from the sun. Less common than the CZA.
circle tangent to 46° halo, sun-sideUpper tangent arc
"Eyelid" above the 22° halo's top. Forms in column-oriented crystals. Visually nests near the suncave Parry arc.
circle tangent to 22° halo at topSuncave Parry arc
Parry-orientation companion above the upper tangent. Shoulders bend back toward the sun ("suncave" = concave-toward-sun).
tighter circle tangent to 22° halo at topLower tangent arc
Mirror of the upper tangent at the 22° halo's bottom. Only visible when the sun is high enough that the bottom of the halo isn't below the horizon.
circle tangent to 22° halo at bottomParry supralateral arc
Parry-orientation flanking shoulders near the supralateral. Optional vocabulary in the atlas.
mirror-image arcs along the 46° halo topInfralateral arcs
Lower-half mirror of the supralateral. Tangent to the 46° halo's bottom region.
circle tangent to 46° halo bottomSun pillar
Vertical light column above and below the sun, from horizontally-floating ice plates. Rendered in the atlas as the vesica between two virtual halos centered at the parhelia.
vesica (left-parhelion-halo, right-parhelion-halo)Named in the literature, beyond the rendered set
The set above is a deliberate subset. The standard atmospheric-optics literature names several more halo families this atlas does not draw as separate primitives — some are rare, some need a crystal-population model the geometry layer does not carry, and some require viewing geometry outside this explainer's audience. They are catalogued here so the canonical vocabulary is complete in one place: formation mechanism in a sentence, where to read more (Tape chapter · HaloSim simulation file · Cowley's Atmospheric Optics), and this project's rendering status.
Parry-family arcs
Arcs from Parry-oriented column crystals (one prism face held level): the suncave Parry caps the upper tangent arc, the rarer sunvex Parry opens beneath it, and the Parry supralateral flanks the 46° halo top.
Tape, Atmospheric Halos ch. 3 · HaloSim Parry arcs.sim, Parry 1820 display.sim · Cowley, atoptics
Pyramidal / odd-radius halos
Faint rings at 9°, 18°, 20°, 22.9°, 23.8°, 24° and 35° from the sun, refracted through the shallow end-faces of pyramidal ice crystals rather than the 60°/90° prisms that give the 22° and 46° halos.
Tape, Atmospheric Halos ch. 10; Tape & Moilanen, …the Search for Angle x ch. 11 (on disk: docs/calibration/AH-CH10/, docs/calibration/AH-SAX-CH11/) · HaloSim Pyramidal *d halo.sim · Cowley, atoptics
Lowitz arcs
Arcs sweeping between the sundogs and the 22° halo from plate crystals rotating about a horizontal axis through two opposite corners (the Lowitz orientation); long contested until photography confirmed them.
Tape, Atmospheric Halos (Lowitz orientation) · HaloSim Lowitz arcs.sim; St Petersburg 1790 historical display · Cowley, atoptics
Antisolar features
Structure gathered opposite the sun — the anthelion (a bright spot 180° from the sun on the parhelic circle), the diffuse anthelic arcs that cross it, and the paranthelia or 120° parhelia partway around the parhelic circle.
Tape, Atmospheric Halos (anthelic arcs) · HaloSim Anthelic Point display.sim · Cowley, atoptics
Sub-horizon halos & circumhorizon arc
The subsun and subparhelia (mirror features below the horizon, seen from aircraft or mountaintops) and the circumhorizon arc (a near-horizontal spectral band ~46° below the sun, only when the sun rises above ~58°) — both need viewing geometry outside this explainer's audience.
Tape, Atmospheric Halos (subhorizon family) · Greenler, Rainbows, Halos, and Glories · Cowley, atoptics
Sundog: not modeled — audience mismatch (aircraft / high-summer-noon specific)Run the atlas on your own sundog photograph.
Upload a sundog photo, mark the sun and the 22° halo edge, and the atlas will overlay every visible arc — and tell you the sun's altitude when the photograph was taken.
The atlas render runs entirely in your browser. EXIF metadata is stripped before any opt-in sharing.
For the backend pipeline and privacy policy, see PHASE5_BACKEND_PLAN.md · PHOTO_DATA_POLICY.md.
Command-line equivalent: scripts/overlay_calibrate.py.
People have been measuring sundogs since 1535.
Vädersoltavlan (Sun Dog Painting) — Stockholm, 1535. One of the earliest detailed depictions of a complex halo display, stored in Storkyrkan, Stockholm.
The phenomenon has been observed for centuries, but rigorous geometric description waited for the 19th and 20th-century atmospheric-optics literature. The atlas math on this page is standard refraction geometry; what's specific to this project is the integrated primitive-atlas presentation and the inverse-inference workflow.
Further reading:
- Greenler, R. Rainbows, Halos, and Glories. Cambridge University Press (1980, reissued 1990). The canonical reference for refraction geometry in hexagonal ice crystals.
- Tape, W. Atmospheric Halos. American Geophysical Union, Antarctic Research Series Vol. 64 (1994). Detailed arc geometry including supralateral/infralateral symmetry and altitude bindings.
- Cowley, L. Atmospheric Optics (atoptics.co.uk). The standard public reference site with HaloSim ray-trace renderings.
- Sun dog on Wikipedia.
Reproducible math, citable references.
The atlas is built so other tools, papers, and Wikipedia entries can cite the math reproducibly. Every formula has a source; the canonical pose is a JSON file; the calibration evidence is a runnable script.
JSON pose schema
The atlas's parameter state serializes to JSON; round-trips to byte-identical SVG. Used for archiving calibration poses.
Math binding tests
An assertion-style harness over the phase3.* geometry namespace — dagger offset across altitude, CZA visibility cutoff, parhelic curvature, and structural invariants. 33 assertions, all passing.
Overlay calibration runner
Python script that runs the atlas math on a photograph and emits a residuals report. Used for the 7-photo calibration pass.
Roadmap & references
The geometry roadmap, Phase 2-3 closeouts, the atmospheric-optics reference table, and the calibration evidence.
Atlas geometry source
The ES-module that implements every primitive's geometric construction. Importable for other tools.
Calibration overlays
Seven photographs with atlas predictions overlaid; the regression baseline for any geometry change.
Outreach packet
Math-summary table, claim license (cited vs original), reproducibility paths, and suggested Wikipedia edits per article.