Справочное руководство для работы в системе Турбо-Пролог(версии 2.0)

Продукт всемирно известной фирмы Borland International (США) Турбо-Пролог - наиболее популярная система для освоения и практической работы с языком Пролог. Она отличается не только свойственным этой фирме уровнем сервиса и высокой эффективностью получаемых программ, но и большим набором средств для обучения начинающих пользователей.


Турбо-Пролог как язык сверхвысокого уровня может быть использован для разработки:
•    экспертных систем;
•    электронных таблиц и СУБД;
•    компиляторов;
•    систем перевода текстов с одного языка на другой;
•    естественноязыковых оболочек для прикладных систем;
•    графических и текстовых редакторов;
« интеллектуальных игр и многого другого.
На Западе существует обширная литература, посвященная Прологу. Однако появлявшиеся в СССР книги по Прологу носили в основном академический характер, поэтому мы рады сообщить вам о том, что готовится к выпуску
"Справочное руководство по системе Турбо-Пролог версии 2.0",
написанное программистами А. В. Зайцевым и Э. М. Пройда- ковым, много и плодотворно работавшими в этой области.
"Справочное руководство" включает в себя описания:
•    языка Турбо-Пролог версии 2.0 с подробным справочником по всем встроенным предикатам;
•    директив компилятора и средств отладки программ;
•    интегрированной оболочки системы Турбо-Пролог;
•    стыковки программ на Турбо-Прологе с другими языками,
•    а также тексты простой экспертной системы, графического редактора, программы разбора предложения и коррекции ошибок и т. д.


Допуская при переходе от одного элемента контура границы к другому возможность задания линейной информации, не являющейся границами, а также маркеров и текста, мы получаем принципиально новый одноприоритетный примитив вывода - ОБОБЩЕННЫЙ ПЛОСКИЙ ПРИМИТИВ (см. рис. 9, г). Однако в рамках этого одноприоритетного примитива линейная информация, маркеры и
текст имеют относительно больший приоритет по сравнению с внутренними частями областей.
С помощью ОБОБЩЕННОГО ПЛОСКОГО ПРИМИТИВА можно задать одноприоритетную информацию на плоскости с "отложенным заполнением". С учетом логической простоты собственно алгоритма заполнения при соответствующей аппаратной поддержке такой примитив может стать "примитивом реального времени.

ДИЗАЙНЕРСКИЙ ПОДХОД К СИСТЕМЕ СГЛАЖИВАНИЯ КРИВЫХ

Введение. Сглаживание кривых - важная часть любой САПР поверхностей сложной формы. Проведение гладких граничных кривых - ключевой момент в построении поверхности.
Сглаживание - процесс построения гладкой кривой, проходящей через заданные точки или вблизи от них. Системы сглаживания кривых обычно основаны на математическом понятии гладкости. Но с точки зрения дизайнера, гладкая в математическом смысле кривая ча- :то бывает неудовлетворительной: может иметь осцилляции и резкие колебания кривизны, которые, по мнению дизайнеров, нарушают •ладкость. Кроме того, дизайнер при проведении кривой учитывает ее >удущую форму.
Обычно в САПР используются различные сплайны для построе- шя гладких кривых. Известны сплайны Безье и другие, более изощ- енные, виды сплайнов [1 - 4]. Как правило, их форма задается так ;азываемыми контрольными точками. Однако оказывается, что дизай- ерское понятие формы кривой плохо описывается в терминах конт- ольных точек.
 

