![]() |
Расстояние до страны
Добрый день. Необходимо сделать такую штуку:
есть карта мира, человек кликает где хочет, и ему выдаётся расстояние от места, где он кликнул, до какой либо страны. Проблема в том, что страна - это не точка и не квадрат, поэтому мне нужно искать расстояние до самой ближней точки этой страны. Никто такого не делал? P.S. У меня есть свои мысли, просто хотел узнать если есть уже готовые проверенные решения. Я думаю сделать это так: от места нажатия по окружности с определённым шагом искать точку, которая принадлежит клипу. Потом смотреть, если точка прозрачная, то до станы еще не дошёл - искать дальше |
hitTest (x,y,true) - и прозрачность отдельно проверять уже не надо.
Но мне кажется затея гиблая в другом месте - у вас плоская карта, а она сильно искажает реальные расстояния. |
Мне всегда казалось, что hitTest довольно таки долго выполняется. Не знаю, использовать его или нет.
А по поводу искажения реальных координат, то ничего страшного - это для игры, там можно такой точностью пренебречь |
Ну если для игры, тогда другое дело :)
Насчет, что дольше - не знаю, надо проверять. |
По-моему Вы пытаетесь решить проблему в лоб. Неужели нельзя избежать такого хардкорового девелопмента? Если для игры, то наверняка у Вас эта карта, где все кликают, где хочут, побита на некие участки. Может в прототип этого участка просто загонять заранее известные значения? При нажатии просто считывать..
|
По-моему без окружностей с перебором точек и радиуса не обойтись...
Единственно, можно для облегчения работы процессора не перебирать всю окружность, а изначально определить сектор окружности и перебирать точки на дуге этого сектора. Либо, действительно, страна делиться на квадраты (двумерный массив) и вычисляется расстояние до каждого элемента массива, после чего определяется наименьший. Наверное, это будет быстрее только если квадраты большие и форма страны несложная. |
Что-то логика не понятна.
Загрузилась карта, я щелкнул где-то (на суше), мне показали расстояние до Стамбула, так? Или показали расстояние до 10 ближайших стран? Или показали расстояние до 4 дальних и 23 ближайших стран, относительно точки клика? Просто использование hitTest-та тут не вижу. |
Окружность которая меняет свой радиус и на каждом шаге проверять хиттестом в цикле соприкосновение со странами. Как только для страны сработает первый хиттест, страны из списка сравнений исключить.
|
Точно! Архитектурное решение должно быть тщательно обсосано и идеологизировано! Иначе потом придется переделывать.. У меня один раз так было и с тех пор я не жалею времени на анализ. Во всяком случае, пытаюсь. Просто за шкирку себя от компа отрываешь и посылаешь думать куда-нибудь..
|
Я уже сделал эту фичу.
Кстати, для оптимизации я не сразу строю окружности, а сначала нахожу минимальное расстояние до прямоугольника клипа страны - это мой стартовый радиус. Потом строю круги, если окружность выходить за рамки клипа, то перепрыгиваю на следующую итерацию. Спасибо всем за отзывчивость :) |
| Часовой пояс GMT +4, время: 09:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.