## 🚀 Oversikt
**CubeEye** er en avansert Android-applikasjon designet for å løse 3x3 Rubiks kuber. Den bruker datasyn til å skanne en fysisk kube og gir en interaktiv, animert 3D-guide for å løse den ved hjelp av nesten optimale bevegelser.
## ✨ Viktige funksjoner
### 📷 Smart skannesystem
* **Fargedeteksjon i sanntid:** Identifiserer automatisk kubeflatefarger ved hjelp av kameraet via den tilpassede `ColorAnalyzer`.
* **Veiledet skanning:** Et intuitivt brukergrensesnittoverlegg veileder brukerne gjennom prosessen med å fange alle 6 ansiktene riktig.
* **Valideringslogikk:** Den innebygde `CubeValidator` sikrer at den skannede tilstanden er fysisk løsbar før den fortsetter.
* **Manuell korrigering:** Inkluderer en `ColorPickerDialog` som lar brukere justere farger manuelt hvis lysforholdene påvirker automatisk deteksjon.
### 🧩 Intelligent løser
* **Kociemba-algoritme:** Integrerer den berømte tofasealgoritmen (via *min2phase*-biblioteket) for å finne nesten optimale løsninger, ofte med færre enn 20 trekk.
* **Rask lokal beregning:** Løser komplekse problemer på sekunder direkte på enheten uten å trenge nettverkstilkobling.
### 🎥 Interaktiv 3D-guide
* **3D-visualisering:** Har en fullstendig interaktiv 3D-gjengivelse (`Cube3DView`) som nøyaktig etterligner den virkelige kubens tilstand.
* **Trinn-for-trinn-animasjon:** Brukere kan spille av, sette på pause og bla gjennom løsningsbevegelsene i sitt eget tempo.
## 🛠 Tekniske høydepunkter
* **Moderne Android Stack:** Bygget utelukkende med Kotlin og Jetpack Compose (Material 3).
* **Robust arkitektur:** Følger prinsippene for ren arkitektur, og bruker MVVM-mønstre, Hilt for avhengighetsinjeksjon og Coroutines for asynkrone operasjoner.
* **CameraX:** Implementerer et stabilt og effektivt kamerafundament for forhåndsvisning og bildeanalyse i sanntid.
* **SceneView:** Bruker SceneView-biblioteket for 3D-gjengivelse med høy ytelse.
## 🐛 Kjente problemer / TODO-er
* Optimaliser terskler for fargedeteksjon for å håndtere ekstreme lysforhold bedre.
* Automatiser integreringen av "min2phase"-biblioteket (for tiden inkludert som manuelle kildefiler).