Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Телков всё вместе.doc
Скачиваний:
51
Добавлен:
17.04.2019
Размер:
4.94 Mб
Скачать

2 Алгоритмы разложения в растр отрезка прямой линии и окружности

Растровая развертка – это процесс вывода на устройство отображения геометрических образов, представленных в виде дискретных элементов. Такое представление называется растровым образом (растром).

Алгоритмы построения отрезков

Цифровой дифференциальный анализатор

Алгоритм цифрового дифференциального анализатора (ЦДА) рассмотрим в качестве базового алгоритма для сравнения с типовыми алгоритмами растровой развертки. Он основан на решении дифференциального уравнения прямой линии:

хn,yn- координаты начальной точки отрезка прямой, xк,yк- координаты конечной точки отрезка прямой, Δ x - шаг по х-вой координате, Δ y - шаг по у-вой координате.

Недостатки: 1) в расчетах используется вещественная арифметика;

2) точность попадания в концевую точку данного отрезка не га­рантируется.

Для устранения этих недостатков был предложен алгоритм Брезенхэма.

Алгоритм растровой развертки отрезка пря­мой Брезенхэма

Существует два вида реализации этого алгоритма: вещественный и целочисленный. Вещественный служит базой для построения целочисленного алгоритма. Работа вещественного алгоритма базируется на расчете дополнительной переменной – оценки отложения точки аппроксимации от истинного направления (обозначим эту оценку как е). Рассмотрим работу алгоритма в I квадранте:

Д ля удобства работы величину е изменяют таким образом, чтобы она в крайних точках имела значения с противоположенными значениями:

Недостатки:

1) наличие операций деления.

2) вещественный характер вычислений.

Для того, чтобы работать в одной области определения с растровыми данными, осуществляется переход к целочисленным значениям оценки е:

Алгоритм основанный на данном вычисление оценки, позволяет эффективно реализовать растровые разложения отрезка как на аппаратном, так и на программном уровнях.

Растровая развертка окружностей

Построения окружностей и эллипсов можно осуществлять двумя способами:

1) используя уравнения тригонометрии и аналитической геометрии;

2) с использованием численных методов.

Построение окружности с использованием аналитических выражений. В простейшем случае отображение окружности в растр можно осуществить при помощи аналитической зависимости между координатами X и Y. Алгоритм будет иметь вид:

Данный алгоритм легко модернизировать для случая построения эллипса.

И в том и в другом случае алгоритм растровой развертки окружности достаточно прост для программирования, однако, его вычислительная сложность слишком велика для реализации в составе ядра базовой графической системы. Это объясняется наличием тригонометрических функций в первом случае и степенных – во втором. Поэтому использовать подобные процедуры или функции в составе базовой графической системы не целесообразно. Необходимо разработать такие алгоритмы, которые бы максимально эффективно выполняли растровую развертку окружности при минимальной вычислительной сложности:

Алгоритм разложения в растр окружностей Брезенхема

Брезенхемом был предложен алгоритм аппроксимации разложения окружности в растр, использующий целочисленную арифметику. Кроме отказа от длинных операций и сложности арифметических вычислений трудоемкость этого алгоритма можно сократить в 8 раз, если учесть симметричный характер окружности. Рассмотрим окружность, центр которой расположен в начале координат. При элементарных изменениях можно получить алгоритм, отображающий окружность в произвольном положении. Окружность имеет бесконечное множество осей симметрии, однако, для практики важно наличие восьмисторонней симметрии. Достаточно вычислить величины координат одной точки (х, у), после чего без дополнительных вычислений можно вывести на экран еще 7 точек

C учетом формул, полученных при реализ алг-ма, можно построить целочисленный алгоритм для развертки окружностей в первом октанте:

3 B-сплайновые модели кривых, поверхностей и их разновидности

Модель B-сплайна

Модель базового или фундаментального сплайна разработана в рамках прикладной геометрии.

В-сплайном k-го порядка (или k-1 степени) называется сплайн, определенный на любом числе последовательно расположенных смежных отрезков, но только на k из них отличный от 0 .

