## 🚀 Panoramica
**CubeEye** è un'applicazione Android avanzata progettata per risolvere il cubo di Rubik 3x3. Sfrutta la visione artificiale per scansionare un cubo fisico e fornisce una guida 3D interattiva e animata per risolverlo utilizzando mosse quasi ottimali.
## ✨ Caratteristiche principali
### 📷 Sistema di scansione intelligente
* **Rilevamento del colore in tempo reale:** Identifica automaticamente i colori delle facce del cubo utilizzando la fotocamera tramite il `ColorAnalyzer` personalizzato.
* **Scansione guidata:** Un'interfaccia utente intuitiva guida gli utenti attraverso il processo di acquisizione corretta di tutte e 6 le facce.
* **Logica di convalida:** Il `CubeValidator` integrato garantisce che lo stato scansionato sia fisicamente risolvibile prima di procedere.
* **Correzione manuale:** Include un `ColorPickerDialog` che consente agli utenti di regolare manualmente i colori se le condizioni di illuminazione influiscono sul rilevamento automatico.
### 🧩 Risolutore Intelligente
* **Algoritmo di Kociemba:** Integra il famoso algoritmo a due fasi (tramite la libreria *min2phase*) per trovare soluzioni quasi ottimali, che spesso richiedono meno di 20 mosse.
* **Calcolo locale rapido:** Risolve complessi scramble in pochi secondi direttamente sul dispositivo senza bisogno di una connessione di rete.
### 🎥 Guida 3D interattiva
* **Visualizzazione 3D:** Offre un rendering 3D completamente interattivo (`Cube3DView`) che riproduce fedelmente lo stato del cubo reale.
* **Animazione passo passo:** Gli utenti possono riprodurre, mettere in pausa e scorrere le mosse della soluzione al proprio ritmo.
## 🛠 Caratteristiche tecniche
* **Stack Android moderno:** Sviluppato interamente utilizzando Kotlin e Jetpack Compose (Material 3).
* **Architettura robusta:** Segue i principi di Clean Architecture, utilizzando pattern MVVM, Hilt per l'iniezione di dipendenze e Coroutine per operazioni asincrone.
* **CameraX:** Implementa una base di telecamere stabile ed efficiente per l'anteprima in tempo reale e l'analisi delle immagini.
* **SceneView:** Utilizza la libreria SceneView per il rendering 3D ad alte prestazioni.
## 🐛 Problemi noti / TODO
* Ottimizza le soglie di rilevamento del colore per gestire al meglio condizioni di illuminazione estreme.
* Automatizza l'integrazione della libreria "min2phase" (attualmente inclusa come file sorgente manuale).
Ultimo aggiornamento
6 gen 2026