@amidaniram

Как определить повернут ли я в сторону объекта?

Пишу приложение на Android в целях обучения. Суть такая.
У нас есть реальный объект, мы знаем его координаты (долгота, широта).
Мы знаем свои координаты (GPS же).
Нужно определить, повернут ли я в сторону объекта и если объект в зоне видимости - вывести сообщение.
Делаю в Unity3D. Но можно ссылки на Java код или чисто математическое объяснение.

Не знаю, как определить куда мы повернуты. В телефоне есть компас. Я могу узнать градус между северным полюсом и направлением куда смотрю. (Вроде сам ответил на свой вопрос?)
Но по прежнему, не понимаю, сути вопроса. Как понять, смотрю я на объект или нет.
  • Вопрос задан
  • 5296 просмотров
Решения вопроса 1
kivsiak
@kivsiak
software engineer
>Как понять, смотрю я на объект

Вот это самое сложное понять что значит вы смотрите на объект. Странно задавать вопрос не понимая его сути?

Магнитный датчик дает 3 угловых координты относительно осей устройства. Казалось бы все хорошо? Все просто и понятно пока девайс лежит ровно на горизонтальной поверхности. Одна из координта это и есть азимут (Поворот относительно сервера по часовой стрелке). В радинах если я не путаю. Дальше все просто математика 9класс и т.д.

Но веселье начется когда вы возьмете девайс в руки - он поверентся относительно 3 осей сразу. Напомню что магнитный сенсор снимат показания относительно осей устройства. Т.е. дальше придется брать показания акселерометра чтобы определить ориентацию устройства. Не 9 класс но матрицу преобразований прикинуть можно. Но вот в чем затык что значит вы смотрите в нужную сторону? В какую систему координат это надо преобразовать? Как формализировать что паралилипид смотрит на что то?

Нарисуйте на листочке это. Со всеми осями. Потом прочитайте это developer.android.com/guide/topics/sensors/sensors... и подстатьи. Может вам подойдет Orientation Sensor или какойто из встроенных. А может придется провести вышеупомянутый секс с магнитным и акселерациооным сенсором ( учтите что он будет реагировать и на движения, и надо подождать поа он сбросится).

Но главное это суть вопроса - что значит устройство смотрит на объект.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Математическое объяснение:
- Нужно, во-первых, использовать понятие направление взгляда, определяемое углом в вашей системе координат.
Во-вторых, зная свои координаты и координаты цели, нужно найти отрезки проекций на оси между собой и целью (разницу координат по осям). Эти отрезки определяют направление до цели.
Зная отрезки проекций, используя к ним тангенс или котангенс (в зависимости от того как Вам удобно), можно получить угол до цели в вашей системе координат.

Далее всё просто - сравниваем угол направления взгляда и угол до цели и делаем выводы.

Геометрия - 9 класс...
Ответ написан
Комментировать
@386DX
Нарисовать между вами и объектом отрезок.
Нарисовать между вами с севером отрезок.
Замерить угол.
Замерить угол на компасе. Если углы совпали, значит повернуты.
Сделать поправку на акселерометр, если телефон расположен не горизонтально.
Имхо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы