Добавил:
sergeevpavel0406@mail.ru СОВА Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика в техническом университете / Информатика в техническом университете. Компьютерная графика

.pdf
Скачиваний:
83
Добавлен:
06.03.2018
Размер:
6.96 Mб
Скачать

3.3. Параметрические бикубические поверхности

ние полиномов, описывающих поверхность, и процедура последовательного подразбиения.

Рассмотрим способ визуализации, основанный на вычислении. Итерационное вычисление дает хорошие результаты для бикубических поверхностей, типичная форма которых показана на рис. 3.32. Этот фрагмент поверхности представляет собой два семейства кривых: одно из них состоит из кривых, зависящих от аргумента t, другое — от аргумента s.

Ниже дано описание процедуры визуализации фрагмента бикубической поверхности как сетки кривых:

typedef double Coeffs[4] [4] [3] ;

void

DrawSurface(

Coeffs coefficients,

I*

Коэффициенты для Q ( $ , t ) */

i n t

n s ,

/* Число кривых по константе s. Обычно оно равно 5-10 */

int nt,

/* Число кривых по константе t. Обычно оно равно 5-10 */ int n)

/* Число шагов для воспроизведения каждой кривой. Обычно оно равно 20-100 */

{

double 5=1.0/п;

/* Размер шага для рисования кривых */ double 5s=1.0/(n8 - 1);

Рис. 3.32. Пример бикубической поверхности, допускающий простую организацию процесса визуализации

225

3. Математические модели геометрических объектов

/*Размер шага для

перехода к следующей кривой по константе t * /

double 5t = 1.0/(nt

- 1) ;

/*Размер шага для перехода к следующей кривой по константе s*/ int i,j; double v, t;

/* Рисование ns.кривых по константе s* / for (i=0, s=0.0; i<na; i++, s+=5s) {

/* Рисование кривой по константе s, t меняется от 0 до 1 */

/* X, Y, и Z представляют собой функции, по которым выполняются расчеты */

MoveAbs3 (X(s,0.0), Y(s,0.0), Z(s,0.0)); for (j=l, t=5; j<n; j++, t+=5) {

/* n — 1 шагов используется для каждой кривой */ LineAbs3 (X(s, t), Y(s, t), Z{s, t));

}

-

-

/*

Рисование

nt кривых по константе t */

for (i=0, t=0.0; i<nt; i++, t+=5t) {

/*

Рисование кривой по константе, s изменяется от 0 до 1 */

MoveAbs3 (X(0.0, t), Y(0.0, t), Z(0.0, г)); for (j=l, S= 5; j<n; j++, S+=5) {

/* n—1 шагов используется для каждой кривой */. LineAbs3 (X(s, t), Y(s, t), Z(s, t));

}

/* Конец процедуры DrawSurface */

Переборный алгоритм расчета поверхностей оказывается намного более трудоемким, чем подобный алгоритм для кривых. Действительно, уравнения поверхности должны быть вычислены 2/82 раз: при 5 = 0,1 трудоемкость равна 200, при 8 = 0,01 она возрастает до 20 000, что заставляет искать альтернативные способы вычисления. Одним из возможных является метод визуализации, основанный на вычислении правых разностей, который подробно рассмотрен в подразд. 3.2.9.

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

(0,1)

is, t)=

(1.0)

Рис. 3.33. Кусок поверхности разбит на четыре фрагмента //, Ir, rl, rr

226

3.3. Параметрические бикубические поверхности

ляет собой обобщение аналогичного алгоритма визуализации кривых. Напомним, что процедура DrawCurveRecSub была рассмотрена в подразд. 3.2.9, посвященном визуализации кривых. Основное отличие процедур визуализации кривых поверхностей состоит в том, что кусок бикубической поверхности разбивается на четырехугольники, которые повторными рекурсивными вызовами процедуры визуализации уменьшаются в размерах и своей формой все более приближаются к плоскости. Один шаг этой процедуры показан на рис. 3.33. Здесь фрагмент бикубической поверхности разделен на четыре фрагмента и каждый из полученных фрагментов обладает более высокой «плоскостностью», чем исходная поверхность.

Критерием остановки служит достаточное приближение к плоскости фрагментов разбиения. Тест на планарность является обобщением аналогичной процедуры проверки кубических кривых. Строится вспомогательная плоскость, проходящая через три из четырех контрольные точки. Затем находятся расстояния от этой плоскости до 13 остальных контрольных точек. Если максимальная длина оказывается меньше, чем некоторая наперед заданная константа е, то проверка считается успешной.

В процессе рекурсивного подразбиения может возникать проблема, связанная с появлением разрывов между аппроксимирующими прямоугольниками. На рис. 3.34 два смежных куска находятся на разных уровнях обработки. Правый нижний фрагмент был разделен одинаково с верхней частью поверхности, поэтому между фигурами возникла «аппроксимирующая трещина». Этого эффекта можно избежать, задавая фиксированную глубину рекурсии или устанавливая достаточно малое значение окрестности е. Оба решения влекут дополнительные вычислительные расходы на избыточные итерации процесса подразбиения. Более эффективное решение связано с изменением схемы разделения поверхности (рис.3.35).

Прямой алгоритм делит поверхность на четырехугольники АВСЕ, EFGD и GDCH. Для уменьшения зазора схема деления изменяется на АВСЕ, EFGD' и GD'CH, т. е. вместо точки D используется точка D'.

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

Разрыв между аппроксимирующими поверхностями

Рис. 3.34. Возникновение разрыва аппроксимации

227

3. Математические модели геометрических объектов

С

Рис. 3.35. Схема сокращения возможных разрывов в процессе рекурсивного подразбиения

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

3.3.6. Поверхности второго порядка

Поверхности второго порядка описываются уравнением неявного вида

f(x, у, z)=ax2 +by2 +cz2 +2dxy+2eyz + 2fxz + 2gx+2hy+2jz + k=0. (3.37)

Это уравнение порождает целое семейство поверхностей второго порядка (квадрик). Например, положим a = b = c = -k= 1, а остальные коэффициенты возьмем равными нулю. Этот частный случай уравнения (3.37) определяет сферу с центром в начале координат. Если все коэффициенты от а до/равны нулю, то получится плоскость.

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

идругие причины для изучения квадратичных поверхностей:

существование простого алгоритма вычисления нормалей к поверхностям;

возможность проверки принадлежности точки поверхности;

вычисление координаты z по известным значениям координат х и у;

простота расчета области пересечения двух поверхностей второго порядка и др.

Запишем уравнение (3.37) в компактной матричной форме

PTxQxP=0,

228

3.4. Твердотельное моделирование

где

 

а

d

f

g~

X

 

 

 

 

 

Q=

d

b

e

h

у

f

e

с

j ;

P= z

 

_g

h

j

k_

1

Поверхность, представленная матрицей Q, легко деформируется и перемещается. Если задана трансформационная матрица размера 4x4, то новое состояние поверхности Q] может быть представлено в следующем виде:

