Russian Qt Forum
Ноябрь 24, 2024, 12:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамические тайлы  (Прочитано 3216 раз)
meandnano
Гость
« : Январь 13, 2011, 20:57 »

Доброго времени суток.
Понадобилось мне сделать тайловую карту. Ситуация в общем похожа на вот эту, но есть различия.
Расскажу полностью:
имеется небольшой(относительно сцены) QGraphicsView и QGraphicsScene соответственно. В каждый момент времени сцена содержит 25 тайлов (квадрат 5х5), каждый размером 250x250px.
При приближении к краю сцены она должна измениться соответствующим образом - сдвинуть текущие тайлы в матрице и подгрузить новые. Короче, карта местности это (API не предлагать).
В принципе, в указанной выше теме этот вопрос уже обсуждался, но меня интересует, как реализовать динамичность. То есть заранее не известен общий размер полного изображения (в рамках данной задачи он равен бесконечности). Собственно, вопрос в том, как реализовать сдвиги тайлов в матрице с сохранением содержимого viewport'а? И как реализовать общую для всей карты систему координат, чтобы зная (x,y) точки можно было бы однозначно определить, в каком тайле она находится?

Ну и по ходу реализации, наверняка будут возникать новые.

Заранее спасибо.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Январь 13, 2011, 21:23 »

Никакой "бесконечности" нет. Как бы ни было велико изображение, на старте оно разбивается на квадратики и записывается в файл. В любом случае в памяти хранится "карта" типа "квадратик - его позиция в файле". Если даже так не хватает диска и/или памяти - ну значит нужно больше ресурсов.

Задача относительно легко решается для "огромного" изображения, которое конечно в память не полезет. Но не существует решения для "бесконечного"  Улыбающийся
Записан
meandnano
Гость
« Ответ #2 : Январь 13, 2011, 23:00 »

Вы не совсем правильно поняли про "бесконечность". Никакой карты в каком бы то ни было огромном файле заранее у меня нет. Все что я могу сделать - это запросить очередные тайлы с сервера и все. Бесконечной то тут считать надо саму карту мира Улыбающийся
А размер отображаемой карты в каждый момент времени - 1250x1250 (5х5 тайлов), ну, во вьюпорте и того меньше.
Записан
ufna
Гость
« Ответ #3 : Январь 13, 2011, 23:03 »

Честно говоря, не понял в чем суть проблемы.

Систему координат вводите, где для каждого тайтла сохраняются координаты "мира", а чего во вьюпорте - должно быть пофиг. Подгружаются нужные, ненужные удаляются, во время скроллинга по карте.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.