русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Рациональные кривые


Дата добавления: 2013-12-24; просмотров: 1357; Нарушение авторских прав


Характеристика семейства базовых функций

Узлы

На рис. 8 все базовые функции имеют одинаковую форму и размещены на равных расстояниях друг от друга. На самом деле, желательно варьировать длины интервалов таким образом, чтобы определенные контрольные точки влияли на значительно больший сегмент кривой, а другие — на меньший. Это создает условие для неоднородности (Non-Uniform) в описании кривой.

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

Точки, разграничивающие интервалы, называются узлами (knots), а их упорядоченный список — называется узловым вектором (knot vector).

Узловой вектор базовой функции, представленный на рис. 9, имеет вид {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}. Это пример однородного узлового вектора (uniform knot vector), где все функции определены на одинаковых временных интервалах.

Рис. 9.Пример однородного узлового вектора

Рис. 10.NURBS-кривая с однородным узловым вектором Рис. 12.NURBS-кривая с неоднородным узловым вектором

Следующий рисунок (рис. 10) представляет пример кривой, созданной на основе такого узлового вектора.

Если изменить узловой вектор, например, следующим образом: {0.0, 1.0, 2.0, 3.75, 4.0, 4.25, 6.0, 7.0}, то получится другое множество неоднородных (non-uniform) базовых функций (рис. 11) и, соответственно, другая форма кривой (рис. 12), которая строится на тех же контрольных точках, что и на рис. 10.

Рис. 11.Неоднородные базовые функции для множества контрольных точек

Для любого значения параметра tсумма всех базовых функций равна 1.

Если веса всех контрольных точек положительны, кривая лежит в области, полученной соединением крайних (внешних) контрольных точек. Такой "габаритный" контейнер получил название "выпуклой оболочки" (convex hull).



Ключевая буква в названии NURBSR rational (рациональный). Рациональные кривые, в сравнении с non-rational В-сплайнами, обладают двумя очень важными свойствами:

· они обеспечивают корректный результат при проекционных трансформациях (например, масштабировании), а нерациональные В-сплайны — только при аффинных трансформациях (например, перемещениях);

· их можно использовать для моделирования кривых любого вида, включая конические сечения (окружности, эллипсы, параболы и гиперболы).

Эти свойства достигаются за счет четырехмерного представления обычной трехмерной контрольной точки {х, у, z}. Это значит, что каждая контрольная точка представляется четырьмя координатами {х, у, z, w}.Последняя координата wозначает вес[7] (weight) контрольной точки. Изначально координата wравняется единице, но при увеличении этого значения для контрольной точки увеличивается степень ее воздействия на форму кривой и последняя сильнее выгибается в сторону контрольной точки (рис. 13).

Существенным является только относительное изменение весов контрольных точек. Если вдвое увеличить веса всех контрольных точек, то форма кривой не изменится.

Рис. 13.Изменение формы кривой при изменении веса контрольной точки

Квадратичная NURBS-кривая определяется тремя контрольными точками (рис. 14). У всех трех кривых узловой вектор имеет вид {0.0, 0.0, 0.0, 1.0, 1.0, 1.0}. Веса первой и последней контрольных точек у каждой кривой равны 1. Если вес центральной вершины меньше 1, то результирующая кривая представляет собой сегмент эллипса (рис. 14, а). Если ее вес равен 1, образуется парабола (рис. 14, б). Если же ее вес гораздо больше 1, то кривая преобразуется в гиперболу (рис. 16, в).

Рис. 14.NURBS-кривые с различными весами центральной контрольной точки

Но NURBS-кривые обладают серьезным недостатком: расширенные возможности не могли не сказаться на уровне и сложности инструментария для их построения.

Язык PostScript*

Язык описания страницы PostScript был создан в начале 80-х годов фирмой Adobe. Он был призван стать языком управления графическим устройством, например лазерным принтером, а не просто выполнять узкую задачу — позиционировать только черные точки, т. е. не только создавать битовую карту изображения с учетом разрешения выводного устройства (так работает язык PCL). Главная обязанность этого языка должна заключаться в передаче информации между прикладными программами (графическими редакторами, программами верстки) и устройствами визуализации (лазерными принтерами, фотонаборными автоматами и цифровыми офсетными машинами). Поэтому формирование полной битовой карты страницы было перенесено в обязанность принтера, что вызвало необходимость включить в его состав как вычислительный блок, так и блок памяти.

В основу языка PostScript были положены следующие условия:

  • Основой векторного принципа кодирования графической информации приняты кривые третьего порядка (кривые Безье). Они использовались для описания как графики, так и шрифта, что обусловило единые алгоритмы обработки (с некоторыми небольшими отличиями).
  • PostScript разрабатывался, как язык программирования высокого уровня, а не линейного управления внешним печатающим устройством. Поэтому были предусмотрены все возможности, свойственные классическим языкам программирования: циклы, ветвления, подпрограммы и т. д. Кроме того, PostScript - это язык интерпретирующего типа (программа обрабатывается по мере поступления команд). Файлы в формате PostScript сохраняются в виде обычных текстовых символов (первая половина кодовой таблицы ASCII), что позволяет "рисовать" страницы в обычном текстовом редакторе. Поэтому документ, написанный на языке PostScript или сгенерированный из какого-либо приложения, — это программа, которая подлежит выполнению, и этим "занимается" интерпретатор языка, входящий в состав принтера.
  • Изображение, которое описывается с использованием языка PostScript, никаким образом не связано с разрешающей способностью конкретных устройств вывода. Процесс приспособления изображения к возможностям принтера (процессы растеризации и растрирования) происходит уже в самом принтере, тем самым добивается максимальное качество, на которое он способен. Заранее готовить изображение, приспособленное к конкретному принтеру, нет необходимости.
  • С точки зрения содержания язык PostScrip — это графика, основанная на кривых Безье (линии, которым можно присвоить обводку (stroke) и заливку (fill). Возможны импортирование и обработка пиксельной графики.

Эти условия и их реализация позволили языку PostScript стать основой всей области компьютерной графики и полиграфии. Последующее развитие языка не изменило своей основы, шло по пути интегрирования новых возможностей выводных устройств (цветная печать, систем управления цветом и т. д.).



<== предыдущая лекция | следующая лекция ==>
Базовые функции | Е. П. Пьяных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.