Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Puzzle, алгоритм нарезки
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 21.11.2006, 06:57

Ребят, мож у кого-нить есть алгоритм фигурной нарезки картинки для паззл?
Ответить с цитированием
  (#2 (permalink)) Старый
LARS LARS вне форума
Member
 
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
По умолчанию 27.11.2006, 23:05

а зачем алгоритм?...делаешь трафарет, а потом в зависимости от размеров/масштабов картинки меняешь ему размеры и размножаешь по картинке.
Ответить с цитированием
  (#3 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 28.11.2006, 04:38

>делаешь трафарет...
дык, алгоритм трафарета тогда :)
я хочу программно "разрезать" картинку в виде стандартных пазлловских фигур/элементов. Уверен, должен быть алгоритм, я просто его не знаю. Возможно, это должна быть какая-нить мат. функция...
Ответить с цитированием
  (#4 (permalink)) Старый
KachoK KachoK вне форума
Member
 
Сообщений: 244
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.07.2004
По умолчанию 28.11.2006, 09:56

Вариант 1: Да, это должна быть математическая функция, только из-за формы линии этой функции она должна задаваться параметрически, т.е. не y=func(x), а y=func1(t) и x=func2(t), где t - это и есть параметр. К сожалению я учил это слишком давно, поэтому конкретно так ничего вспомнить не удалось.

Вариант два: я в нтернете с год назад встречал модуль для построения сплайнов и линий безье. Там надо задать несколько точек, а потом по ним строится сглаженая линия. Принцип тот же что и вариант 1, только функцию самому не надо восстанавливать - на выходе сразу нужная линия.
Ответить с цитированием
  (#5 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 29.11.2006, 05:54

>KachoK
сенкс...
построение сплайнов, линий Безье...надо поискать в сети...
да, наверное это оно и есть...

>LARS
Есть ли смысл использовать Polygon для создание трафарета? И что это будет за трафарет, если боковые фрагменты картинки уже существенно отличаются от внутренних...
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
LARS LARS вне форума
Member
 
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
По умолчанию 29.11.2006, 14:19

Wood, давай разберемся поконкретней что за паззл ты хочешь сделать...где и как хочешь хранить куски паззла?...если как обычно в тайлах, то что ты будешь делать с областями, которые выходят запределы тайла?...обьясни подробнее какого вида паззл ты делаешь.

Трафарет ясное дело не один будет. Главное определиться его границами.
Ответить с цитированием
  (#7 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 30.11.2006, 05:19

>LARS
Мысли о паззл мне давно не дают покоя :) И сама идея сделать игруху у меня, надеюсь пока, только в голове :)
В моем понимании, представляется только следующее, весьма обобщенно и смутно:
паззл делать на OpenGL/DirctX, использовать спрайты под фрагменты. Соединение фрагментов проверяется по-пиксельно, а не по рамке...

Буду признателен за "пинок" в правильном направлении :)
Ответить с цитированием
  (#8 (permalink)) Старый
LARS LARS вне форума
Member
 
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
По умолчанию 30.11.2006, 05:44

Цитата:
Соединение фрагментов проверяется по-пиксельно, а не по рамке...
ээээ...че-т не догоняю как это...ладно...проехали.

насчет пинка не знаю, но Я бы делал так: есть общая картина, и есть трафарет: допустим, по краю - один, остальное - другой. Надо проверять массив карты каждый раз, когда ставишь новый паззл, а лучше сканить части вокруг него. Если есть там уже кусок, то рисовать тот тайл свободно, а если нет - то рисовать тайл инвертный, т.е. тайл, который обеспечивает ту самую выпуклость кусочку паззла(прорисовывает каринку под ним). ...Я надеюсь ты хоть как-то меня понял...а вообще, оочень трудно обьяснить подобное...

попиксельно это гиблое дело(интересно даже как Ты это хотел реализовать) - рамка рулит, и тут лучше юзать DirectX...опять же ИМХО.
Ответить с цитированием
  (#9 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 30.11.2006, 13:52

>LARS
во-первых, благодарю за участие в моем вопросе :), во-вторых....
Допустим, действительно трафарет(ы)... Возьму, пока, за основу, потому что думаю с пом. трафарета будет легче нарезать картинку.
>...рисовать тот тайл свободно..
а если вокруг того тайла нет кусков? То как? К примеру, поставил первый х.з. какой кусок в пустое место. Если рядом с ним есть кусок, то место их соединения уже не вырезанное, а ровное. Соответственно, другие стороны у этих кусков должны быть фигурными...
не представляю себе, как это организовать. :(
если рамками соединение, то как свести два спрайта так, чтобы их фигурные стороны слились?
не хотелось бы заново изобретать велосипед...
Ответить с цитированием
  (#10 (permalink)) Старый
LARS LARS вне форума
Member
 
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
По умолчанию 30.11.2006, 20:24

мде...старею Я...не могу толком идею обьяснить. Ладно попробую еще раз.

Дело в том, что у тебя долны быть не тайлы картинки, а маска эти тайлов с прозрачными областями, через которые картинка быдет просвечиваться и будет создаваться впечатление, что ты ложешь кусок картинки...на самом деле ты создаешь дырку, через которую просвечивается картинка. Это Я думаю понятно. Далее работаем с массивом этих масок. Допустим ты кликаешь на пустом месте, открывается картинка. смотрим относительно дырки в 4 стороны - лево, право, верх, низ - и если там еще не открыто, ставим маску с прозрачной областью - вырезом. Создается впечатление, что это кусочек паззла.

вот. Зеленая чать - открытая картника, серая - невидимая область. Видно что кусок 4 имеет полукруглую прозрачную область в правой части, а 6 - в левой. Центральный кусок сверху и снизу имеет невидимые области. А все выглядит как кусочек паззла. Сейчас понятно в каком неправлении копать?

Удачи!
Ответить с цитированием
  (#11 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 01.12.2006, 09:00

Спасибо, LARS.
Направление траншеи (куда копать) стало более четче :-) А именно, я уяснил, что используется маска. Про нее я, как-то, совсем забыл!
Только странное у тебя представление о паззл:
Цитата:
Допустим ты кликаешь на пустом месте, открывается картинка. смотрим относительно дырки в 4 стороны - лево, право, верх, низ - и если там еще не открыто,...
обычно, кусочки картинки перетаскиваются на, изначально пустой, стол сборки :)
Но вот представь себе фрагмент "5" из, любезно представленной тобой, картинки вне данного квадрата. Выступов с правой и левой сторон у него уже не будет, так как эти выступы изображает маска соседней картинки. По закону паззл внутренние фрагменты должны иметь как выпуклости так и впуклости :). Вот почему я спросил об алгоритме нарезки. Если бы элементы паззл могли в моем случае иметь прямоугольную форму, вопроса бы небыло.
Думаю, все же с помощью маски как-то можно решить эту задачу... То есть, после нарезки картинки на прямоугольные фрагменты на них накладываеттся определенная маска (несколько разновидностей)....
Не... не правильно! Надо наложить один большой трафарет маски на всю картинку, а уж потом нарезать вместе с маской! Т.е., перемешанные фрагменты разрезанной картинки уже за ранее должны быть с маской. И там, где они правильно соприкасаются маска убирается. Но убирается маска только с той стороны, где правильное соприкосновение.... что-то я запутался. Всё, у меня ступор...:(
Ответить с цитированием
  (#12 (permalink)) Старый
LARS LARS вне форума
Member
 
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
По умолчанию 01.12.2006, 12:20

Цитата:
что-то я запутался. Всё, у меня ступор...
ниче...разберешься...тут разжевывать дальше нету смысла. Сделай сначала движок - просто кликаешь на карту, кусочки открываются, нужные маски подбираются...а там уже видно будет.

Удачи!
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 01.12.2006, 13:43

>просто кликаешь на карту...
хех... ни как нет... Я не должен кликать на карту, я должен перетаскивать кусочки из коробки на стол :) И эти кусочки должны выглядеть как у настоящей картонной паззл.
Я видел и играл в подобную игру. Хочется сделать самому..
Но "пинок" в нужном направлении я уже получил.
Бум думать :)
Ответить с цитированием
  (#14 (permalink)) Старый
LARS LARS вне форума
Member
 
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
По умолчанию 01.12.2006, 17:00

а какая грушка если не секрет, и где можно скачать посмотреть?...самому интересно.
Ответить с цитированием
  (#15 (permalink)) Старый
Wood Wood вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.09.2006
По умолчанию 04.12.2006, 04:38

Цитата:
а какая грушка если не секрет, и где можно скачать посмотреть?...самому интересно.
это было давненько... постараюсь найти у себя в архивах. :)
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм последовательности 2an-2–2, где a1=3 и a2=2 turtles Алгоритмы 0 27.09.2011 12:44
Алгоритм подсчета arlekin_1980 Алгоритмы 3 28.07.2011 19:45
Puzzle на Silverlight - пример из книги Морони Мастак .NET 2 27.05.2011 19:29
Программа для нарезки видео?? Jane Bir Любые вопросы от новичков 8 26.08.2010 11:36
алгоритм snegov1k Задания за деньги 1 22.05.2010 23:27
Подскажите программы для редактирования и нарезки видео. MASH Любые вопросы от новичков 7 06.03.2009 14:29
Посоветуйте программу для нарезки и редактирования МР3 файлов. Yuliya-vivera Любые вопросы от новичков 4 21.09.2008 21:42
Программа для нарезки MP3 Scale Софт и программы 15 11.07.2008 03:24
Алгоритм Бута ускоренный алгоритм умножения чисел MrPIT Алгоритмы 0 20.05.2006 18:12
Алгоритм Хаффмана АЛЬБИНА Pascal 7 02.05.2006 05:48
Код программы на Visual Prolog Алгоритм Флойда и Алгоритм Дейкстры r Вопросы начинающих программистов 2 08.12.2005 00:34
алгоритм Дейкстры 7ema Задания за деньги 0 23.10.2005 14:08



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов