en ekte nattehimmel ved 66 grader nord

9. september 2026 meta designpixelart

Lovund ligger på omtrent 66 grader nord, nær nok polarsirkelen til at sommernettene knapt blir mørke og vinternettene sluker mesteparten av ettermiddagen. Jeg ville at sidens mørke modus skulle nikke til det, en ekte himmel, ikke en generisk strøing av hvite prikker som kunne vært hvor som helst. Når jeg først begynte å faktisk research hvordan himmelen på denne breddegraden ser ut, sluttet "generisk strøing av prikker" å være godt nok for meg til å shippe.

Skumring over fjellet, lyset hele denne greia prøver å fortjene

prikker først, så en himmel

Den første versjonen av nattbakgrunnen var akkurat tingen jeg nettopp sa jeg ikke ville ha, en piksel-stjerne-sprite lagt ned som et nokså jevnt strø over margene, kun mørk modus:

// first version: just scatter dots, no real positions
const stars = Array.from({ length: 40 }, () => ({
	x: Math.random() * width,
	y: Math.random() * height
}));

Greit, atmosfærisk, glemmelig. Det som fikk meg til å ombestemme meg var å innse at fra denne breddegraden, spesielt om vinteren, kan du faktisk plukke ut Karlsvogna og Cassiopeia de fleste klare netter, mens de kretser rundt Polarstjernen hele tiden fordi de på 66 nord aldri dupper under horisonten i det hele tatt, de er sirkumpolare. Det er et ekte, spesifikt, oppdagbart faktum om hvor denne siden skrives fra, og en enkel stjernestrøing kastet det bort uten grunn. Så den tilfeldige strøingen ble værende bare for fyllstjerner, og de navngitte stjernebildene fikk faktiske koordinater i stedet.

å plassere ekte stjerner på riktig sted

Jeg hentet de faktiske publiserte rektascensjons- og deklinasjonsverdiene for de klare stjernene i begge stjernebilder, de samme koordinatene enhver planetarium-app bruker, og projiserte dem slik sirkumpolare stjernekart gjør det: hver stjernes vinkel rundt polen kommer fra dens RA i grader, dens avstand fra polen kommer fra nitti minus dens deklinasjon.

Approximate RA/Dec used (hours/minutes, degrees/minutes):
  Polaris    2h31m +89 15   Dubhe   11h03m +61 45   Merak  11h01m +56 23
  Phecda    11h53m +53 41   Megrez  12h15m +57 02   Alioth 12h54m +55 57
  Mizar     13h23m +54 55   Alkaid  13h47m +49 19

Karlsvognas sju stjerner og Cassiopeias fem faller begge ut av den projeksjonen og sitter nesten nøyaktig motsatt hverandre rundt Polarstjernen, som stemmer med virkeligheten, deres gjennomsnittlige rektascensjoner ligger omtrent 170 grader fra hverandre. Det betyr også at det klassiske amatørastronomi-trikset, følg linjen fra Merak gjennom Dubhe og den peker deg mot Polarstjernen, kommer ut korrekt gratis. Jeg måtte ikke jukse med en eneste stjernes posisjon for å få den peke-linjen til å fungere, det er bare hva de ekte koordinatene gjør når du projiserer dem ærlig.

const DIPPER: Star[] = [
	{ x: 1479.6, y: 391.3, r: 1.8, fill: MUTED, opacity: 0.6, twinkle: '-2.1s' }, // Dubhe (pointer star)
	{ x: 1475.3, y: 380.3, r: 1.7, fill: MUTED, opacity: 0.6 }, // Merak (pointer star)
	{ x: 1490.8, y: 370.6, r: 1.6, fill: SEA, opacity: 0.55 }, // Phecda
	{ x: 1498.6, y: 377.5, r: 1.5, fill: SEA, opacity: 0.5 }, // Megrez
	{ x: 1511.2, y: 375.9, r: 1.6, fill: MUTED, opacity: 0.55 }, // Alioth
	{ x: 1521.1, y: 375.8, r: 1.5, fill: SEA, opacity: 0.5 }, // Mizar
	{ x: 1533.4, y: 366.9, r: 1.7, fill: MUTED, opacity: 0.55 } // Alkaid
];

Alt utenfor den navngitte klyngen forblir løse fyllstjerner, bevisst uregelmessige i størrelse og avstand i stedet for rutenett-baserte, slik at de to ekte stjernebildene faktisk skiller seg ut fra bakgrunnsstrøingen rundt dem i stedet for å smelte inn som mer av det samme.

feltet snurrer, sakte