Ql=(M~l)TxQxM~].

Также легко найти выражение для нормали к поверхности. Пусть поверхность второго порядка задана неявным выражением f(x, у, z)=0, тогда выра-

\df

df

dfl

_

жение для нормали можно записать как

—, —, -*-

. Очевидно, что нормали к

|

dx

dy

dz J

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

3.4.Твердотельное моделирование

3.4.1.Основные положения

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

Вбольшинстве задач проектирования процессов обработки и сборки объект должен быть представлен в виде замкнутой объемной конфигурации. Программирование поведения роботов и робототехнических систем в среде с препятствиями также требует подобного описания сцены. Моделирование работы физических механизмов не обходится без учета пространственного фактора. На твердотельных моделях базируются программы конечно-элементного анализа, технологические системы с числовым программным управлением, модули, предназначенные для расчета масс-инерционных характеристик детали и множество других задач, решаемых в системах CAD/CAM/CAE.

Описание объема трехмерных тел не является простым расширением методов моделирования кривых и поверхностей. Эта проблема требует особых под-

229

3. Математические модели геометрических объектов

ходов и специально разработанных средств. Краткому введению в проблематику твердотельного моделирования и посвящен этот раздел.

Следует строго различать форму геометрической модели и ее выразительные возможности. Наличие видимого объема у геометрического объекта не означает его способность моделировать все или даже некоторые объемные характеристики. Рассмотрим это противоречие на примере куба, показанного на рис. 3.36.

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

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

