bredland.no › GPS

Hvordan GPS virker

Én prompt. Tre frontier-modeller. Tre svar som ikke ligner.

Dette er to ting på én gang. Det er en forklaring av hvordan GPS-satellitter lar en bil finne både posisjon og fart: sirkler og kuler som skjærer hverandre, klokker som lyver, dopplereffekt, ekko mellom glassbygg og jamming. Og det er en test. Jeg ga den samme prompten, i én omgang, til tre av de fremste språkmodellene høsten 2026: Claude Fable 5.1, Gemini 3.8 Flash og GPT-6 Astra. Hver av dem bygde en hel nettside med animasjoner fra bunnen. Under ligger prompten, de tre svarene slik de ble levert, hva de kostet i tid og tokens, og en sammenligning av hvor likt og hvor ulikt modellene «tenker».

De tre svarene

Samme scene, tre blikk

Skjermbilder i Full HD fra de publiserte sidene, i samme rekkefølge hver gang: Fable, Gemini, Astra. Klikk for full størrelse.

Tre satellitter i 2D

Fable legger inn klokkefeilen allerede her og tegner feiltrekanten der de tre sirklene ikke møtes. Gemini gjør det samme, med «P1 (falsk kandidat)» krysset ut og en usikkerhet i meter under bilen, og forklarer alle fire satellittene i ett tekstpanel med fem trinn. Astra holder klokken kjent og nøyer seg med «bare dette punktet passer».

Tre kuler i 3D

Fable zoomer inn på en raytracet jordklode og forkaster punktet «langt ute i rommet, og i umulig fart». Gemini har ekte kuler i Three.js, men kameraet i filmmodus står inne i den grønne kulen gjennom hele kapitlet, så det man ser er en grønn vegg. Drar du med musen kan du zoome ut og se kulene. Astra legger «et lite utsnitt av jorden» inn i kulene og sier at uten den opplysningen må vi beholde begge.

Ekko bak glassbygget

Alle tre tegner det samme: direkte signal blokkert, ekko fra glassfasaden, lengre vei, feil posisjon. Fable viser signalstyrken per satellitt som små stolper. Gemini regner omveien til 969 meter i en terminalboks og legger spøkelsesposisjonen så langt til høyre at den havner utenfor skjermen. Astra flytter den til nabogaten og skriver «et ekko bærer riktig beskjed, bare for sent».

Prompten

Dette er hele prompten, ordrett og med skrivefeilene mine. Den er satt sammen av instruksjonene jeg opprinnelig ga underveis i én samtale, samlet til én tekst, slik at alle tre modellene fikk nøyaktig det samme utgangspunktet. Ingen skisser, ingen eksempelkode. Den kan lastes ned som prompt.md og brukes fritt.

Vis prompten
ok, vi skal bygge en pen siden med javascript og pene "strektegning" animasjoner som skal illustrere hvordan GPS-satellitter virker og kan gi feks en bil som kjører mulighet til å finne både nøyaktig posisjon og nøyaktig fart. Vis også problemene med ekko og signalforhold. Vi må også vise hvordan satellittene selv vet sin egen posisjon. Så kan vi også illustrere hvordan GPS-systemene kan jammes.
Noe info og matte: https://www.uio.no/studier/emner/matnat/astro/AST2000/h24/blogger/bloggen-til-ellen-og-erica/9-generell-relativitet/gps(1).html
Legg uio artikkelen som referanse.
Noen retningslinjer: visualisering av hvordan hos virker + hvordan vet en satellitt sin egen posisjon

Her får du en enkel forklaring på hvordan GPS-systemet fungerer for oss på bakken, og hvordan en satellitt i verdensrommet vet nøyaktig hvor den selv befinner seg.

1. Hvordan GPS virker (Trilaterasjon)

En GPS-mottaker (for eksempel i telefonen din) sender ikke ut signaler; den bare lytter. [1]