Альтернативный подход связан с исследованием кривизны. Построение графика кривизны и его оценка представлены в [5 - 7], а нагруженные сплайны (минимизирующие интеграл от квадрата кривизны) - в [8 - 10]. Эти сплайны имеют два основных недостатка: осцилляции и нелокальный характер. Несколько алгоритмов построения сплайн-кривых с непрерывной или знакопостоянной кривизной показаны в [11 - 161- Хотя эти алгоритмы позволяют строить довольно красивые кривые, они не избавляют от резких колебаний кривизны, существенно влияющих на их формы.
Основная идея описываемой ниже системы состоит в том, что дизайнеру предоставляется возможность решать, как должна себя вести кривизна будущей кривой. Начальные данные пользователя - набор заданных точек, которые рассматриваются как вершины ломаной. Мы расширяем понятие кривизны на случай ломаной линии. Система конструирует график кривизны для заданной последовательности точек. Пользователю разрешается редактирование графика кривизны, в процессе которого он определяет форму кривой. Затем система строит гладкую кривую, интегрируя полученный график кривизны . Если полученная кривая не годится, процесс может быть повторен. В системе предлагается много операций для редактирования графика. В частности, есть даже операции, которые позволяют получить наилучшее приближение к заданным точкам среди всех кривых определенной формы.
Система используется как дополнительный инструмент сглаживания кривых вместе с САПР [17] поверхностей сложной формы в ав-

График кривизны ломаной линии. Рассмотрим входную последовательность точек как ломаную. Система строит график ее кривизны. Кривизна - характеристика гладкой кривой. Определим кривизну ломаной как дискретный аналог кривизны гладкой кривой. Используем два способа приближения:
-    полагаем кривизну в вершине ломаной равной кривизне окружности, проходящей через эту вершину и две соседние. Знак кривизны выбираем такой же, как знак угла между звеньями ломаной, содержащими эту вершину;
-    кривизна в вершине - это угол между соседними звеньями, деленный на расстояние между предыдущей и следующей вершинами.
Для проведения графика кривизны вводим нормализованную параметризацию ломаной. Итак, получаем график с нормальным параметром по оси х и величиной кривизны по оси у. Наше определение кривизны дает только дискретный набор точек на графике. Соединяем )ти точки ломаной и получаем, таким образом, график некоторой функции, определенной на всем интервале изменения параметра.
Интегрирование кривизны. Новый подход состоит в восстанов- гении гладкой кривой по ее кривизне.
томобильной промышленности и может легко быть подключена к другим САПР.
 
