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

Поворот объекта относительно заданной точки OpenGL ES 2.0 - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Handler http://www.cyberforum.ru/android-dev/thread1675021.html
Всем привет. Делаю урок по книге(Head First). В которой приводися следующий код: package com.example.stopwatch; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu;
Android Как считать нажатие на одно из полей в ListView? Добрый день, как считать нажатие на одно из полей в listview? вставляю такой код в onCreat, но не выводит log. Что не так? listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.d(TAG, "itemClick: position = " + position... http://www.cyberforum.ru/android-dev/thread1674957.html
Xamarin Xamarin example Hellow world
Добрый день. Я использую C# и Xamarin. С генерировал тестовый проект. Собрал его. Как теперь установить программу на планшет? samsung.
Android Вложенные фрагменты
Ребятушки, привет. У меня проблема с вложенными фрагментами. Мое приложение построено так: есть одно главное Activity, а также NawigationDrawer, через который я перехожу на разные фрагменты. Все переходит без проблем. Но вот у меня есть пара фрагментов, через которые я перехожу на еще один фрагмент (фрагмент во фрагменте получается). Что-то типа первый фрагмент со списком новостей, жмешь на...
Android Как добавить в каждый item GridView свой gif? http://www.cyberforum.ru/android-dev/thread1674647.html
У меня есть url многих картинок, которые сохранены в ArrayList<String> itemList. Но мне нужно в каждый item GridView записалась своя отдельная картинка из этого списка { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new...
Android Как увеличить всю страницу пальцами, вместе с кнопками текстом и изображениями? как увеличить всю страницу пальцами, вместе с кнопками текстом и изображениями. что бы все оставалось на своих местах в том месте где изначально было поставлено. подробнее

Показать сообщение отдельно
SlowAR
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 48
04.03.2016, 13:28  [ТС]     Поворот объекта относительно заданной точки OpenGL ES 2.0
Valakin, я хотел узнать в общем как делать, но я только что решил эту проблему, у меня была ошибка в формуле расчета смещения. через 2,5 часа доберусь до компа с инетом и распишу

Добавлено через 3 часа 46 минут
Вот как я сделал:
Java
1
2
3
4
5
6
7
8
9
10
11
float angleCos = (float)(Math.cos(angle*Math.PI/180) * radius);   //1
float angleSin = (float)(Math.sin(angle*Math.PI/180) * radius)
float offsetX = angleCos + angleSin;
float offsetY = angleSin - angleCos;
 
Matrix.multiplyMM(rotationMatrix, 0, projectionMatrix, 0, viewMatrix, 0);
 
Matrix.translateM(rotationMatrix, 0, posX, posY, 0);   //2
Matrix.translateM(rotationMatrix, 0, -offsetX, -offsetY, 0);
 
Matrix.rotateM(rotationMatrix, 0, angle, 0, 0, 1.0f);  //3
Вращение объекта вокруг некой точки осуществляется путем смещения его левого верхнего угла на определенное значение, вычисляемое при помощи угла поворота. Это нужно для того, чтобы нужная нам точка вращения находилась на одном месте. Смещение по оси Х и по оси У рассчитывается в пункте 1. Здесь angle - мой некий угол поворота в градусах, который переводится в радианы angle*Math.PI/180 (т.к. функции sin и cos принимают углы в радианах), переменная radius - это расстояние от левого верхнего угла объекта до моей точки, вокруг которой надо вращать. Вычисляется по формуле:
Java
1
radius = (float) Math.sqrt(Math.pow(pointX, 2) + Math.pow(pointY, 2));
, где pointX и pointY - расстояния от левого верхнего угла объекта до вашей точки по оси Х и У.
В результате в переменных offsetX и offsetY будут наши смещения для для левого верхнего угла объекта для текущего угла.

В пункте 2 я перемещаю свой объект в какую-то точку posX и posY и затем смещаю его на полученные значения.

В пункте 3 я поворачиваю на тот же самый угол angle свой объект. После передаю rotationMatrix на отрисовку.
Теперь левый верхний угол объекта будет перемещаться по линии окружности на расстоянии radius от нашей точки вращения.

Старался объяснить максимально подробно. Если будут вопросы - постараюсь ответить
 
Текущее время: 18:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru