Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.04.2008, 18:07
NewFolder вне форума Посмотреть профиль Отправить личное сообщение для NewFolder Найти все сообщения от NewFolder
  № 1  
Ответить с цитированием
NewFolder
 
Аватар для NewFolder

Регистрация: Nov 2006
Сообщений: 155
По умолчанию Расстояние до страны

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


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

Старый 02.04.2008, 18:12
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 2  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
hitTest (x,y,true) - и прозрачность отдельно проверять уже не надо.

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

Старый 02.04.2008, 18:32
NewFolder вне форума Посмотреть профиль Отправить личное сообщение для NewFolder Найти все сообщения от NewFolder
  № 3  
Ответить с цитированием
NewFolder
 
Аватар для NewFolder

Регистрация: Nov 2006
Сообщений: 155
Мне всегда казалось, что hitTest довольно таки долго выполняется. Не знаю, использовать его или нет.
А по поводу искажения реальных координат, то ничего страшного - это для игры, там можно такой точностью пренебречь
__________________
Нет ничего невозможного

Старый 02.04.2008, 18:53
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 4  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Ну если для игры, тогда другое дело
Насчет, что дольше - не знаю, надо проверять.

Старый 02.04.2008, 20:12
Ariel вне форума Посмотреть профиль Отправить личное сообщение для Ariel Найти все сообщения от Ariel
  № 5  
Ответить с цитированием
Ariel
 
Аватар для Ariel

Регистрация: Dec 2006
Сообщений: 230
По-моему Вы пытаетесь решить проблему в лоб. Неужели нельзя избежать такого хардкорового девелопмента? Если для игры, то наверняка у Вас эта карта, где все кликают, где хочут, побита на некие участки. Может в прототип этого участка просто загонять заранее известные значения? При нажатии просто считывать..

Старый 02.04.2008, 20:32
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 6  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
По-моему без окружностей с перебором точек и радиуса не обойтись...

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

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

Старый 02.04.2008, 20:54
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 7  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Что-то логика не понятна.
Загрузилась карта, я щелкнул где-то (на суше), мне показали расстояние до Стамбула, так?
Или показали расстояние до 10 ближайших стран?
Или показали расстояние до 4 дальних и 23 ближайших стран, относительно точки клика?
Просто использование hitTest-та тут не вижу.
__________________
john

Старый 02.04.2008, 21:02
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Окружность которая меняет свой радиус и на каждом шаге проверять хиттестом в цикле соприкосновение со странами. Как только для страны сработает первый хиттест, страны из списка сравнений исключить.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 02.04.2008, 21:04
Ariel вне форума Посмотреть профиль Отправить личное сообщение для Ariel Найти все сообщения от Ariel
  № 9  
Ответить с цитированием
Ariel
 
Аватар для Ariel

Регистрация: Dec 2006
Сообщений: 230
Точно! Архитектурное решение должно быть тщательно обсосано и идеологизировано! Иначе потом придется переделывать.. У меня один раз так было и с тех пор я не жалею времени на анализ. Во всяком случае, пытаюсь. Просто за шкирку себя от компа отрываешь и посылаешь думать куда-нибудь..

Старый 02.04.2008, 21:29
NewFolder вне форума Посмотреть профиль Отправить личное сообщение для NewFolder Найти все сообщения от NewFolder
  № 10  
Ответить с цитированием
NewFolder
 
Аватар для NewFolder

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

Спасибо всем за отзывчивость
__________________
Нет ничего невозможного

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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