## 🚀 Yleiskatsaus
**CubeEye** on edistynyt Android-sovellus, joka on suunniteltu ratkaisemaan 3x3 Rubikin kuutioita. Se hyödyntää konenäköä fyysisen kuution skannaamiseen ja tarjoaa interaktiivisen, animoidun 3D-oppaan sen ratkaisemiseksi lähes optimaalisilla liikkeillä.
## ✨ Tärkeimmät ominaisuudet
### 📷 Älykäs skannausjärjestelmä
* **Reaaliaikainen värintunnistus:** Tunnistaa automaattisesti kuution tahkojen värit kameran avulla mukautetun `ColorAnalyzer`-ominaisuuden avulla.
* **Ohjattu skannaus:** Intuitiivinen käyttöliittymä opastaa käyttäjiä kaikkien kuuden tahkon oikean kaappaamisen prosessissa.
* **Validointilogiikka:** Sisäänrakennettu `CubeValidator` varmistaa, että skannattu tila on fyysisesti ratkaistavissa ennen jatkamista.
* **Manuaalinen korjaus:** Sisältää `ColorPickerDialog`-ikkunan, jonka avulla käyttäjät voivat säätää värejä manuaalisesti, jos valaistusolosuhteet vaikuttavat automaattiseen tunnistukseen.
### 🧩 Älykäs ratkaisija
* **Kociemba-algoritmi:** Integroi kuuluisan kaksivaiheisen algoritmin (*min2phase*-kirjaston kautta) löytääkseen lähes optimaalisia ratkaisuja, jotka usein vaativat alle 20 siirtoa.
* **Nopea paikallinen laskenta:** Ratkaisee monimutkaisia sekoituksia sekunneissa suoraan laitteella ilman verkkoyhteyttä.
### 🎥 Interaktiivinen 3D-opas
* **3D-visualisointi:** Sisältää täysin interaktiivisen 3D-renderöinnin (`Cube3DView`), joka jäljittelee tarkasti todellisen kuution tilaa.
* **Vaiheittainen animaatio:** Käyttäjät voivat toistaa, keskeyttää ja selata ratkaisusiirtoja omaan tahtiinsa.
## 🛠 Tekniset kohokohdat
* **Moderni Android-pino:** Rakennettu kokonaan Kotlinilla ja Jetpack Composella (Material 3).
* **Vankka arkkitehtuuri:** Noudattaa puhtaan arkkitehtuurin periaatteita hyödyntäen MVVM-kuvioita, Hiltiä riippuvuuksien injektoinnissa ja korutiineja asynkronisissa operaatioissa.
* **CameraX:** Toteuttaa vakaan ja tehokkaan kamerapohjan reaaliaikaista esikatselua ja kuva-analyysiä varten.
* **SceneView:** Käyttää SceneView-kirjastoa tehokkaaseen 3D-renderöintiin.
## 🐛 Tunnetut ongelmat / Tehtävät
* Optimoi värintunnistuskynnykset äärimmäisten valaistusolosuhteiden paremman käsittelyn varmistamiseksi.
* Automatisoi "min2phase"-kirjaston integroinnin (tällä hetkellä mukana manuaalisina lähdetiedostoina).