88 lines
3.5 KiB
Markdown
88 lines
3.5 KiB
Markdown
# Arbejdsplan for kort7
|
||
|
||
## Mål
|
||
Bygge en løsning med to samtidige kortvisninger over samme positionsdata, hvor hvert kort repræsenterer sit eget perspektiv på usikkerhed.
|
||
|
||
## Principper
|
||
- Samme køretøjspositioner og tidslinje i begge kort
|
||
- Hvert kort har sit eget usikkerhedssæt
|
||
- Zoom og pan skal kunne ske uafhængigt i hvert kort
|
||
- Visning skal være viewport-drevet, ikke bundet til et bestemt geografisk udsnit
|
||
- UI'et skal beskytte læsbarheden, også ved meget store usikkerheder
|
||
|
||
## Funktionel plan
|
||
|
||
### 1. Datamodel
|
||
- Udvide `data.js`, så hver observation har:
|
||
- fælles position, retning, hastighed, timestamp
|
||
- `uncertaintyA`
|
||
- `uncertaintyB`
|
||
- Sikre at begge usikkerheder hører til samme observation i streamen
|
||
|
||
### 2. Layout
|
||
- Opdatere `kort7.html` til to separate kortcontainere
|
||
- Give hvert kort sin egen HUD/indikatorzone for køretøjer uden for viewport
|
||
- Beholde fælles styring til play/pause/reset
|
||
|
||
### 3. Rendering-arkitektur
|
||
- Omskrive `app.js`, så rendering sker per map-instans i stedet for globalt
|
||
- Lade begge kort abonnere på samme simulerede tid og samme positionsstream
|
||
- Lade hvert kort bruge sit eget usikkerhedsfelt
|
||
|
||
### 4. Viewport-logik pr. kort
|
||
For hvert køretøj og for hvert kort skal systemet afgøre:
|
||
- **inside**: køretøjet er inden for viewporten
|
||
- **possible**: køretøjet er uden for viewporten, men usikkerheden overlapper viewporten
|
||
- **outside**: køretøjet og dets usikkerhed er irrelevante for viewporten
|
||
|
||
Denne vurdering skal genberegnes:
|
||
- ved hver dataopdatering
|
||
- ved zoom
|
||
- ved pan
|
||
|
||
### 5. Visuel adfærd
|
||
- **Inside:**
|
||
- vis køretøjet på kortet
|
||
- vis trail
|
||
- vis transparent usikkerhedscirkel omkring køretøjet
|
||
- **Possible:**
|
||
- skjul køretøjets normale markør på kortet
|
||
- vis en hjørneindikator i det relevante kort
|
||
- indikatoren skal vise hvilket køretøj der muligvis kan være i området
|
||
- gerne med farve, navn og retning/side i forhold til viewporten
|
||
- usikkerhed på kortet kan evt. stadig vises diskret, hvis det giver mening
|
||
- **Outside:**
|
||
- vis hverken markør eller hjørneindikator
|
||
- trail kan tones ned eller skjules
|
||
|
||
### 6. Håndtering af store usikkerheder
|
||
- Undgå at enorme usikkerheder ødelægger læsbarheden
|
||
- Klip visning naturligt til viewporten
|
||
- Brug lav opacity for store usikkerhedsflader
|
||
- Lad hjørneindikatoren være den primære forklaring, når centrum ligger uden for kortet
|
||
|
||
### 7. Sammenligning mellem perspektiver
|
||
- Et køretøj må gerne være:
|
||
- synligt på kort A
|
||
- kun en mulig tilstedeværelse på kort B
|
||
- eller omvendt
|
||
- Dette er en ønsket effekt, fordi forskellen mellem perspektiverne netop skal være tydelig
|
||
|
||
## Implementeringsrækkefølge
|
||
1. Gemme arbejdsplanen
|
||
2. Opdatere datamodellen i `data.js`
|
||
3. Splitte `kort7.html` til to kortviews
|
||
4. Refaktorere `app.js` til to renderingskontekster
|
||
5. Implementere usikkerhedscirkler per kort
|
||
6. Implementere hjørneindikatorer per kort
|
||
7. Teste zoom/pan og dynamiske overgange mellem inside/possible/outside
|
||
8. Finjustere styling og læsbarhed
|
||
|
||
## Åbne designvalg
|
||
- Om hjørneindikatorer skal ligge i et fast hjørne eller langs den nærmeste kant
|
||
- Om store usikkerheder altid skal tegnes som cirkler på kortet, eller nogle gange kun repræsenteres via indikator
|
||
- Hvordan vi bedst navngiver de to perspektiver i UI’et
|
||
- Om trails skal vises ens i begge kort eller tones forskelligt
|
||
|
||
## Kort version
|
||
Samme data. To kort. To forskellige usikkerhedsperspektiver. Dynamisk viewport-logik. Hjørneindikatorer for mulige off-map køretøjer. |