Tidssignaler: GPS-satellittene sender kontinuerlig ut radiobølger som inneholder informasjon om hva klokken var da signalet ble sendt, og hvor satellitten var akkurat da. [1]

Avstandsberegning: Siden signalene beveger seg med lysets hastighet, kan telefonen din regne ut avstanden til satellitten basert på hvor lang tid signalet brukte (Tid = Avstand). [1]

Skjæringspunktet: Hvis telefonen vet avstanden til én satellitt, vet den at den befinner seg et sted på en stor, tenkt sfære rundt denne satellitten. Med fire satellitter kan telefonen regne ut nøyaktig hvor på jorden du befinner deg (breddegrad, lengdegrad og høyde over havet), samt korrigere tidsfeil i telefonens egen klokke. [1]

Her er noen visuelle modeller som viser hvordan disse avstandssværene krysser hverandre for å finne din posisjon:

2. Hvordan vet satellitten sin egen posisjon?

For at telefonen din skal bruke satellitten som et referansepunkt, må satellitten vite nøyaktig hvor den selv er til enhver tid. Dette løses gjennom et tett samarbeid med bakken:

Forutsigbare baner (Keplers lover): Satellittene går i veldig stabile, sirkulære baner omtrent 20 200 kilometer over jorden. Fysikkens lover gjør at banen stort sett er forutsigbar lang tid i forveien. [1]

Kontrollstasjoner på bakken: Det finnes dedikerte bakkestasjoner (kontrollsegmentet) spredt rundt på jorden som kontinuerlig overvåker satellittene med kraftige radarer. De måler om satellitten har veket ørlite grann av fra banen sin (for eksempel på grunn av jordens ujevne tyngdekraft eller solstormer).

Efemeride-data: Bakkestasjonene beregner de oppdaterte, nøyaktige banedataene (kalt efemerider) og sender disse opp igjen til satellittene. Satellitten lagrer dette og videresender det til telefonen din.

Ekstremt presise atomklokker: For at posisjonen skal være riktig, må tiden være helt synkronisert. Satellittene har derfor med seg flere atomklokker som er så presise at de kun taper et par sekunder i løpet av millioner av år. [1]

Vil du vite mer om hvordan relativitetsteorien påvirker disse atomklokkene i rommet, eller ønsker du hjelp med å forstå forskjellen på GPS og andre systemer som Galileo eller GLONASS? [1]

Kilde: Universitetet i Oslo
GPS – Universitetet i Oslo
13. des. 2024 — Men også litt kult og ekstremt interessant! Vi har jo den spesielle relativitetsteorien også. Satellittene beveger seg jo veldig fort, spesielt sammenlignet med...

Start med å vise 2s-prinsippet, også bygger vi ut til 3d.

Matematikken bak må flettes inn på en smart måte - det er ikke utregningene som er viktige å illustrere, men de matematiske prinsippene (geometri), og det må aniomeres så man skjønner hvordan det benyttes.
enkle strektegninger på canvas

animasjonene må være mye tydeligere og lite rotete
i 3d skal vi vise 1,2,3,4 staelitter og hvordan det endrer muligheten for hvor man kan være - hvordan kulenes intersect begrenser hvor vi kan være
matematiske og dysiske prinsipper skal inn i animasjonen underveis og ikke stå for seg selv
vis også hvordan en satellitt får sin posisjone og hvordan den overvåkes fra jorden og justeres ved avvik
lage animasjonen som en historie som tar oss gjennom 2d med 1, 2, 3 og 4 satelitter, også bytter vi over i 3d og repeterer 1,2,3 og 4.
Jeg ønsker en sammenhengende animasjon som går gjennom løypa og lager en "video" som forklarer matematikk og visuelt hvordan dette fungerer

