Необходимо разработать активити с выводом OpenGL ES контекста и отрисовки в нём изометрической сетки по требованиям ниже.
Спецификация окруженияAndroidAndroid 7.0
KotlinKotlin 2.0.0.
OpenGL ESOpenGL ES 3.2.
ТребованияМакет активности
Активность "Designer" должна состоять из трех верхнеуровневых UI элементов:
- Заголовок (Header)
- Подвал (Footer)
- Холст (Canvas)
Заголовок (Header)
Элемент заголовка должен быть размещен в верхней части активности и иметь высоту 50 пикселей.
Элемент заголовка должен служить контейнером для других UI элементов.
Фон элемента заголовка должен быть цвета #383838.
Подвал (Footer)Элемент подвала должен быть размещен в нижней части активности и иметь высоту 50 пикселей.
Элемент подвала должен служить контейнером для других UI элементов.
Фон элемента подвала должен быть цвета #383838.
Холст (Canvas)Элемент холста должен быть размещен в центре активности и заполнять все пространство между заголовком и подвалом.
Элемент холста должен служить контейнером для контекста рисования (OpenGL контекст) и других UI элементов (например, кнопок), расположенных поверх этого контекста.
Элемент холста должен состоять из следующих верхнеуровневых UI элементов:
- Контекст рисования
- Элементы управления масштабированием
Контекст рисованияКонтекст рисования должен заполнять все пространство элемента холста.
Контекст рисования должен использоваться для рендеринга OpenGL контекста.
Контекст рисования должен рисовать изометрическую сетку (или Сетку).
Сетка должна рисоваться как набор линий в соответствии с изометрической проекцией.
Линии сетки для оси X должны быть параллельны этой оси, лежать в плоскости осей X и Y и рисоваться с интервалом в 1 единицу вдоль оси Y.
Линии сетки для оси Y должны быть параллельны этой оси, лежать в плоскости осей X и Y и рисоваться с интервалом в 1 единицу вдоль оси X.
Линии сетки для оси Z должны быть параллельны этой оси, лежать в плоскости осей X и Z и рисоваться с интервалом в 1 единицу вдоль оси X.
Линии сетки должны рисоваться от координаты 0 до 100 и -100 для всех осей.
Пространство просмотра (камера) должно быть повернуто вокруг центра координат в соответствии с правилами изометрической проекции и следующими условиями:
- Положительное направление оси X должно указывать на нижний левый угол экрана.
- Положительное направление оси Y должно указывать на нижний правый угол экрана.
- Положительное направление оси Z должно указывать на верх экрана.
Пространство просмотра (камера) должно быть наклонено примерно на 35,264 градуса в соответствии с правилами изометрической проекции.
Фоновый цвет контекста рисования должен быть цвета #181818.
Линии сетки контекста рисования должны быть цвета #2c2c2c.
Элементы управления масштабированиемЭлементы управления масштабированием должны быть размещены вертикально в правом верхнем углу элемента холста.
Элементы управления масштабированием должны быть реализованы в виде кнопок + и -.
Эти кнопки должны отображаться с фоновым цветом #383838, значением прозрачности 0.7 и цветом текста #FFFFFF.
Взаимодействие с холстомПеремещениеПеремещение пространства просмотра должно быть реализовано с помощью касания (с удержанием) и перемещения.
МасштабированиеМасштабирование пространства просмотра должно быть реализовано с использованием элементов управления масштабированием и жеста сведения/разведения пальцев.
В случае использования элементов управления масштабированием, пространство просмотра должно быть увеличено или уменьшено на 1 единицу OpenGL соответственно, в зависимости от направления масштабирования.
В случае использования жеста сведения/разведения пальцев, пространство просмотра должно масштабироваться аналогично большинству приложений с картами.
ЦентрированиеЦентрирование пространства просмотра должно быть реализовано с использованием кнопки "Center", размещенной в элементе заголовка. Эта кнопка должна отображаться с фоновым цветом #383838 и цветом текста #FFFFFF.
При нажатии на эту кнопку, пространство просмотра должно перемещаться к центру координат.
Включение и выключение отображения сеткиПереключение отображения сетки должно быть реализовано с использованием кнопки "Grid", размещенной в элементе заголовка.
Эта кнопка должна отображаться с фоновым цветом #383838 и цветом текста #FFFFFF.