В последний семестр моего обучения в Массачусетском технологическом институте произошли две вещи: ArcMac стал Медиа-лабораторией, а Массачусетский технологический институт предложил свой самый первый курс компьютерной графики, курс для выпускников, который вел только что прибывший профессор Дэвид Зельцер.

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

Когда лаборатория переехала в новое здание, спроектированное I.M. Pei, я помогал протягивать кабели под фальшполом машинного зала. В большом удобном лабораторном помещении были установлены две рабочие станции Symbolics Lisp Machines, и хотя среди аспирантов я был всего лишь скромным студентом, я начал думать об одной из машин как о своей.

Другая рабочая станция в основном использовалась двумя аспирантами, которые работали над синтезом голоса. Насколько я помню, что-то связанное с интонацией голоса. Я помню, как их компьютер повторял фразу «это очевидно» снова и снова.

Поскольку у меня не было кабинета в лаборатории, а аспиранты днем ​​пользовались компьютерами, взлом поздним вечером был для меня. И это меня вполне устраивало.

Дизайн и код

Древовидная структура на изображении выше была создана путем вызова функции

make-fractal-plant-l-system

в примере кода ниже.

Остальной показанный код предназначен для команд черепахи и конечного автомата, которые отслеживают путь древовидной формы в соответствии с грамматикой l-системы. Идея черепашьей графики (физический робот, похожий на черепаху, который рисовал на бумаге) была изобретена как часть системы программирования Logo Сеймуром Пейпертом, у которого также была лаборатория в Media Lab. Маленький мир.

Самые зоркие из вас, возможно, заметили, что код черепахи на данный момент привязан к плоскости X-Y, поэтому вызов

make-z-rotation-matrix

Я могу изменить это позже, если буду больше работать над созданием естественно выглядящих форм.

Генерация «генома» структуры по продукционным правилам и их графическая интерпретация, на мой взгляд, слишком запутаны (как любят говорить банды Clojure). В будущем я могу разбить класс l-system на отдельные грамматические и графические части.

Следующая серия