PDA

Просмотр полной версии : Расстояние до страны


NewFolder
02.04.2008, 18:07
Добрый день. Необходимо сделать такую штуку:
есть карта мира, человек кликает где хочет, и ему выдаётся расстояние от места, где он кликнул, до какой либо страны. Проблема в том, что страна - это не точка и не квадрат, поэтому мне нужно искать расстояние до самой ближней точки этой страны. Никто такого не делал?


P.S.
У меня есть свои мысли, просто хотел узнать если есть уже готовые проверенные решения.
Я думаю сделать это так: от места нажатия по окружности с определённым шагом искать точку, которая принадлежит клипу. Потом смотреть, если точка прозрачная, то до станы еще не дошёл - искать дальше

chingachgoog
02.04.2008, 18:12
hitTest (x,y,true) - и прозрачность отдельно проверять уже не надо.

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

NewFolder
02.04.2008, 18:32
Мне всегда казалось, что hitTest довольно таки долго выполняется. Не знаю, использовать его или нет.
А по поводу искажения реальных координат, то ничего страшного - это для игры, там можно такой точностью пренебречь

chingachgoog
02.04.2008, 18:53
Ну если для игры, тогда другое дело :)
Насчет, что дольше - не знаю, надо проверять.

Ariel
02.04.2008, 20:12
По-моему Вы пытаетесь решить проблему в лоб. Неужели нельзя избежать такого хардкорового девелопмента? Если для игры, то наверняка у Вас эта карта, где все кликают, где хочут, побита на некие участки. Может в прототип этого участка просто загонять заранее известные значения? При нажатии просто считывать..

chingachgoog
02.04.2008, 20:32
По-моему без окружностей с перебором точек и радиуса не обойтись...

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

Либо, действительно, страна делиться на квадраты (двумерный массив) и вычисляется расстояние до каждого элемента массива, после чего определяется наименьший. Наверное, это будет быстрее только если квадраты большие и форма страны несложная.

Molecula
02.04.2008, 20:54
Что-то логика не понятна.
Загрузилась карта, я щелкнул где-то (на суше), мне показали расстояние до Стамбула, так?
Или показали расстояние до 10 ближайших стран?
Или показали расстояние до 4 дальних и 23 ближайших стран, относительно точки клика?
Просто использование hitTest-та тут не вижу.

iNils
02.04.2008, 21:02
Окружность которая меняет свой радиус и на каждом шаге проверять хиттестом в цикле соприкосновение со странами. Как только для страны сработает первый хиттест, страны из списка сравнений исключить.

Ariel
02.04.2008, 21:04
Точно! Архитектурное решение должно быть тщательно обсосано и идеологизировано! Иначе потом придется переделывать.. У меня один раз так было и с тех пор я не жалею времени на анализ. Во всяком случае, пытаюсь. Просто за шкирку себя от компа отрываешь и посылаешь думать куда-нибудь..

NewFolder
02.04.2008, 21:29
Я уже сделал эту фичу.
Кстати, для оптимизации я не сразу строю окружности, а сначала нахожу минимальное расстояние до прямоугольника клипа страны - это мой стартовый радиус. Потом строю круги, если окружность выходить за рамки клипа, то перепрыгиваю на следующую итерацию.

Спасибо всем за отзывчивость :)