Математика (геометрия): прямоугольная проекция? - PullRequest
1 голос
/ 03 февраля 2012

В моем приложении пользователь может определить три угла футбольного поля, используя GPS на iPhone, пройдя по углам один за другим и нажав кнопку.Это хорошо работает, и я могу нарисовать получившийся прямоугольник на экране так же, как он будет выглядеть, например, на картах Google.

Так что теперь у меня есть координаты карты по широте и долготе для трех случайных углов футбольного поля.

Невозможно сказать, с какого угла начинается пользователь, и не вводит ли он / она последовательные углы по часовой стрелке вокруг поля или против часовой стрелки.

То, что я тогда хочу, предназначено для полногона экране iPhone, чтобы представить футбольное поле, чтобы можно было отслеживать положение GPS на экране.

Так что мне нужно вычислить правильную ориентацию, чтобы красиво вписаться в поле на экране, избегая переворачивания любого изосей, а также вращайте и масштабируйте поступающие GPS-координаты в систему координат экрана.

Как бы вы это сделали?Мне не нужен реальный код, только то, что вы считаете наиболее простым алгоритмом / стратегией для достижения этой цели.

Я уже изучил некоторые статьи о проекции, вращении и т. Д., И я думаю, что я мог бы выяснить это путем множества проб и ошибок, но я хотел бы знать самый простой способ сделать это.Может быть, у iOS даже есть некоторые функции для этого, о которых я не знаю?

Ответы [ 3 ]

0 голосов
/ 21 марта 2013

Пока углы посещаются в последовательном порядке (CW или CCW не имеет значения), вы можете вычислить прямоугольник следующим образом:

, если углы p, q и r посещаются по порядку, то угол s= p + r - q

0 голосов
/ 21 марта 2013

Я знаю, что это поздний ответ, но так как ничего еще не принято ...

Если координаты идут как градус-минута-секунда, сначала вам нужно будет преобразовать в десятичные градусы.Затем выберите один из входов.Найти расстояние между этой точкой и каждой из других точек (D = sqrt ((lat1-lat2) ^ 2 + (long1-long2) ^ 2)).Каждое расстояние будет иметь одно из трех значений: ширина (вдоль линии ворот, например - самое короткое), длина (вдоль боковой линии) или диагональ (один задний угол конечной зоны к противоположному заднему углу -самое длинное расстояние).Я не знаю, каковы будут эти расстояния в десятичных градусах. Предполагая, что вы имеете дело с довольно небольшим участком земли, оно будет постоянным, поэтому лучше всего просто пойти на местное поле и измерить их.сам.Если вы имеете дело с большой частью земли, то вам нужно конвертировать из длинных широт в градусы, что делает вещи более безобразными, но это можно сделать (если кто-то спросит, я добавлю эту часть в редактирование),Как только вы узнаете, с какого угла вы начали и какие еще два угла у вас есть, вы можете определить, какое расстояние вам не хватает и, следовательно, какой угол вам не хватает.Вы можете использовать отношение (lat1-lat2) / (long1-long2) для одного из известных расстояний выше, чтобы выяснить ориентацию поля.Когда у вас есть это соотношение и вы знаете расстояние, которое вам не хватает, у вас есть 2 уравнения и 2 неизвестных - выполните одновременное решение, и у вас есть координаты 4-го угла.

Добавьте комментарии, если вам нужны более подробные шаги& информация.

0 голосов
/ 03 февраля 2012

Не могли бы вы описать проблему в ближайшее время? Первый вопрос, что вход (я не поймал). Три точки и что-то еще? 4 номера.

Зачем вам нужно, если вы можете просто получить одну координату и затем рассчитать?

...