Вычисляем угол поворота камеры

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вычисляем угол поворота камеры

Сообщение Programmator21 29 окт 2018, 19:16

Уважаемое комЮнити, подскажите как вычислить в углах Еллера на какой угол поворачивается камера. Есть две переменные _m1 и _m2, в них соответственно записываются значение координат поворота в точке А(записываем в _m1) и после вращения объекта Камера, записываются координаты поворота в точке B(записываем в _m2). И теперь мне нужно вывести _result = (_m1-_m2) по оси Y - это важно!
То есть их разницу. И по идее я получу угол, желательно в Градусах или Радианах, на который повернется объект Камера по оси Y. Помогите, как это реализовать?
Последний раз редактировалось Programmator21 29 окт 2018, 20:28, всего редактировалось 2 раз(а).
Programmator21
UNец
 
Сообщения: 11
Зарегистрирован: 24 окт 2018, 00:53

Re: Вычисляем угол поворота камеры

Сообщение 1max1 29 окт 2018, 19:28

значение координат поворота

Изображение

Угол, на который повернулась камера можно рассчитать так:
Синтаксис:
Используется csharp
Quaternion r1 = camera.transform.rotation;
// тут поворачиваем камеру
Quaternion r2 = camera.transform.rotation;
// находим угол
float angle = Quaternion.Angle(r1, r2);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Вычисляем угол поворота камеры

Сообщение Programmator21 29 окт 2018, 19:56

1max1 писал(а):
значение координат поворота

Изображение

Угол, на который повернулась камера можно рассчитать так:
Синтаксис:
Используется csharp
Quaternion r1 = camera.transform.rotation;
// тут поворачиваем камеру
Quaternion r2 = camera.transform.rotation;
// находим угол
float angle = Quaternion.Angle(r1, r2);



Отлично! Работает, но откуда то берется погрешность в 1-2 градуса, в случае если объекты _m1 и _m2 находятся на разной высоте. То есть когда камера меняет не только горизонтальный угол, но и вертикальный. А выводить мне нужно горизонтальный. Подскажите, как сделать:) Quaternion r1, r2 = camera.transform.rotation.y ?
Programmator21
UNец
 
Сообщения: 11
Зарегистрирован: 24 окт 2018, 00:53

Re: Вычисляем угол поворота камеры

Сообщение KanycTa 29 окт 2018, 20:05

Отлично! Работает, но откуда то берется погрешность в 1-2 градуса, в случае если объекты _m1 и _m2 находятся на разной высоте. То есть когда камера меняет не только горизонтальный угол, но и вертикальный. А выводить мне нужно горизонтальный. Подскажите, как сделать:) Quaternion r1, r2 = camera.transform.rotation.y ?


Переводить в углы Эйлера

Quaternion.ToEuler();
Аватара пользователя
KanycTa
UNIт
 
Сообщения: 107
Зарегистрирован: 25 июл 2018, 18:41
Откуда: г. Ульяновск
  • Сайт

Re: Вычисляем угол поворота камеры

Сообщение 1max1 29 окт 2018, 20:34

Попробуй так:
Синтаксис:
Используется csharp
Vector3 f1 = camera.transform.forward;
// тут поворачиваем камеру
Vector3 f2 = camera.transform.forward;
// находим угол
f1.y = 0;
f2.y = 0;
float angle = Vector3.Angle(f1, f2);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Вычисляем угол поворота камеры

Сообщение Programmator21 29 окт 2018, 22:22

1max1 писал(а):Попробуй так:
Синтаксис:
Используется csharp
Vector3 f1 = camera.transform.forward;
// тут поворачиваем камеру
Vector3 f2 = camera.transform.forward;
// находим угол
f1.y = 0;
f2.y = 0;
float angle = Vector3.Angle(f1, f2);


О да, это работает! Наконец то, спасибо!)))) Если не затруднит, поясните, пожалуйста, зачем обнуляются f1.y и f2.y ? А так вроде все логично, благодарю вас! :ymhug:
Programmator21
UNец
 
Сообщения: 11
Зарегистрирован: 24 окт 2018, 00:53

Re: Вычисляем угол поворота камеры

Сообщение 1max1 29 окт 2018, 22:33

Если не затруднит, поясните, пожалуйста, зачем обнуляются f1.y и f2.y

Ну так ты сам просил:
А выводить мне нужно горизонтальный.

То есть тебе нужен угол в плоскости XZ, без Y.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Вычисляем угол поворота камеры

Сообщение Programmator21 31 окт 2018, 07:34

1max1 писал(а):
Если не затруднит, поясните, пожалуйста, зачем обнуляются f1.y и f2.y

Ну так ты сам просил:
А выводить мне нужно горизонтальный.

То есть тебе нужен угол в плоскости XZ, без Y.


А как посчитать вертикальные углы? С горизонтальным понятно, там одна плоскость. А вот в вертикальных две: XY и ZY. Вообще мне нужно вывести "Горизонтальный: .... Вертикальный:....."
Programmator21
UNец
 
Сообщения: 11
Зарегистрирован: 24 окт 2018, 00:53

Re: Вычисляем угол поворота камеры

Сообщение 1max1 31 окт 2018, 09:34

А как посчитать вертикальные углы?

Ну возьми одну плоскость, к примеру XY, значит Z тебе нужно обнулить.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 31