Sketchpad изнутри
Сазерленд начал трудиться над Sketchpad (в переводе название означает «блокнот для набросков») в 1960 году. Для начала он реализовал рисование прямых линий. Решение Сазерленда было простым и изящным: чтобы нарисовать отрезок, пользователь должен был навести световое перо на точку его начала, нажать на пульте клавишу LINE и указать пером конечную точку отрезка. Sketchpad считывал координаты точек и соединял их линией.
>Сазерленд за Sketchpad
Вдохновлённый успехом, Сазерленд в декабре 1961 года показывает прототип системы Клоду Шеннону и... получает от него ряд критических замечаний. Консультант докторской Сазерленда предлагает расширить функциональность «блокнота», добавив возможность рисования окружностей и максимально приблизив функции аппаратных клавиш Sketchpad к стандартным инструментам проектировщика.
Процедура рисования окружностей отняла у Сазерленда массу сил и времени. Разработать подпрограмму, с помощью которой можно было бы указать центр окружности и точку, ограничивающую её радиус, было просто. Но вот описать границу для дуги, завершающей рисование окружности, было весьма непросто.
>Под указательным пальцем на световом пере находилась кнопка спуска
Решение этой проблемы вылилось в разработку обобщённого понятия «ограничитель» (constraint), описывающего границы самых разнообразных объектов, формируемых Sketchpad. Тогда же Сазерленд пришёл к мысли об унификации элементов, составляющих рисунок в Sketchpad. Он предложил представлять любой нарисованный элемент n-компонентной структурой, в которой атомарной единицей был бы компонент.
>Структура n-компонентного элемента «линия»
Например, компонент «отрезок» представлялся двумя компонентами «точка», каждый из которых представлялся двумя компонентами "X"- и "Y"-координаты. В свою очередь, треугольник составляется из трёх компонентов «отрезок». С помощью компонентов типа «ограничитель» можно было задать отношения между визуальными компонентами. Установив ограничитель «параллельность» между двумя отрезками, можно было менять координаты одного из них, не заботясь об изменении координат другого отрезка. Тот автоматически перерисовывался параллельным первому. Точно так же, выбрав ограничитель «равенство», можно было сделать все грани многоугольника одинаковыми, превратив его в равнобедренный.
Следующий логичный шаг, сделанный Сазерлендом, заключался в применении рекурсии для масштабирования изображений. Вместо того, чтобы многократно вручную рисовать элементы разного масштаба, процедура рекурсии позволяла пользователю Sketchpad сгенерировать подмножество любого элемента в разных масштабах и под разными углами, просто пересчитав значения его дочерних компонентов.