математическая модель твердотельной геометрии должна отличаться высокой универсальностью, достаточной для описания различных физических объектов и проектных ситуаций. Очень важны такие качества модели, как непротиворечивость и отсутствие двусмысленностей. Этим критериям не отвечает описание, приведенное на рис. 3.36;

модель должна обладать свойством однозначности. Это значит, что каждая трехмерная форма получает единственное описание в терминах данной модели. Если требование однозначности обеспечено, то задача проверки эквивалентности формы двух объектов решается намного проще, чем для многозначных моделей;

/

D

 

/

 

н

G

 

 

А

 

/

/

ХШ!

 

F

 

 

б

Рис. 3.36. Каркасная модель куба:

акорректная; б — некорректная, вершины А(0, 0, 0); В(1,0,0); С(1,1,0); D(0,1,0); ДО, 0,1);

F(l, 0, 1); G(l, 1, 1); Щ0, 1, 1); линии: АВ, ВС, CD, DA, EF, FG, GH, HE, AE, BF, CG, DH

230

3.4.Твердотельное моделирование

модель должна быть точной. Многие векторные редакторы используют ломаные линии для приближенного представления кривых. В системах автоматизированного проектирования сложные трехмерные объекты часто описываются сочетанием простых геометрических форм. Все это примеры неточных геометрических описаний, в которых используется аппроксимация двухмерных или трехмерных оригиналов. Точная геометрическая модель представляет оригинал без существенных пропусков и изъятий, заметным образом влияющих на качество моделирования;

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

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

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

Далее рассмотрены важнейшие способы, наиболее широко применяемые в современных графических системах и пакетах.

Точки, линии, плоские грани представляют собой математические абстракции, поскольку у этих образований, по крайней мере, один размер равен нулю. Физические тела занимают некоторый конечный объем трехмерного пространства и имеют размеры, отличные от нуля. Для описания геометрии реальных тел и предметов используются математические объекты, называемые телами, или твердыми телами.

Существует объекты, которые допускают приблизительное описание геометрии при помощи самой простой аппроксимации границы — фрагментами плоскостей. Представление такого вида называется плоскогранным (Faceted Representation). Геометрические модели этого типа нашли широкое применение в архитектурном моделировании, программировании игр и компьютерной анимации.

Более продуктивный подход к описанию трехмерных тел дает так называемая конструктивная твердотельная геометрия (Constructive Solid Geometry — CSG), в которой средствами моделирования являются геометрические примитивы и операции над ними. В качестве примитивов обычно выступают простые тела, имеющие точное геометрическое описание в координатной форме: сферы, прямоугольники, цилиндры, конусы, призмы и пр. Над примитивами и производными телами можно выполнять некоторый набор разрешенных операций. В большинстве промышленных систем геометрического моделирования разре-

231

3. Математические модели геометрических объектов

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

Самый общий подход к моделированию состоит в представлении трехмерных тел в виде совокупности ограничивающих поверхностей, ребер и вершин. Каждая граничная оболочка представляет собой множество соединенных друг с другом поверхностей произвольной формы и включает в себя полное описание своих границ и связей с соседними фрагментами. Этот способ описания объектов называется граничным представлением, в англоязычной литературе и в интерактивных руководствах многих пакетов машинной графики он называется Boundary Representation, или В-rep. Представление тел с помощью границ позволяет моделировать трехмерные объекты самой сложной геометрии. Оно допускает множество формообразующих операций над телами, сохраняя при этом единый способ описания их внутреннего устройства.

