Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: meandnano от Январь 13, 2011, 20:57



Название: Динамические тайлы
Отправлено: meandnano от Январь 13, 2011, 20:57
Доброго времени суток.
Понадобилось мне сделать тайловую карту. Ситуация в общем похожа на вот эту (http://www.prog.org.ru/topic_8794_0.html), но есть различия.
Расскажу полностью:
имеется небольшой(относительно сцены) QGraphicsView и QGraphicsScene соответственно. В каждый момент времени сцена содержит 25 тайлов (квадрат 5х5), каждый размером 250x250px.
При приближении к краю сцены она должна измениться соответствующим образом - сдвинуть текущие тайлы в матрице и подгрузить новые. Короче, карта местности это (API не предлагать).
В принципе, в указанной выше теме этот вопрос уже обсуждался, но меня интересует, как реализовать динамичность. То есть заранее не известен общий размер полного изображения (в рамках данной задачи он равен бесконечности). Собственно, вопрос в том, как реализовать сдвиги тайлов в матрице с сохранением содержимого viewport'а? И как реализовать общую для всей карты систему координат, чтобы зная (x,y) точки можно было бы однозначно определить, в каком тайле она находится?

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

Заранее спасибо.


Название: Re: Динамические тайлы
Отправлено: Igors от Январь 13, 2011, 21:23
Никакой "бесконечности" нет. Как бы ни было велико изображение, на старте оно разбивается на квадратики и записывается в файл. В любом случае в памяти хранится "карта" типа "квадратик - его позиция в файле". Если даже так не хватает диска и/или памяти - ну значит нужно больше ресурсов.

Задача относительно легко решается для "огромного" изображения, которое конечно в память не полезет. Но не существует решения для "бесконечного"  :)


Название: Re: Динамические тайлы
Отправлено: meandnano от Январь 13, 2011, 23:00
Вы не совсем правильно поняли про "бесконечность". Никакой карты в каком бы то ни было огромном файле заранее у меня нет. Все что я могу сделать - это запросить очередные тайлы с сервера и все. Бесконечной то тут считать надо саму карту мира :)
А размер отображаемой карты в каждый момент времени - 1250x1250 (5х5 тайлов), ну, во вьюпорте и того меньше.


Название: Re: Динамические тайлы
Отправлено: ufna от Январь 13, 2011, 23:03
Честно говоря, не понял в чем суть проблемы.

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