![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Добрый день. Необходимо сделать такую штуку:
есть карта мира, человек кликает где хочет, и ему выдаётся расстояние от места, где он кликнул, до какой либо страны. Проблема в том, что страна - это не точка и не квадрат, поэтому мне нужно искать расстояние до самой ближней точки этой страны. Никто такого не делал? P.S. У меня есть свои мысли, просто хотел узнать если есть уже готовые проверенные решения. Я думаю сделать это так: от места нажатия по окружности с определённым шагом искать точку, которая принадлежит клипу. Потом смотреть, если точка прозрачная, то до станы еще не дошёл - искать дальше
__________________
Нет ничего невозможного |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
hitTest (x,y,true) - и прозрачность отдельно проверять уже не надо.
Но мне кажется затея гиблая в другом месте - у вас плоская карта, а она сильно искажает реальные расстояния. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Мне всегда казалось, что hitTest довольно таки долго выполняется. Не знаю, использовать его или нет.
А по поводу искажения реальных координат, то ничего страшного - это для игры, там можно такой точностью пренебречь
__________________
Нет ничего невозможного |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
По-моему Вы пытаетесь решить проблему в лоб. Неужели нельзя избежать такого хардкорового девелопмента? Если для игры, то наверняка у Вас эта карта, где все кликают, где хочут, побита на некие участки. Может в прототип этого участка просто загонять заранее известные значения? При нажатии просто считывать..
|
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
По-моему без окружностей с перебором точек и радиуса не обойтись...
Единственно, можно для облегчения работы процессора не перебирать всю окружность, а изначально определить сектор окружности и перебирать точки на дуге этого сектора. Либо, действительно, страна делиться на квадраты (двумерный массив) и вычисляется расстояние до каждого элемента массива, после чего определяется наименьший. Наверное, это будет быстрее только если квадраты большие и форма страны несложная. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Что-то логика не понятна.
Загрузилась карта, я щелкнул где-то (на суше), мне показали расстояние до Стамбула, так? Или показали расстояние до 10 ближайших стран? Или показали расстояние до 4 дальних и 23 ближайших стран, относительно точки клика? Просто использование hitTest-та тут не вижу.
__________________
john |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Окружность которая меняет свой радиус и на каждом шаге проверять хиттестом в цикле соприкосновение со странами. Как только для страны сработает первый хиттест, страны из списка сравнений исключить.
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
Точно! Архитектурное решение должно быть тщательно обсосано и идеологизировано! Иначе потом придется переделывать.. У меня один раз так было и с тех пор я не жалею времени на анализ. Во всяком случае, пытаюсь. Просто за шкирку себя от компа отрываешь и посылаешь думать куда-нибудь..
|
|
|||||
|
Регистрация: Nov 2006
Сообщений: 155
|
Я уже сделал эту фичу.
Кстати, для оптимизации я не сразу строю окружности, а сначала нахожу минимальное расстояние до прямоугольника клипа страны - это мой стартовый радиус. Потом строю круги, если окружность выходить за рамки клипа, то перепрыгиваю на следующую итерацию. Спасибо всем за отзывчивость ![]()
__________________
Нет ничего невозможного |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|