Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Расстояние до страны (http://www.flasher.ru/forum/showthread.php?t=110428)

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

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

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


Часовой пояс GMT +4, время: 09:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.