Форум программистов, компьютерный форум CyberForum.ru

Как вращать 3D куб OpenGL на Android? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android установка android на заблокированный телефон http://www.cyberforum.ru/android-dev/thread1712227.html
всем привет. мне надо вернуть телефон (meizu) к жизни. ситуация такая: человек забыл pin код, попытка разблокировать через компанию (custom os flyme) безрезультатна. все мои попытки сделать force reset не сработали, прежде чем сделать сброс требует пароль(не так как в самсунг). как я могу стереть установленную ОС и инсталировать новую? желательно стоковую. ВАЖНЫЙ момент, на телефоне не включена...
Программирование Android Переопределение методов Здравствуйте! Помогите, пожалуйста разобраться. При вызове метода B.aa("Тест"), я получаю вывод в логах из методов B.aa(String x) и B.aa(String x, Integer y), а ожидаю только из B.aa(String x). Получается что-же в методе A.aa(String x) вызывается уже переопределённый метод и класса B, а не исходный из класса A? Так и должно быть? Ниже я написал сильно упрощённый пример своего кода. ... http://www.cyberforum.ru/android-dev/thread1712205.html
Опыт фриланса с заключением оф. договора Программирование Android
Если заключить с "Компанией" договор на разработку ПО и они мне оплатят деньги, я должен заплатить 13% налога от этой суммы?
Программирование Android Scroll - как заставить скроллиться
Здравствуйте. Появилась проблема: на активити много разных view. Когда тапишь в элемент с клавиатурой (например, EditText) открывается клавиатура, которая перекрывает остальные view (да бывает, что и ту, в которую вводится текст). Как сделать скролл? Решение в лоб: затолкать все в ScrollView не подошло (хотя может что неверно сделал просто), потому что в активити есть два ListView, которые...
Программирование Android Список категории http://www.cyberforum.ru/android-dev/thread1711740.html
Подскажите как реализовать многоуровневый список категории на подобии используемых в программах контроля за финансами. С помощь каких элементов он создается? ListView это один уровень вложения. Expendable это два уровня, если не ошибаюсь. А если нужно больше?
Программирование Android С#, Мобильное приложение. Пожалуйста, ПОМОГИТЕ! Всем привет! Имеется срочный вопрос на засыпку. Помогите, пожалуйста... Уже есть мобильное приложение, главная цель которого – это информирование людей о новых картинках, распределённых в тематических каталогах. Размер общего количества картинок может быть большим (от 20 до 100 Gb). Каталоги с картинками будут на отдалённом сервере и автоматически обновляться на гаджетах пользователей. ... подробнее

Показать сообщение отдельно
aydarhub
2 / 2 / 0
Регистрация: 31.01.2016
Сообщений: 26

Как вращать 3D куб OpenGL на Android? - Программирование Android

15.04.2016, 14:13. Просмотров 253. Ответов 0
Метки (Все метки)

Привет всем
Есть куб:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
float[] vertices = {
 
                // ось X
                -3f, 0, 0,
                3f, 0, 0,
 
                // ось Y
                0, -3f, 0,
                0, 3f, 0,
 
                // ось Z
                0, 0, -3f,
                0, 0, 3f,
 
                //coub
                ///front green
                -0.5f, -0.5f, 0.5f,
                -0.5f, 0.5f, 0.5f,
                0.5f, -0.5f, 0.5f,
                0.5f, 0.5f, 0.5f,
 
                ///back blue
                -0.5f, -0.5f, -0.5f,
                -0.5f, 0.5f, -0.5f,
                0.5f, -0.5f, -0.5f,
                0.5f, 0.5f, -0.5f,
 
                ///right white
                0.5f, -0.5f, 0.5f,
                0.5f, 0.5f, 0.5f,
                0.5f, -0.5f, -0.5f,
                0.5f, 0.5f, -0.5f,
 
                ///left yellow
                -0.5f, -0.5f, 0.5f,
                -0.5f, 0.5f, 0.5f,
                -0.5f, -0.5f, -0.5f,
                -0.5f, 0.5f, -0.5f,
 
                ///top-red
                -0.5f, 0.5f, 0.5f,
                -0.5f, 0.5f, -0.5f,
                0.5f, 0.5f, 0.5f,
                0.5f, 0.5f, -0.5f,
 
                //bottom purple
                -0.5f, -0.5f, 0.5f,
                -0.5f, -0.5f, -0.5f,
                0.5f, -0.5f, 0.5f,
                0.5f, -0.5f, -0.5f,
        };
Хочу вращать его пальцем. Попробовал вращать сам куб так:
Java
1
2
Matrix.rotateM(mViewMatrix, 0, angleY, 1, 0, 0);
Matrix.rotateM(mViewMatrix, 0, angleX, 0, 1, 0);
но при повороте на одной оси, другая ось уже крутится не в нужную сторону.
Есть идея сделать перемещение камеры, а не вращение самого куба, но смог реализовать поворот только по одной стороне:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void createViewMatrix() {
        //точка положения камеры
        eyeX = (float) (Math.cos(angleX) * 4f);
        eyeY = 0;
        eyeZ = (float) (Math.sin(angleX) * 4f);
 
        //точка направления камеры
        centerX = 0;
        centerY = 0;
        centerZ = 0;
 
        //up-вектор
        upX = 0;
        upY = 1;
        upZ = 0;
 
        Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
Если написать так:
Java
1
2
3
eyeX = (float) (Math.cos(angleX) * 4f);
eyeY = (float) (Math.cos(angleY) * 4f);
 eyeZ = (float) (Math.sin(angleX) * 4f);
то вверх-вниз камера вращается только на 45 градусов и отдаляется от куба.
angleY - это движение пальца по Y,
angleX - это движение пальца по X:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: // нажатие
                downX = event.getX();
                downY = event.getY();
                break;
            case MotionEvent.ACTION_MOVE: // движение
                angleX = event.getX() - downX;
                angleY = event.getY() - downY;
                downX = event.getX();
                downY = event.getY();
                cube.rotate(angleX / 10, angleY / 10);
                break;
            case MotionEvent.ACTION_UP: // отпускание
                cube.setXY();
Подскажите, пожалуйста, формулу, чтобы вверх-вниз тоже вращалось. 2 недели мучаюсь с этой задачей. В интернете похожих задач не нашёл.
Зря я в школе геометрию не любил . Или же, если есть способ попроще, скажите, в какую сторону копать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru