+ Ответить в теме
Показано с 1 по 17 из 17

Тема: Планета sweeper'а

Комбинированный просмотр

  1. #1
    Злой магрибский колдун CIVFANATICS.RU TEAM Аватар для sweeper


    Регистрация
    01.03.2005
    Сообщений
    2,968
    Цитата Сообщение от Yorick Посмотреть сообщение
    Интересно? или ты тоже к этому имеешь отношение?
    Посмотрю, спасибо. Удивительно, те же самые искажения 6-угольных тайлов вокруг пятиугольных. Нет, отношения не имею. Кроме того, у меня фон белый
    продвинь это сообщение в соцсеть:  
    Вот уже несколько лет все мои посты крутятся вокруг темы реалистичной модели цивилизации.

  2. #2
    Не поделитесь секретом, как вычислять вершины в таком шаре, или ссылочкой, где это описывается.

    И ещё, как создать алгоритм поиска кратчайших путей на такой карте?
    продвинь это сообщение в соцсеть:  

  3. #3
    Злой магрибский колдун CIVFANATICS.RU TEAM Аватар для sweeper


    Регистрация
    01.03.2005
    Сообщений
    2,968
    Цитата Сообщение от Garik710 Посмотреть сообщение
    Не поделитесь секретом, как вычислять вершины в таком шаре, или ссылочкой, где это описывается.
    Начал с тех 12 вершин, которые будут пятиугольными тайлами. Их координаты вычисляются как координаты четырех углов трех "золотых" прямоугольников. (см икосаэдр: http://ru.wikipedia.org/wiki/%D0%98%...8D%D0%B4%D1%80, золотые прямоугольники http://www.opengl.org.ru/books/opengl1_402.html) Дальше брал вершины по три штуки, такие, чтобы образовывали грань икосаэдра, и достраивал до нужной мне сетки. Там сложновато, много констант, которые определяют законы разбиения. Но если попробовать разбить ручками несколько раз, приходит ясность.
    Цитата Сообщение от Garik710 Посмотреть сообщение

    И ещё, как создать алгоритм поиска кратчайших путей на такой карте?
    После того, как для каждого тайла известны его соседи, можно использовать алгоритм "A*" (http://ru.wikipedia.org/wiki/%D0%90%...D0%BA%D0%B0_A*). Суть такова: из пункта А в пункт Б попадаем не более чем N шагов, где N -- общее количество тайлов. Для начала распихаем во все тайлы число N как количество шагов, необходимых для достижения пункта А. Потом вспомним, что из пункта А в пункт А шагов не надо, и поместим в А число 0. Далее цикл, пока есть изменения. Для внесения изменения берем каждый тайл и смотрим его соседей. Для всех соседей вычисляем минимум шагов, записанных в тайле, пусть это M. Если в самом тайле (центральном, который сейчас меняем) число больше, чем (M+1), записываем в тайл число M+1 и фиксируем факт, что есть изменение. Напоминаю, внешний цикл идет пока есть изменения. Как только после очередного просмотра изменений нет, выходим из цикла и строим путь из пункта Б в пункт А. Для этого берем число шагов пункта Б, вычитаем 1 и ищем соседа, у которого число шагов в точности равно этому значению. Переходим в этого соседа, уменьшаем число шагов на 1 и снова ищем соседа. Сосед с числом шагов 0 и будет пунктом А.
    продвинь это сообщение в соцсеть:  
    Вот уже несколько лет все мои посты крутятся вокруг темы реалистичной модели цивилизации.

  4. #4
    Над построением буду думать, спасибо, а с алгоритмом А* я знаком, просто сбивает с толку необычное расположение и различная форма тайлов.
    продвинь это сообщение в соцсеть:  

+ Ответить в теме

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru

free counters