## 🚀 Огляд
**CubeEye** – це просунутий додаток для Android, розроблений для складання кубиків Рубіка 3x3. Він використовує комп'ютерний зір для сканування фізичного куба та надає інтерактивний анімований 3D-керівник для його складання, використовуючи майже оптимальні рухи.
## ✨ Основні характеристики
### 📷 Інтелектуальна система сканування
* **Виявлення кольору в режимі реального часу:** Автоматично визначає кольори граней куба за допомогою камери через спеціальний `ColorAnalyzer`.
* **Кероване сканування:** Інтуїтивно зрозумілий інтерфейс користувача допомагає користувачам правильно скласти всі 6 граней.
* **Логіка перевірки:** Вбудований `CubeValidator` гарантує, що стан сканування фізично розв'язується перед продовженням.
* **Ручна корекція:** Включає `ColorPickerDialog`, що дозволяє користувачам вручну налаштовувати кольори, якщо умови освітлення впливають на автоматичне виявлення.
### 🧩 Інтелектуальний розв'язувач
* **Алгоритм Коціємби:** Інтегрує відомий двофазний алгоритм (через бібліотеку *min2phase*) для пошуку майже оптимальних рішень, часто вимагаючи менше 20 рухів.
* **Швидке локальне обчислення:** Вирішує складні задачі за лічені секунди безпосередньо на пристрої без необхідності підключення до мережі.
### 🎥 Інтерактивний 3D-довідник
* **3D-візуалізація:** Містить повністю інтерактивний 3D-рендер (`Cube3DView`), який точно імітує стан реального куба.
* **Покрокова анімація:** Користувачі можуть відтворювати, призупиняти та переглядати рухи рішення у власному темпі.
## 🛠 Технічні особливості
* **Сучасний Android Stack:** Побудовано повністю з використанням Kotlin та Jetpack Compose (Material 3).
* **Надійна архітектура:** Дотримується принципів чистої архітектури, використовуючи шаблони MVVM, Hilt для впровадження залежностей та корутини для асинхронних операцій.
* **CameraX:** Реалізує стабільну та ефективну основу камери для попереднього перегляду та аналізу зображень у реальному часі.
* **SceneView:** Використовує бібліотеку SceneView для високопродуктивного 3D-рендерингу.
## 🐛 Відомі проблеми / Завдання
* Оптимізуйте пороги виявлення кольору для кращої роботи з екстремальними умовами освітлення.
* Автоматизуйте інтеграцію бібліотеки "min2phase" (наразі включена як файли вихідного коду ручного керування).