12.6. ПРИМЕНЕНИЕ МЕТОДОВ АППРОКСИМАЦИИ КРИВЫХ В МАШИННОЙ ГРАФИКЕ
Приложения методов аппроксимации кривых с помощью многоугольников или сплайнов с переменными узлами слишком многообразны, чтобы можно было исчерпывающе представить их в данной книге Краткий обзор некоторых из таких приложений проиллюстрирует важность этого направления для обработки графической информации Одним из возможных способов использования программы-редактора точек, описанной в разд. 10.8, является ввод в нее набросков для обеспечения воспроизведения соответствующих изображений в «очищенном» виде. Например, пользователь может указать на кривую, сообщив системе, что она должна представлять собой окружность, в результате чего указанная кривая будет заменена аппроксимирующей окружностью. Для выполнения таких заданий программа-редактор должна быть расширена: во-первых, должна быть предусмотрена возможность указывать группу точек, и, во-вторых, в нес должны быть введены процедуры аппроксимации функциями.
12.6.1. ОБРАБОТКА ГРУПП ТОЧЕК С ПОМОЩЬЮ ПРОГРАММЫ-РЕДАКТОРА ТОЧЕК
При этом виде обработки лучше всего использовать иерархическую структуру данных Определим структуру кривая следующим образом:
где указатель, определяющий структуру точка, содержащий первую точку дуги, — тип структуры и — переменная состояния. Тип определяет, каким образом следует интерпретировать точки кривой: как точки-ориентиры многочлена Безье, сплайна или экспериментальные точки, аппроксимирующие один из набора базовых объектов — окружность, квадрат, условное изображение резистора, условное изображение усилителя и т. д. Состояние указывает, подвергался ли объект стиранию. Можно также обобщить структуру точка (см. разд. 10.8.1) таким образом, чтобы в нее входил указатель, определяющий структуру кривая, к которой принадлежит каждая точка, что, однако, требуется не всегда. В сущности, процедура , описанная в разд. 10.8.2, должна быть организована следующим образом.
Алгоритм 12.3. Процедура
Обозначения, х и у — заданные координаты, — указатель, определяющий изаточку, и О — указатель, определяющий структуру кривая, выдаваемую процедурой.
(см. скан)
Если команде, снабженной адресом, предшествует слово объект (или соответствующая аббревиатура то соответствующая операция применяется ко всей кривой. Указателем, определяющим кривую, служит значение получаемое на выходе процедуры типа приведенной выше. В частности, первая точка кривой-указывается следующим образом: