## 🚀 Overzicht
**CubeEye** is een geavanceerde Android-applicatie ontworpen om 3x3 Rubik's Kubussen op te lossen. De app maakt gebruik van computer vision om een fysieke kubus te scannen en biedt een interactieve, geanimeerde 3D-handleiding om de kubus op te lossen met bijna optimale zetten.
## ✨ Belangrijkste functies
### 📷 Slim scansysteem
* **Realtime kleurdetectie:** Identificeert automatisch de kleuren van de kubusvlakken met behulp van de camera via de aangepaste `ColorAnalyzer`.
* **Begeleid scannen:** Een intuïtieve UI-overlay begeleidt gebruikers bij het correct vastleggen van alle 6 vlakken.
* **Validatielogica:** De ingebouwde `CubeValidator` zorgt ervoor dat de gescande kubus fysiek oplosbaar is voordat verder wordt gegaan.
* **Handmatige correctie:** Bevat een `ColorPickerDialog` waarmee gebruikers handmatig kleuren kunnen aanpassen als de lichtomstandigheden de automatische detectie beïnvloeden.
### 🧩 Intelligente Oplosser
* **Kociemba-algoritme:** Integreert het bekende tweefasenalgoritme (via de *min2phase*-bibliotheek) om bijna optimale oplossingen te vinden, vaak met minder dan 20 zetten.
* **Snelle lokale berekening:** Lost complexe puzzels in seconden op, direct op het apparaat, zonder netwerkverbinding.
### 🎥 Interactieve 3D-handleiding
* **3D-visualisatie:** Beschikt over een volledig interactieve 3D-weergave (`Cube3DView`) die de toestand van de echte kubus nauwkeurig nabootst.
* **Stapsgewijze animatie:** Gebruikers kunnen de oplossingsstappen afspelen, pauzeren en in hun eigen tempo doorlopen.
## 🛠 Technische hoogtepunten
* **Moderne Android-stack:** Volledig gebouwd met Kotlin en Jetpack Compose (Material 3).
* **Robuuste architectuur:** Volgt de principes van Clean Architecture en maakt gebruik van MVVM-patronen, Hilt voor dependency injection en Coroutines voor asynchrone bewerkingen.
* **CameraX:** Implementeert een stabiele en efficiënte camerabasis voor live preview en beeldanalyse.
* **SceneView:** Maakt gebruik van de SceneView-bibliotheek voor hoogwaardige 3D-rendering.
## 🐛 Bekende problemen / TODO's
* Optimaliseer de drempelwaarden voor kleurdetectie om beter om te gaan met extreme lichtomstandigheden.
* Automatiseer de integratie van de "min2phase"-bibliotheek (momenteel handmatig als bronbestanden toegevoegd).