Fordi Polarstjernen sitter nær nok den sanne himmelpolen til at sirkumpolare stjerner synlig roterer rundt den i løpet av en natt, lot jeg hele klyngen rotere også, én full runde hvert 40. minutt, festet ved Polarstjernens egne koordinater som transform-origin. Ved enhver normal betraktningstidsskala, noen som leser et blogginnlegg i noen minutter, leser dette som helt statisk. La en fane stå åpen i bakgrunnen i en time og den snurrer synlig, samme måte som den faktiske himmelen over fjorden gjør hvis du er ute lenge nok til å legge merke til det. Jeg lot bare den ekte klyngen rotere, ikke de spredte fyllstjernene, siden de ikke har ekte posisjoner verdt å bevare i utgangspunktet og de fleste av dem sitter for langt fra Polarstjernen til at en sakte rotasjon rundt det dreiepunktet i det hele tatt leser som bevegelse.

en måne, og å vite når man skal slutte å legge til ting

Det er også et svakt måne-token, gjennomsiktig i dagslys, en myk, blek form skjøvet inn i header-horisontens nattehimmel. Det er genuint det for hva som er i denne scenen. Ingen nordlys, ingen stjerneskudd, ingen skylag som driver forbi ennå (skyer er på listen, sitter i samme "kanskje, senere"-haug som å vokse fuglepoolen ytterligere). Jeg holder på å legge til mer og overtaler meg selv tilbake ned, fordi den faktiske ekte himmelen på denne breddegraden allerede gjør den interessante delen, jobben min her er nærmere å komme meg unna dens vei enn å dekorere den ytterligere.

Forsiden i mørk modus: det ekte stjernefeltet over fjellet

disiplin som ikke er valgfri

Hver blinking og hele 40-minutters-rotasjonen respekterer begge prefers-reduced-motion, blir helt statiske for alle som har det satt, samme som de ambiente fuglene og fisken overalt ellers på siden. Og hele dette laget eksisterer bare i mørk modus i utgangspunktet, dagmodus får en gjennomsiktig himmel og ingen måne i det hele tatt, fordi det ikke finnes noen versjon av et synlig stjernebildefelt i fullt dagslys som leser som noe annet enn en feil. Noen ganger betyr disiplin bare å matche hvordan himmelen faktisk ser ut i stedet for å finne en unnskyldning for å tegne mer.

hvorfor 66 nord spesifikt endrer svaret

Det meste programvare skrevet hvor som helst leser som stedløs som standard, og de fleste stjernefelt-dekorasjoner jeg har sett andre steder lener seg inn i det, jevnt spredte punkter som kunne sittet over hvilken som helst by på jorden. Det er en rimelig standard for de fleste ting, men det kaster bort den ene delen av dette som faktisk er spesifikk for hvor siden skrives fra. Et sted rundt 60 grader nord, omtrent Oslos breddegrad, stiger og går Karlsvogna fortsatt ned slik de fleste stjernebilder gjør lenger sør, den dupper under horisonten i deler av natten eller året avhengig av sesongen. Kom opp til 66 og forbi det, og stjerner nær nok himmelpolen går rett og slett aldri ned i det hele tatt, de er der oppe og kretser rundt Polarstjernen uansett tidspunkt. Det er ikke en liten estetisk forskjell, det er den faktiske grunnen til at denne scenen får ha en sakte, endeløs rotasjon rundt et fast punkt i stedet for et stjernebilde som stiger, krysser himmelen, og går ned slik solen gjør. 40-minutters-spinnet er ikke dekorasjon lagt oppå ideen, det er ideen, oversatt direkte fra et faktisk faktum om denne spesifikke breddegraden til en CSS-transform.

blinkingen gjør stillere arbeid også

En håndfull stjerner på tvers av både den ekte klyngen og fyllstrøingen, Polarstjernen inkludert, får sin egen uavhengige opasitetsblinking på en sakte, variert syklus, hver forskjøvet med sin egen forsinkelse slik at de aldri blinker i unison. Det er en liten detalj og det er fristende å avskrive som ren atmosfære, men det gjør også samme jobb som de tilfeldige animasjonsforsinkelsene gjør overalt ellers på denne siden, å bryte opp alt som ellers kunne lese som et statisk bilde med én CSS-animasjon slengt jevnt over hvert element. En himmel der hver stjerne pulserte i takt ville sett ut som en loading-spinner. En himmel der noen få, forskjøvet, pulserer uavhengig leser som noe nærmere faktisk stjernelys.

0 kommentarer

Logg inn for å kommentere.

Logg inn

Glemt passord?

Ingen konto?