3.4.2. Регулярные булевские операции

Пусть разработан эффективный способ описания геометрии объемных тел. Отвлечемся от технических деталей такого описания и будем опираться на гипотезу о его существовании. Из исходных простых геометрических форм можно построить более сложные производные объекты. Существует множество способов формообразования, основанных на комбинации геометрических операндов, но самой естественной техникой такого вида являются булевские операции. Операции сложения, вычитания и пересечения (рис. 3.37) являются обязательными в любой развитой системе геометрического моделирования. Иногда в их состав включают некоторые дополнительные способы синтеза, которые не обладают общностью трех перечисленных.

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

а

б

в

Рис. 3.37. Булевские операции на примере двух кубов:

a — A U В; б — А П В; в — А -В

232

3.4. Твердотельное моделирование

 

 

 

 

 

 

 

 

 

/

 

/

А

/

 

/

/

/

Щ

 

 

 

/

f

/

/

/

 

 

Рис. 3.38. Варианты операции булевского пересечения

точку. Справедливость этого тезиса подтверждает пример, приведенный на рис. 3.38, где показаны различные варианты пересечения двух кубических объемных тел.

Вместо обычных булевских операций будем использовать так называемые регулярные операции, которые обозначим привычными символами, но с добавлением верхнего индекса — звездочки (U*, П*, -*). Регулярные операции, будучи примененными к объемным операндам, всегда дают геометрическое тело, обладающее объемом, например на рис. 3.38 регулярное пересечение дает непустой результат только в первом варианте.

Чтобы глубже исследовать разницу между обычными и регулярными булевскими операциями, рассмотрим объект, определенный как множество точек, которые разделены на внутренние и граничные. Граничными называются точки, имеющие нулевое расстояние до объекта и его дополнения. Множество граничных точек не всегда принадлежит самому объекту. Замкнутые объекты включают в себя границу, а открытые — нет. Объединение множества внутренних точек объекта и его границы обычно называется операцией замыкания. Регуляризацией множества называется замыкание множества внутренних точек. Множество, которое эквивалентно само себе после выполнения операции регуляризации, называется регулярным.

На рис. 3.39 приведен пример операции регуляризации. Исходное состояние объекта представлено на рис. 3.39, а. Он определен как множество внутренних точек, показанных серым цветом и множеством граничных точек, изображенных черным цветом. Часть границы, которая не входит в состав объекта, изображена пунктиром. Объект включает в себя несколько висячих фрагментов: две линии и

Рис. 3.39. Регуляризация объекта:

а— исходное состояние множества; б — множество после операции замыкания;

в— внутренняя область множества; г — регуляризованное множество

233

3. Математические модели геометрических объектов

точку. Черная точка внутри объекта представляет собой границу, которая не принадлежит самой фигуре.

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

На рис. 3.39, в изображены все внутренние точки объекта, иными словами, он представлен как открытое множество точек. Чтобы получить внутренние точки, следует отбросить все висячие и несвязные фрагменты.

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

фрагментов любого вида (точек, линий или поверхностей).

Регулярные операции можно сформулировать в терминах обычных булевских операций:

A U* В = closure(interior(A U В);

АП* В = closure(interior(A П В);

А-* В = closure(interior(A - В).

Регулярные операции над регулярными операндами всегда дают регулярные множества.

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

Рассмотрим более подробно разницу между двумя типами операций на примере объектов, изображенных на рис. 3.40.

На рис. 3.40, а показаны два исходных объекта, которые являются операн-

дами для обычного (рис. 3.40, б) и регулярного (рис. 3.40, в) булевского пересе-

1

а

6

в

Рис. 3.40. Булевское пересечение:

а— исходное состояние операндов; б — булевское пересечение;

в— регулярное булевское пересечение

234