Получив график," рассмотрим его как график кривизны некото- юй С2-гладкой кривой, для восстановления которой необходимо ре- иить дифференциальное уравнение второго порядка на плоскости. Поскольку имеется четырехпараметрическое множество решений, на- Ю задать граничные условия. Система берет начальную точку, совпа- ающую с исходной начальной точкой, и касательную в этой точке,
совпадающую с касательной к параболе, проходящей через первые три точки.
Используем дискретное приближение интеграла. Тогда результирующая кривая представляется как новая ломаная, но с гораздо большим числом вершин. Для интегрирования система выбирает дополнительные точки на графике кривизны в количестве, необходимом для получения заданной точности.
Вычисление кривизны - операция, обратная интегрированию. Поэтому полученная кривая имеет тот же график кривизны.
Редактирование. Полученная кривая, хотя и является гладкой, обычно не устраивает дизайнера по двум причинам: поведение кривизны исходной ломаной редко бывает удовлетворительным; восстановленная кривая не всегда проходит близко от заданных точек. Плохое поведение кривизны объясняется грубыми ошибками, сделанными при получении исходных точек, и малыми случайными колебаниями их положений. Грубые ошибки легко определяются дизайнером. Они обычно вызывают резкие выбросы кривизны. Неверные точки могут быть отброшены.
Однако избавиться от случайных колебаний, отбрасывая какие- либо точки, трудно. Более того, неизвестно, как модифицировать кривую для достижения подходящего поведения кривизны. Для решения этой задачи система снабжает дизайнера набором средств для редактирования графика кривизны. После каждой операции редактирования графика система вычисляет новую интегральную кривую. Небольшого опыта работы достаточно, чтобы научиться предсказывать результирующее изменение восстановленной кривой.
Исправление точки графика - "полулокальная" операция. Это означает, что она вызывает изменения интегральной кривой от соответствующей точки до ее конца (кривая поворачивает в этой точке). Начало кривой не меняется. Поэтому дизайнер может исправлять "конечный участок" восстановленной кривой.
Глобальные операции редактирования. Интегральная кривая имеет несколько сотен точек, так что ее поточечное исправление неудобно. Система позволяет редактировать сразу целый участок графика или кривой/После каждой редактирующей операции графика система восстанавливает интегральную кривую с заданной точностью.
Наиболее часто используются следующие операции такого типа: "стереть" - стирает все внутренние точки участка и соединяет его концы отрезком;"заменить" - заменяет внутренние точки участка новыми, указанными дизайнером;
"подвинуть" - передвигает некоторую выделенную точку участка графика в новое положение; соседние точки также передвигаются в том же направлении на расстояние, зависящее от их близости к выделенной точке. Концы участка остаются на месте;
"повернуть" - вращает интегральную кривую вокруг ее начальной точки так, что ее конечная точка попадает в заданное положение. Вращение достигается изменением касательного вектора в начальной точке (как его длины, так и направления);
"согнуть" - разновидность операции "подвинуть". Дизайнер указывает точку, через которую должна пройти интегральная кривая. Система сама выбирает, куда подвинуть выделенную точку участка для выполнения этого условия. Операция позволяет провести кривую через заданные точки с выполнением заданных касательных условий;
"усреднить" - позволяет дизайнеру избавиться от "шума" на графике кривизны на заданном участке.
Автоматическое сглаживание состоит из двух этапов: вначале определяется форма кривой, затем строится кривая такой формы, которая пройдет как можно ближе к заданным точкам. Основная сложность - формализовать понятие формы кривой.
Одна из принятых характеристик формы кривой - ее выпуклость [14]. Однако два полуэллипса (первый с а>Ь, второй с а<Ъ), задаваемы* уравнением (a-cos(t), b-sin(t)), 0<t<3,14, выпуклы, но явно имеют разную форму. Другой пример: в традиционном дизайне поверхностей наиболее часто используемый инструмент - шаблон-кривая. Дизайнеры кузовов автомобилей используют сотни шаблонов. Только опытный дизайнер может выбрать наиболее подходящий шаблон для определенной поверхности. Большей частью эти шаблоны выпуклы, и разница между ними становится очевидной, если рассмотреть их графики кривизны. Итак, наиболее подходящее описание формы связано с графиком кривизны.
Характер развития. Рассмотрим плоскую кривую и разделим отрезок изменения параметра на минимальное число интервалов, на каждом из которых кривизна строго монотонна и сохраняет знак или постоянна. В практике дизайнеров появляются только кривые, допускающие разбиение на конечное число интервалов (при этом число их невелико).
Каждому интервалу поставим в соответствие пару символов: "+" или " - " - знак кривизны; "D", "С" или "I" определяет направление монотонности (D - убывает, С - постоянная, I - возрастает). "NC" - постоянная нулевая кривизна. "Слово", составленное из пар символов -D, +D, -С, NC, +С, -I, +1, идущих в том же порядке, как соответствующие им интервалы, назовем характером развития, или ЕМ (от английского Evolution Mode). В нашей системе считается, что ЕМ кривой полностью определяет ее форму. Множество всех ЕМ описывает все возможные формы кривых.
Аналогичная конструкция годится и для ломаных линий. Следует только заменить непрерывную функцию кривизны на дискретную.
Операция автоматического сглаживания проводится следующим образом. Вначале система вычисляет ЕМ для ломаной с уже исправленным графиком кривизны (в этот момент форма кривой считается утвержденной пользователем). Затем система находит ломаную с минимальным отклонением вершин от исходных точек среди всех ломаных с заданным ЕМ. Полученная оптимальная ломаная рассматривается как каркас сплайна. Этот сплайн и является результатом автоматического сглаживания (рис. 3).
Интерфейс системы. Вход системы - последовательность точек. Выход - ломаная, приближающая гладкую кривую с заданной точностью. Пользователь работает с несколькими окнами на экране (их положение и размеры можно менять). Первое окно содержит ломаную с вершинами в заданных точках и гладкую кривую - результат интегрирования кривизны. Второе окно включает в себя два графика кривизны: ломаной и гладкой кривой (вначале они совпадают). Три других окна предназначены для меню, подсказок.и эхоотображения.
 
Результат автоматического сглаживания каркасной линии автомобиля ЗИЛ-4102.89.Точки на кривой (а) получены замером каркасной линии на макете, соответствующийрафик кривизны (/) - непрерывная черная линия (б). Дизайнер построил график (2),
отвечающий характеру развития этой линии (+!, +D). После применения операцииавтоматического сглаживания получилась линия (сг) и ее график кривизны (б, S).

Меню имеет сетевую структуру: из каждого подменю можно попасть в любое другое. Наиболее часто используемые операции также связаны с "hot keys".


В системе используется понятие режимов. Выполнение некоторых операций зависит от комбинации установленных режимов. Например, режим редактирования можно установить "кривая" или "кривизна". Операция "стереть" стирает отмеченную точку на кривой или на графике кривизны в зависимости от значения этого режима. После редактирования кривой или графика система автоматически иеревычисляет график или кривую соответственно.
В системе есть ряд операций, позволяющих оценить качество построенной кривой, в том числе операции визуализации и подсчета численных характеристик.
Заключение. В статье представлена система сглаживания, позволяющая непосредственное редактирование кривизны. Опыт работы с пользователями убеждает авторов в правильности выбранного подхода.
 


Обсудить вопрос в студенческом форуме

 

Сайт содержит информацию о учебном заведении и студенческой общине и не является официальным