Python-скрипт для генерации случайного двумерного лабиринта любого размера с использованием алгоритма Эллера. Выходной результат представляет собой определение массива в OpenSCAD, где пустые клетки и стены обозначены как 0 и 1 соответственно.
Для получения дополнительной информации об алгоритме Эллера см. здесь:
http://weblog.jamisbuck.org/2010/12/29/maze-generation-eller-s-algorithm
Инструкции.
Я планирую в конечном итоге использовать это для случайной генерации лабиринта с гладкими внутренними стенами и боксами.
Количество горизонтальных и вертикальных ячеек указывается в командной строке:
./eller_generator.py 15 5 > maze_new.scad
Генерация определения лабиринта должна быть очень быстрой, но компиляция в OpenSCAD может занять некоторое время в зависимости от размера лабиринта.
Используя сумму Минковского, вы можете генерировать закругленные края (смотрите файл STL/SCAD 'punch'). Создание этого занимает много времени (около 5 минут для примерного файла из-за пересекающихся краев), но отображение происходит довольно быстро.
Обновление 26 декабря 2013 года: исправлена ошибка с координатами X/Y в коде OpenSCAD для рисования лабиринта.
Обновление 26 декабря 2013 года: исправлена ошибка с делением с плавающей точкой при расчете вероятности попадания в цель.
Обновление 26 декабря 2013 года: отрегулирована высота экструзии лабиринта до высоты самого лабиринта.
Обновление от 27 декабря 2013 года: Исправлена ошибка с объединением множеств, которая приводила к возникновению циклов.
标签
模型来源