vis kulene som spheres i egne farger og miks fargene der de skjører hverandre. Ikke bruk for mange bokser og dill rundt om. Fortellingen kan være en rolig tekst på høyre side som fader inn. Pulseringen i 2d bildet for signal blir for rotete, her også kan vi illustrere med fargede sirkler og markere skjæringspunktene. Bilen i videoen kan stoppe innimellom også kan vi tegne på trekanter for å illustrere hva vi regner på av avstadner og vinkler og what-not. Bruk hele skjermen, legg kapittelvelger/video avspiller kontroll nederst i midten. (hel skjerm er full hd oppløsning). Legg kilde/ref til UiO i liten footer nederst til høyre. Lag en fancy under-overskrift, ta ikke ha navigasjon - del1, del2, osv på toppen hvis de er del av hele videoen. Alt. må vi dele videoen opp i scenarier.

hvis bilen stoppes for å vise beregninger, la den stoppe der den er, ikke hopp til et gitt punkt. 3d spheres må rendres i noe transparante farger hele veien (raytrace?) og ikke med tydelig sirkel for yttergrense, skjæringslinjer og sirkler må highlightes der de mikser (ikke unionen, men akkurat skjæringslinjene - som blir sirkler, osv. Når vi legger på en satellitt til må den animeres inn og ikke bare dukke opp. Dette skal være en visuell nytelse som også tegner og viser prinsippene. Vi kan godt bruke "papir og fargestift"-tegninger for å illustrere matematikken og ikke pinne rette datamaskinlinjer. La det ha litt sjarm. Forklaringene til illustrasjonene kan smyge seg inn og smyge seg ut i høyre kant. Alt skal forklares gjennom en rolig og personlig økt og med visuell nytelse.

spherene må være veldig tydelige og skjæringen illustreres med sterkere farge, men ikke med stiplet linje.
overgangen mellom temaene må gjøres pene og smarte.
vi kan bruke mer tegning på skissene våre
i 3d trenger vi ikke vise jorden eller raskt forflyttende punkt, men vi kan vise satelittspheres og skjæringne også plassere jorden inn med bilen, men da antar jeg vi må zoome inn på en del av den siden spheres til satelittene ikke dekker over hele kloden. vi må også vise hvilke skjæringer/punkter vi enkelt kan forkaste og hvorfor.

vi skal vise både posisjons og hastighetsberegning
doppler må få matematikken tegnet på animasjonen
vi kan godt bruke strek som ser hjemmetegnet (blyant, fargestifter) istedenfor data-genererte linjer
når vi stopper og viser beregning til flere satelitter må vi vise gemoetri til alle som overlay, ikke bare til 1

vis feiltrekanten visuelt også

også trenger vi tydelig animasjon på når vi kjører inn i område - bak feks glassbygning som gir spøkelsesposisjoner, og hvordan det virker

Du har ikke lov til å se på andre svar fra andre modeller som ligger her.

lag det nå!

Sammenligningen

Sammenligningen under er skrevet av Claude Fable 5.1, altså den samme modellen som laget ett av de tre svarene, ut fra koden, skjermbildene, avspilling av alle tre og loggene fra de tre kjøringene. Den holder seg til det som kan telles og ses. Døm selv, alle tre er ett klikk unna.

Claude Fable 5.1Gemini 3.8 FlashGPT-6 Astra
Lengde10:33, 14 kapitler på 23 til 68 s3:23, 7 kapitler på 22 til 38 s5:45, 17 kapitler på 13 til 30 s
StilPapir, blyant og fargestift. Håndskriftfonter (Caveat, Patrick Hand), gule lapper for regnestykkene, streker tegnet med rough.js så de ser håndtegnet ut.Mørkt «kontrollrom»: navy bakgrunn med rutenett, cyan, rosa og gull, monospace-etiketter som «SAT 1 (Azur)» og terminalbokser med tall på lerretet. Tekstpanel til høyre med KaTeX-formler.Lys papirbakgrunn, stor serif (Fraunces) i overskriftene og håndskrift (Caveat) på merkelappene, rolig kolonne til høyre med kapittelnummer, ingress og detaljtekst.
2D-tegningCanvas 2D via rough.jsCanvas 2D, rette datalinjerCanvas 2D, egen skisse-modul med tynne streker
3D-kuleneEgen WebGL-fragmentshader som raytracer kulene og jordkloden, transparente, med fargeblanding i skjæringene. Tok «raytrace?» i prompten bokstavelig.Three.js r128 med OrbitControls, ekte transparente kuler og skjæringsringer, og du kan rotere selv. Men i filmmodus står kameraet inne i den første kulen, så kapitlet vises som en grønn vegg.Three.js med transparente kuleflater, skjæringssirklene beregnes geometrisk og tegnes i Canvas oppå. Merket reserveløsning hvis WebGL mangler.
HistorienInnledning, 2D 1–4 satellitter, 3D 1–4 kuler, fart og doppler, satellittens bane, ekko i byen, jamming og spoofing, slutt. Klokkefeilen kommer inn ved tre satellitter i 2D («klokka som lyver»).Tid = avstand, 2D 1–4 i ett kapittel med feiltrekant, 3D 1–4 i ett kapittel, doppler, satellittens posisjon og relativitet, ekko, jamming og spoofing. Klokkefeilen kommer som trinn fire av fem i 2D-kapitlet.Intro, 2D 1–4, 3D 1–4, kontrollsegment, relativitet, posisjon til fart, doppler, feiltrekant, glassby, jamming, avslutning. Skiller eksplisitt mellom «kjent klokke» og «ukjent klokke».
MatematikkenHåndskrevet på gule lapper og rett på tegningen: d = c·(Δt + Δt_klokke), «1 µs → 300 m», trekanter og vinkler.Ordentlig satte formler i tekstpanelet (KaTeX) og terminalbokser med tall på lerretet: bærebølge 1575,42 MHz, frekvensskift i hertz, radialfart. Avstandene på 31 000 til 46 000 km er for lange for GPS, der 20 000 til 26 000 km er vanlig.I fortellingsteksten og på skissen, med små forbehold under («ideelle avstander, klokken er foreløpig kjent»). Feiltrekanten bygges av parvise skjæringer, og posisjonen er en faktisk minste-kvadraters tilpasning i koden.
KilderUiO-artikkelen i footer, som bedt om.UiO-artikkelen i footer, som bedt om.UiO i footer, pluss en dialog «Kilder & forenklinger» med GPS.gov, FAA og ESA, og et forbehold om at UiO-bloggens tall gjelder en modellplanet.
Eksterne kallGoogle FontsIngen. Three.js og KaTeX ligger lokalt, med CDN som reserve hvis de mangler. KaTeX-skriftene ble ikke kopiert med, så formlene settes i reserveskrift.Ingen. Skriftene ligger lokalt med lisensfiler.
Egen kode103 KB JavaScript og CSS i 8 filer, pluss rough.js (28 KB) lagt ved.107 KB i 7 ES-moduler, pluss Three.js (603 KB), OrbitControls og KaTeX (300 KB) lagt ved.62 KB kildekode i 6 filer, bygget med Vite til én bundle på 574 KB der Three.js utgjør det meste.
Rundt selve sidenBare siden.En egen «Utforsk fritt»-modus: skyveknapper for antall satellitter, mottakerens klokkefeil, bilens fart og en jammer-bryter, og bilen kan dras med musen. Ingen tester eller dokumentasjon.README, valideringsrapport, 9 geometritester, 8 nettlesertester med Playwright, publiseringsskript med SHA-256-kontroll, mobil-layout, redusert bevegelse, noscript-tekst.
KontrollerStartkort, kapittelknapper, spole, forrige/neste, fullskjerm, tastatur.Autostart, spole med kapittelmerker, forrige/neste, hastighet, fullskjerm, tastatur, skjul tekstpanelet.Autostart, spole, forrige/neste, kapitteldialog, hastighet, fullskjerm, tastatur.

Tid og tokens

Fra loggene til de tre verktøyene. Tid er modellens aktive arbeidstid; pauser der kjøringen ventet på meg er trukket fra. Claude Code og Codex skriver tokenforbruk per kall til loggen. Antigravity gjør ikke det, så Gemini-tallet er et anslag ut fra hvor mye tekst og kode modellen skrev.

Claude Fable 5.1Gemini 3.8 FlashGPT-6 Astra
Verktøy og modellClaude Code, claude-fable-5-1, reasoning effort xhighAntigravity, Gemini 3.8 Flash, tenkenivå HighCodex 0.155, gpt-6-astra, reasoning effort xhigh
Tid29 min5 min 17 s39 min
Modellsvar og verktøykall98 svar, 94 verktøykall73 steg, 35 verktøykall (9 filer skrevet, 22 kommandoer)66 verktøykall i hovedtråden, pluss to underagenter
Tokens ut151 000ca. 50 000 (anslag: 195 000 tegn kode, tekst og tenking)95 000: 60 000 i hovedtråden og 35 000 i underagentene, hvorav 32 000 var resonnering
Tokens inn20,8 millioner, hvorav 20,4 millioner lest fra cache og 381 000 skrevet til cacheikke logget10,4 millioner, hvorav 96 prosent fra cache; 7,5 millioner i hovedtråden
UnderagenterIngen.Ingen.To, som Astra selv satte opp og selv la på andre modeller enn seg selv: en «geometry»-agent på gpt-5.6-terra (20 min, 1,2 millioner tokens) og en «review»-agent på gpt-5.6-sol (17 min, 1,8 millioner tokens).

Tallene sier mest om arbeidsmåte. Fable skrev mest, med 94 verktøykall og 151 000 tokens ut på 29 minutter, og brukte nesten all inngang på å lese sin egen kontekst om igjen fra cache. Gemini Flash var ferdig på fem minutter og ni skrevne filer, én sjettedel av Fables tid, og leverte likevel Three.js, KaTeX og en interaktiv modus. Astra brukte lengst tid og er den eneste som delegerte: den opprettet på eget initiativ to underagenter, én for geometrien og én for uavhengig gjennomgang, og valgte selv å kjøre dem på gpt-5.6-terra og gpt-5.6-sol i stedet for på seg selv. Det sto ikke i prompten. En tredjedel av Astras tokens ut gikk til disse to.

Tempo: film, lysbilder eller foredrag

Prompten ber om «en sammenhengende animasjon» som «en rolig og personlig økt». De tre leste dette helt forskjellig. Fable laget en film på over ti minutter der bilen får kjøre, stoppe og få trekanter tegnet på seg mens fortellingen fader inn til høyre. Gemini laget sju kapitler på tre og et halvt minutt, og pakket alle fire satellittene i 2D inn i ett kapittel med et tekstpanel i fem trinn: mer foredrag enn film. Astra ligger midt imellom: 17 kapitler med varierende lengde, kortest i innledningen og lengst der ekkoet i glassbyen forklares.

«Papir og fargestift»

Prompten sier flere ganger at streken skal se hjemmetegnet ut, «blyant, fargestifter», ikke «pinne rette datamaskinlinjer». Fable tok det bokstavelig og la ved biblioteket rough.js, som tegner hver linje litt skjelvende, valgte håndskriftfonter og gule lapper. Astra valgte papirbakgrunn og håndskrift på merkelappene, men tegner selv rolige og rette streker og lar det meste av arket stå tomt. Gemini ignorerte dette fullstendig og laget det motsatte: et mørkt, teknisk kontrollrom i neon og monospace. Det gjorde den også i det første, delvis interaktive svaret to dager tidligere, med samme navy bakgrunn og samme cyan. To uavhengige kjøringer, samme valg. Det er den mest slående forskjellen i hvordan de tre vekter instruksjoner mot egen stilpreferanse.

Kulene

Prompten spør om kulene kan rendres «transparante hele veien (raytrace?)» med skjæringene markert som sirkler. Fable skrev en egen fragmentshader i WebGL som faktisk raytracer kuleflatene og jordkloden og blander fargene der de overlapper. Astra brukte Three.js for kulene og regnet ut skjæringssirklene geometrisk før de tegnes oppå. Gemini brukte også Three.js, med ekte kuler og skjæringsringer og OrbitControls så du kan rotere selv, men plasserte kameraet i filmmodus inne i den første kulen, så det som spilles av er en grønn flate. Alle tre viser to mulige punkter med tre kuler og forkaster det som ligger langt fra jorda, slik prompten ber om, men bare Astra sier at forkastingen forutsetter at vi vet noe om høyden.

Der det glipper

Ingen av de tre er feilfrie. Gemini har 3D-kapitlet med kameraet inne i kulen, mangler KaTeX-skriftene så formlene settes i reserveskrift, legger spøkelsesposisjonen utenfor skjermkanten, og bruker satellittavstander på 31 000 til 46 000 km der virkelige GPS-avstander er 20 000 til 26 000 km. Fable bruker over ti minutter, som er lenge for en nettside, og laster skrifter fra Google selv om siden ellers er selvstendig. Astra er så nedstrippet at 3D-kulene knapt ser ut som kuler, og bilen er liten på et stort, tomt ark.

Hvor mye mer enn det som ble spurt om

Her skiller Astra seg klarest ut. I tillegg til siden leverte den README, en valideringsrapport, enhetstester for geometrien, nettlesertester, et publiseringsskript som hashkontrollerer filene, mobiltilpasning, en kildedialog med forbehold om forenklingene, og skrifter lagret lokalt med lisenser. Ingenting av dette står i prompten. Gemini leverte noe annet som heller ikke står der: en «Utforsk fritt»-modus der du selv skrur på antall satellitter, klokkefeil, fart og jamming og drar bilen rundt på skjermen. Fable leverte siden og bare siden.

Det de er enige om

Alle tre begynner i 2D med én satellitt og én sirkel, bygger til fire, løfter til 3D og gjentar, og tar med fart via doppler, hvordan satellitten kjenner sin egen bane fra bakkestasjonene, spøkelsesposisjoner bak glassbygg og jamming. Alle tre legger fortellingen til høyre, spilleren nederst i midten og UiO-referansen nederst til høyre, slik prompten ber om. Alle tre er på norsk. Forklaringen av selve geometrien er riktig i alle tre, med samme forenkling: klokkefeilen kommer inn som én felles forskyvning i alle avstandene. Det er utenpå, i tempo, strek og hvor mye som leveres rundt, at de tre modellene viser hvem de er.

Slik ble testen gjort

Prompten vokste fram i en delvis interaktiv økt med Gemini 3.8 Flash i Antigravity den 20. september: den første bestillingen, så en håndfull justeringer underveis av typen «dette virker ikke» og «ta med dette og dette». Instruksjonene fra den økten ble samlet til én tekst, prompten over. Det første, delvis interaktive svaret ligger fortsatt på bredland.no/gps/gemini-38-flash-interactive som referanse, men er ikke med i sammenligningen.

De tre svarene på denne siden fikk den samlede prompten i én omgang, hver i en tom mappe i sitt eget verktøy: Claude Fable 5.1 i Claude Code og GPT-6 Astra i Codex, begge med reasoning effort «xhigh», og Gemini 3.8 Flash på nytt i Antigravity med tenkenivå «High», den 22. september. Gemini-kjøringen fikk én ekstra linje i prompten om ikke å se på de andre svarene, siden de lå i nabomappene. Sidene ligger slik modellene leverte dem. Skjermbildene er tatt i Full HD fra de publiserte sidene. Tid og tokens er lest ut av verktøyenes egne logger.

Alt er åpen kildekode: de tre svarene, det første Gemini-svaret, prompten og denne siden ligger på GitHub i Citaborg/how-does-gps-work, koden under MIT-lisens og teksten under CC BY 4.0. Klon, kjør lokalt, eller gi prompten til en fjerde modell.