Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Федорков Е.Д., Кольцов А.С. Геометрическое моделирование.doc
Скачиваний:
173
Добавлен:
02.05.2014
Размер:
2.73 Mб
Скачать

6.5. Кривые и поверхности nurbs

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

Рис. 6. В-сплайн с управляющей точкой Р4 в нескольких положениях

Рассмотрим различные виды В-сплайнов.

В-сплайн интерполирует набор из р+1 управляющей точки , и состоит из р-(n-1) сегментов кривой. Кроме того, мы можем определить общий параметр t, нежели отдельный для каждого сегмента в интервале от 0 до 1. Таким образом, для каждого сегмента кривойt будет принадлежать интервалу. Более того, на каждый сегментбудет влиять ровно n управляющих точек отдо.

Для каждого i >= n существует узел между идля значенияti параметра t. Для В-сплайна существует p-n-2 узлов. Отсюда исходит понятие однородности: если узлы равномерно распределены на интервале от 0 до 1, т.е. , то говорят, что В-сплайн равномерный. В противном случае – неравномерный. Стоит также обратить внимание на факт, что эти определения касаются узлов, возрастающих по значению, т.е..

Теперь предположим, что координаты (x, y, z) точки кривой представлены в виде рациональной дроби. В этом случае говорят, что В-сплайн рациональный, иначе – нерациональный:

Подводя итог, можно указать на существование 4 типов В-сплайнов:

- равномерные нерациональные;

- неравномерные нерациональные;

- равномерные рациональные;

- неравномерные рациональные.

Последний тип и представляет собой NURBS как наиболее общий случай В-сплайнов.

Теперь рассмотрим математическое описание NURBS. NURBS кривая и поверхность соответственно выражаются следующими двумя параметрическими уравнениями:

где Рi - управляющая точка, Wi - ассоциированный с ней вес и - базовая функция, определенная рекурсивно следующим образом:

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

Как видно, NURBS имеют явные преимущества по сравнению со всеми описанными выше сплайнами. Следует также обратить внимание, что сплайны Безье – это NURBS, у которого веса всех управляющих точек равны 1 и который состоит из 1-го сплайнового сегмента.

Таким образом, NURBS имеет все преимущества Безье-сплайнов, а также следующие:

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

- наличие весов для управляющих точек, делающих сплайны еще более гибкими.

Единственный недостаток – это несколько более сложное математическое описание NURBS по сравнению с Безье сплайнами, однако порядок этого усложнения не высок.

7. Структура твердотельной модели

Выбор структуры, или топологии, твердотельной модели определяется способом дальнейшего использования синтезируемой модели. Для внешнего использования (при экспорте в таких форматах обмена данными, как dxf, iges, step и т.д.) топология определяется форматом файла, но, как правило, это одна из реберных поверхностных модели. Для внутреннего использования (приложениями, использующими данную библиотеку) наиболее удобна топология "крылатого" представления (winged-edge representation).

Структурными элементами гранично-заданных моделей являются вершины v, ребра e и грани f. Поскольку для представления поверхности мы будем использовать NURBS поверхности, то, как показывает практика целесообразно использовать обрезанные патчи как показано на рис. 7.

Рис. 7. Усеченный патч

Усекаемая часть патча задается цепочкой плоских кривых (c0-c7), заданный в его области определения (по параметрам s, t). Эти цепочки образуют циклы, направление обхода (по или против часовой стрелки) которых определяет какая часть патча остается, а какая отсекается. В некоторых системах указанные плоские кривые хранятся в двух видах: как алгебраическая и как параметрическая сплайновая кривая. Алгебраическая кривая определяет точное ее уравнение (прямая, дуга), а параметрическая – определяет аппроксимацию этой кривой для единообразия при выполнении операций с моделью. В данной работе аналогом алгебраической кривой является произвольная символьная функция библиотеки. Поэтому двойственность представления будет иметь смысл только для внутреннего использования.

Во многих системах кривые являются линиями пересечения патчей, а вершины – точками пересечения кривых. Так, например, на рис. 8 изображена твердотельная модель цилиндра. Патчи боковой его грани являются полными (без усечения), а верхняя и нижняя грани усеченны цепочками c8-c7-c6-c5 и c1-c2-c3-c4 соответственно.

Рис. 8. Граничное представление твердотельной модели цилиндра

В табл. 2 и 3 для данной модели цилиндра приведены вершинное и "крылатое" представления.

Табл. 2.

Твердотельная модель цилиндра в вершинном представлении

vertex

coordinates

edge

vertices

face

edges

v1

x1, y1, z1

e1

v1, v2

f1

e4, e9, e8, e10

v2

x2, y2, z2

e2

v2, v3

f2

e3, e12, e7, e9

v3

x3, y3, z3

e3

v3, v4

f3

e2, e11, e6, e12

v4

x4, y4, z4

e4

v1, v4

f4

e1, e10, e5, e11

v5

x5, y5, z5

e5

v6, v5

f5

e1, e2, e3, e4

v6

x6, y6, z6

e6

v7, v6

f6

e8, e7, e6, e5

v7

x7, y7, z7

e7

v8, v7

 

 

v8

x8, y8, z8

e8

v5, v8

 

 

 

 

e9

v4, v8

 

 

 

 

e10

v1, v5

 

 

 

 

e11

v2, v6

 

 

 

 

e12

v3, v7

 

 

Табл. 3.

Твердотельная модель цилиндра в "крылатом" представлении

edge

vstart

vend

ncw

nccw

vertex

coordinates

face

first edge

sign

v1

v1

v2

e2

e10

v1

x1, y1, z1

f1

e8

-

v2

v2

v3

e3

e11

v2

x2, y2, z2

f2

e3

-

v3

v3

v4

e4

e12

v3

x3, y3, z3

f3

e2

-

v4

v1

v4

e1

e9

v4

x4, y4, z4

f4

e1

-

v5

v6

v5

e8

e11

v5

x5, y5, z5

f5

e1

+

v6

v7

v6

e5

e12

v6

x6, y6, z6

f6

e5

+

v7

v8

v7

e6

e9

v7

x7, y7, z7

 

 

 

v8

v5

v8

e7

e10

v8

x8, y8, z8

 

 

 

v9

v4

v8

e8

e3

 

 

 

 

 

v10

v1

v5

e5

e4

 

 

 

 

 

v11

v2

v6

e6

e1

 

 

 

 

 

v12

v3

v7

e7

e2