Носитель - это число отрезков, на которых сплайн отличен от нуля. С этой точки зрения В-сплайн можно определить как сплайн, имеющий минимальный носитель.

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

Любой сплайн произвольного порядка m , заданный на n узлах t0, t1,…,tn может быть выражен в виде линейной комбинации В-сплайнов, определенных на том же количестве основных узлов с использованием m-1 доп узла на каждом из концевых интервалов. На расширенном таким образом множестве узлов можно построить m+n-1 последовательных В-сплайнов, каждый из которых отличен от 0 только на m последовательных отрезках. Тогда сплайновая кривая будет описываться:

,где S(t) - сплайн порядка m , определенный на n узлах, а Mmi(t) – ф-я В-сплайна, заданная на расшир-м мн-ве узлов и отлич-я от нуля при ti-m < t < ti ; Ci – весовые коэфф-ты.

Линейный В-сплайн (1й степени или 2ого порядка), который определяется на 2х смежных отрезках, Квадратичный В-сплайн 2й степени или 3го порядка, определенный на 3 отрезках:

Кубический В-сплайн третьей степени, определенный на четырех отрезках - на рис.:

Уравнение линейного сплайна (m = 1):

Данные выражения определяют наиболее общий случай неоднородных В-сплайнов, т.е. В-сплайнов у которых размеры сегментов [ti ti+1] могут изменяться. В том случае, если размеры сегментов постоянны, сплайны - однородные. Например, для однородного линейного сплайна приведенная выше формула упрощается:

где L - длина сплайновой кривой ( ), j - доп нормированная переменная:

Разновидности В-сплайновых кривых

На практике часто возникает задача, при которой необходимо скорректировать форму кривой (поверхности), не изменяя исходных данных, т.е. узловых (опорных) точек. используется такие разновидности В-сплайновых моделей, как рациональные В-сплайны и β-сплайны.

Рациональные кубические В-сплайны определяются при помощи рациональ дроби:

,где Pi - исходные данные - координаты опорных точек, t - параметр сегмента кривой , αi - положительные коэффициенты, которые определяются весами или параметрами формы, Ki - функции, зависящие от параметра.

Изменяя коэффициенты αi пользователь получает возможность изменить форму сплайновой кривой. При равном значении коэффициентов αi т.е. α1234 рациональный кубический сплайн вырождается в обычную В-сплайновую форму:

β-сплайн. Данная модель - для тех же самых целей, однако использует несколько иные формальные соотношения. Для решения данной задачи используются условия для 2х смежных сегментов и :

, где β1 и β2 - коэффициенты называемые параметрами формы β- сплайна; β1 - параметр скоса (β1>0); β2 - параметр напряжения кривой (β20).

При β1=1 и β2=0 β-сплайн вырождается в традиционный кубический β-сплайн.

Кроме приведенной классификации В-сплайнов существует их деление на однородные и неоднородные. Однородные предполагают равную величину сплайнового сегмента. На практике данное допущение не всегда применимо. Для получения наиболее качественных результатов аппроксимации необходимо рассмотреть более общий случай, при котором сплайн сегментов может отличаться – неоднородные рациональные В-сплайны (Non Uniform Rational B-spline - NURBS).

Для любой сплайновой кривой уравнение i-го сегмента описывается в следующем виде:

,где Мs - матрица В-сплайна, Gsi - геометрическая матрица В-сплайна.

В-сплайновая модель поверхности

Построение В-сплайновой модели поверхности происходит на базе В-сплайновой модели кривых и полностью аналогично построению модели по форме Эрмита и Безье.

Формат поверхности формы В-сплайновой поверхности описывается следующими уравнениями:

, запишем в матричной форме:

где:

- векторы параметров. Px, Py, Pz – матрицы, определяющие соответственно x-, y- и z-координаты управляющих точек по соответствующим координатам, – 3хмерная матр, опред-щая полные корд-ты вершин (геом матрица В-сплайна), Ms – матрица В-сплайна.