АЧМ - Алгоритмы и Численные Методы
Поиск  
АЧМ - Алгоритмы и Численные Методы  


L-системы

Построение снежинки Коха, дракона Хартера-Хайвея, деревьев производится с помощью L-систем. L-системы часто называются ещё и системами черепашьей графики.

Черепашья графика - это способ рисования линий на экране компьютера. Он состоит в том, что программист как бы управляет движением черепашки. Черепашка, ползая по экрану, оставляет за собой след. При этом цель программиста – управлять черепашкой так, чтобы черепашка нарисовала нужную линию. Команды управления черепашкой просты: сделать шаг вперёд (обозначается F), повернуть направо (обозначается +), повернуть налево (обозначается -), сделать шаг вперёд без перерисовки (прыжок, обозначается B). Вот из этих команд и составляется сценарий построения линии строка команд. Величина одного шага и угол одного поворота при движении черепашки всегда остаются постоянными и задаются предварительно.

Например, F++F++F это равносторонний треугольник, если угол поворота равен pi/3, а F+F+F+F – это квадрат, если угол поворота равен pi/2 .

Построение L-системы происходит в три этапа.

    • Сначала создаётся сценарий поведения черепашки.
    • Потом подсчитывается размер линии, которая получится, если запустить этот сценарий на исполнение. Линия как бы рисуется в уме, а потом смотрится её размер. На основе этого размера подправляется масштаб, чтобы вся линия уместилась на экране.
    • На экран запускается черепашка, которая рисует линию.

Фракталы – самоподобные фигуры, значит, и сценарии у них должны быть самоподобные.

 

    • Берётся начальная фигура (называется - аксиома), например, F++F++F с углом pi/3 .
    • Задаётся правило замены F (называется правило newF) , например, newF = F-F++F-F ;
    • В имеющейся фигуре (в сценарии) все F заменяются на newF. В нашем примере получим

F-F++F-F++F-F++F-F++ F-F++F-F

    • Повторяем предыдущий шаг N раз. На втором шаге мы получим

F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F

Деревья.

У деревьев есть ветки. Тут имеющимся набором команд не обойдёшься. Приходится вводить ещё пару команд: начало ветви (обозначается [ ), конец ветви (обозначается ] ). В начале ветви черепашка должна запомнить своё состояние (положение и направление взгляда), а когда ей встретится соответствующий конец ветви, она должна вернуться в то положение, которое запомнила.

Вот, например, данные для построения куста.

axiom = F

newF = -F+F+[+F-F-]-[-F+F+F]

turn = pi / 8

Для трёх шагов получим такую картинку ->


KDSW Logo  © Copyright 2005 KDSW Systems [ Kamaev Dmitry SoftWorks ]