Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ Черепашья графика Подготовка команд исполнителю

Роман Protocol Мыслитель (8562), закрыт 6 лет назад
Всем привет!
Пишу класс методов Turtle для реализации построения L-фракталов в L-системах.
Суть в том, что есть аксиома (только одна строка) и правило (а) (1 и более строк).

Например
Аксиома F
Правило F->FbF+

Символы F, b, + и т. д. это команды исполнителю что делать.
Теперь нужно сформировать набор команд для исполнителя.
Для этого первую итерацию происходит подмена всех символов, что описаны в правилах. То есть правило гласит F замени на FbF+. Тогда после первой итерации получим на месте аксиомы строку FbF+.
Вторая итерация. Теперь правило применяем к новой строке FbF+ и в ней меняем все символы F на FbF+ и получаем новую строку FbF+bFbF++ и так до момента пока не закончится счётчик итераций.
Подробнее можно прочесть здесь
https://novainfo.ru/article/4075
http://nsft.narod.ru/Fractals/turtle.htm

Я написал код, позволяющий формировать последовательность команд исполнителю - черепашке с указанием числа итераций https://pastebin.com/e70dRJ8Q

Вопрос в том, нужно его проверить: правильно ли отрабатывает код, особенно в случаях с наличием квадратных скобок.
Пример с квадратными скобками
Аксиома: ----G
Правила:
G->GFX[+G][-G]
X->X[-FFF][+FFF]FX

Исполнителя пока не написал я.
Спасибо за ответы!
Лучший ответ
Kajo. Искусственный Интеллект (166940) 6 лет назад
Правильно, продолжайте.
Роман ProtocolМыслитель (8562) 6 лет назад
Я доделал черепашью графику. Но 15% фракталов строится не правильно.
Я пишу код с использованием сторонней медиа библиотеки SFML.
Вот материалы: https://yadi.sk/d/mhLwCegt3URNWh
Вот код готового класса по работе с черепашьей графикой: https://pastebin.com/gVN1uaSG
Как сделать, чтобы все фракталы строились правильно?
Остальные ответы
Ардов Александр Гуру (3147) 6 лет назад
Поставь матрицу в фрактал, Типы информационных данных massive(i), расстояние между ними 0,1,3 - где 0,1-двоичный код, 3-логическая ошибка, где массив равен матрице, или метаВселенной.
Марценюк Андрей Профи (754) 6 лет назад
ААА! дошло, матрицу в фрактал поставь, информационные данные massive(i) расстояние 0,1,3 - 0,1 двоичный код, 3 лохгическая ошибка, там массив матрице равен.
Ученик (117) 6 лет назад
красиво написано и много
Роман ProtocolМыслитель (8562) 6 лет назад
Спасибо! Это только часть программы. Я пишу библиотеку графической обработки на C++ на основе библиотеки SFML. На данный момент размер всего кода составляет 2871 строк. Структура кода такова: идут классы, внутри статические методы. В функции main() я просто вызываю того, кто мне нужен и они обрабатывают или рисуют изображения.
Ученик (117) Можно применить, звуковой редактор!
Похожие вопросы