Научная статья на тему 'Алгоритм аппроксимации поверхности сплайнами'

Алгоритм аппроксимации поверхности сплайнами Текст научной статьи по специальности «Математика»

CC BY
1118
105
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ПОВЕРХНОСТЬ / СПЛАЙН / СЕТЬ / ПЕРВАЯ ПРОИЗВОДНАЯ / ВТОРАЯ ПРОИЗВОДНАЯ / SURFACE / SPLINE / FIRST DERIVATIVE / SECOND DERIVATIVE

Аннотация научной статьи по математике, автор научной работы — Замятин Александр Витальевич, Кубарев Александр Евгеньевич, Замятина Екатерина Александровна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Algorithm of approximation of a surface splines

In article the algorithm of approximation of a compartment of a surface is described by splines. The algorithm is realised on technology ObjectARX for AutoCAD. It gives the chance to use a wide set built in in AutoCAD functions of work with splines. Such technology considerably facilitates and accelerates working out of algorithms and accelerates work of programs, their development by the user. The developed algorithms can be used in various technical problems where surfaces not having the analytical description are used.

Текст научной работы на тему «Алгоритм аппроксимации поверхности сплайнами»

Замятин Александр Витальевич

Zamyatin Alexander

Доцент кафедры «Начертательной геометрии и черчение».

Associate professor of the chair of “Descriptive geometry and sketching”.

E-Mail: alex080262@mail.ru

Кубарев Александр Евгеньевич

Kubarev Alexander

Заведующий кафедрой «Начертательной геометрии и черчение».

Head of the chair of “Descriptive geometry and sketching”.

E-Mail: kubarev_a@mail.ru

Замятина Екатерина Александровна

Zamyatin Ekaterina Ростовский государственный строительный университет.

Rostov State Building University.

Ассистент кафедры «Начертательной геометрии и черчение».

Assistant of the chair of “Descriptive geometry and sketching”.

E-Mail: kng@rgsu.donpac.ru

Алгоритм аппроксимации поверхности сплайнами

Algorithm of approximation of a surface splines

Аннотация: В статье описан алгоритм аппроксимации отсека поверхности сплайнами. Алгоритм реализован по технологии ObjectARX для AutoCAD. Это дает возможность использовать широкий набор встроенных в AutoCAD функции работы со сплайнами. Такая технология значительно облегчает и ускоряет разработку алгоритмов и ускоряет работу программ, их освоение пользователем. Разработанные алгоритмы могут быть использованы в различных технических задачах, где используются поверхности не имеющие аналитического описания.

The Abstract: In article the algorithm of approximation of a compartment of a surface is described by splines. The algorithm is realised on technology ObjectARX for AutoCAD. It gives the chance to use a wide set built in in AutoCAD functions of work with splines. Such technology considerably facilitates and accelerates working out of algorithms and accelerates work of programs, their development by the user. The developed algorithms can be used in various technical problems where surfaces not having the analytical description are used.

Ключевые слова: Поверхность, сплайн, сеть, первая производная, вторая производная.

Key words: Surface, spline, surface, first derivative, second derivative.

На практике часто применяются поверхности, не имеющие аналитического описания. Они задаются в виде дискретных точечных каркасов. Во многих задачах, при работе с такими

Главный редактор - д.э.н., профессор К.А. Кирсанов тел. для справок: +7 (925) 853-04-57 (с 1100 - до 1800) Опубликовать статью в журнале - http://publ.naukovedenie.ru

поверхностями необходимо определять координаты точек с заданной плотностью, которые им принадлежат, значения первых и вторых производных в этих точках. Эти задачи можно решить, аппроксимировав поверхности или их отсеки [1, 2]. В данной статье рассмотрена аппроксимация отсека поверхности сплайнами.

Сплайны [1, 2] являются мощным средством геометрического моделирования. Многие современные графические системы (AutoCAD, 3DMAX и др.) поддерживают моделирование с помощью сплайнов. Широко известны алгоритмы построения различных типов сплайнов. При разработке алгоритмов, описанных в данной статье, использовались стандартные функции библиотеки ObjectARXсистемы AutoCAD [3,4], в среде VISUAL C++ [5].

Пусть поверхность задана сетью, представляющей собой два пересекающихся набора сплайнов ki и ^ (рис.1). Точки, определяющие сплайны ki и ^ совпадают, каждый из заданных сплайнов ki имеет т точек, 1}. - п точек. Будем считать, поверхность не имеет особых точек и линий самопересечения. Сплайны ki и 1}. заданны на отдельных уровнях.

Задачей алгоритма является аппроксимация отсека поверхности, ограниченного отрезками линий М^М1+1. Mi+1.+1 Mij+1 (рис.1), что позволит вычислить координаты любой точки,

принадлежащей отсеку по заданным параметрам и и V - г ( и,у), первые производные -

Эг(и, V) Эг(и, V) Э2г(и, v) ЭV(и, v) ЭV(и, v) тт „

-------, -------, вторые производные----------2—, -----2—, ------------. Найденные значения

Эи Эг Эи Эv ЭuЭv

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

Каждой точке отсека поверхности М^ М1+1. М1+1.+1 М^+1 соответствуют некоторые параметры и и V. Положим, что оба эти параметра изменяются в интервалах [0, 1]. Точки, принадлежащие отрезку сплайна ki, имеют параметр V = 0, принадлежащие сплайну +1 - V = 1,

Рис. 1. Заданная поверхность

принадлежащие I. - и = 0, принадлежащие I.+1 - и = 1. Точке, лежащей на сплайне ki соответствует параметр сплайна ^, будем считать, что ^ ^ (у) . Пусть точке М. соответствует параметр г1 = (0), точке М.+1 - параметр ^ (1).. Таким образом, при движении точки по

1 2

отрезку сплайна ki, от точки М. до точки М.+1, параметр ^ изменяется в интервале [ ^ ],

а параметр V изменяется в интервале [0,1]. Следовательно уравнение отрезка сплайна М. М.+1 можно записать в следующем виде:

Ггк = Ггк (Л (v)), V е[°Л] . (1)

Так как длина отрезка сплайна М. М.+1 небольшая, приближенно, можно считать, что ~ V. Исходя из этого приближения, найдем зависимость от V. Параметру г] соответствует значение параметра V = 0, параметру г] соответствует V = 1, следовательно:

и = v(tг2 - 4) + г2, V е [°Д]. (2)

Учитывая (2), уравнение (1) имеет вид:

Г‘ = Г‘(г(1г-(') + ('), Vе [0,1] (3)

Для производной по параметру V имеем:

-тк -тк -г -тк 2 и

— = —------L = — • ($ - г). (4)

-V -г -V -г

Производная второго порядка равна:

-2гк -2гк

(п - о2. (5)

-V2 -г2 г г

Точкам, принадлежащим отрезку сплайна I., соответствуют параметр я. = я. (и). Пусть точке М. соответствует параметр я. = я. (0), точке М1+1. - соответствует параметр я. = я. (1) . При движении точки по сплайну I. от М. до М1+1. параметр я. изменяется в пределах [ я*, я. ], а параметр и - в пределах [0,1]. Как и для параметров и V, будем считать я.~ и, следовательно, для точки принадлежащей отрезку М. М1+1. сплайна I. имеем:

г. =г.(и(^ - Ф+Ф, и е[0,1]; (6)

-г1 -г. , ,

-. = -.• (я2 - ^); (7)

Ли Ля

-2г] -2. 2 ,

-ТТ = -ГТ^ (я2-я1). (8)

-и -я . .

При 2 < I < т - 4, где т число заданных сплайнов семейства к, на сплайнах от к1, где

¡=¡-2^1+3, в точках М. и М.+1 находим соответствующие им параметры г) и г2 и по формуле

(3) вычисляем координаты точек N1 для заданного параметра V. Координаты найденных то-

чек Nl записываем в динамический массив Pts (тип AcGePoint3dArray). В точках N находим первые производные, по формулам (4) и записываем их значения в массив Pts1 и вторые производные (5), которые сохраняются в массиве Pts2. В массиве Pts индексу г — 2, соответствует индекс 0, следовательно, индексу г соответствует индекс 2. Через точки массива Pts строим сплайн, который обозначим через ¡^+1 (рис.2а). Сплайн ¡^+1 построен по шести точкам, принадлежащим поверхности, что обеспечивает приемлемую точность дальнейших вычислений.

Если г < 2, т.е. i=0 или i=\, то сплайн ¡^+1 строится по шести точкам сплайнов к0 - к5, индекс г соответствует индексу i в массиве Pts (рис. 2б, 2в).

Если г > т — 4, т.е. г = т — 3 или г=т — 2, то сплайн ¡^+1 строится по шести точкам сплайнов кт—6 - кт —1, индексу г в массиве Pts соответствует индекс, вычисляемый по формуле 6 — т + г (рис. 2г, 2д).

Рис. 2. Построение сплайна ¡/+1 После построения сплайна ¡^+1 определяются параметры sl]■ и £2, соответствующие точкам Ni и Ni+1 на нем. По формулам (6) - (8) определяется точа Ь, соответствующая параметру и, первые и вторые производные в этой точке по параметру и.

Чтобы найти вторую производную по параметру V - строим сплайн по точкам,

^ Г

хранящимся в Pts2 и по формуле, аналогично (5), находим .

dr dr

Для определения — и--------- строим сплайн по точкам, записанным в массиве Ptsl. По

dv dudv

dr

формуле , аналогичной (6) определяем — и по формуле, аналогичной (7) находим смешан-

dv

d 2r

ную производную--------.

dudv

df dv2 dr

dv2

Для работы с поверхностями создан класс CPovSO. Массивы данных, используемые в программе, хранятся в односвязных списках шаблонов типа ListNode <TYPE> [6].

Параметры поверхности записываются в следующие защищенные (protected) переменные класса:

- hu - указатель на начальный элемент списка, содержащего указатели на сплайны заданной поверхности k , тип переменной - указатель на ListNode <AcDbSpline>, AcDbSpline -

стандартный тип, описывающий сплайны в ObjectARX, далее, под стандартными типами или функциями подразумеваются объекты ObjectARX;

- hv - указатель на начальный элемент списка, содержащего указатели на сплайны lj, тип, такой же, как и у hu;

- hptsu - указатель на начальный элемент списка, содержащего массивы точек сплайнов k, тип переменной - указатель на ListNode<AcGePointArray>, AcGePointArray - стандартный тип, описывающий динамические массивы точек трехмерного пространства;

- hptsv - указатель на начальный элемент списка, содержащего массивы точек сплайнов lj, тип такой же, что и для hptsu.

Функция ParPovOu является основной функцией класса. Она выполняет аппроксимацию поверхности и вычисляет значения координат точек поверхности и производных первого и второго порядка. Данная функция может быть вызвана из любой функции (public).

В качестве входных данных функция использует целые переменные i, j, обозначающие номера сплайнов lj и к{, вещественные переменные u и v определяют значения параметров в

аппроксимируемого отсека поверхности. Указатель на тип AcGePoint3d* - ppt применяется для возвращения в программу вычисленных координат точек. Указатели на тип AcGePoint3d*

- pvu, pvv, pvuu, pvvv и pvuv передают значения первых и вторых производных по параметрам u и v. Так как функция ParPovOu является объектом класса CPovSO, то в ней могут быть использованы защищенные переменные данного класса, такие как hu, hv и другие.

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

ЛИТЕРАТУРА

1. Роджерс Д., Адамс Дж. Математические основы машинной графики / Д. Роджерс, Дж. Адамс. - М.: Мир, 2001. - 604 с.

2. Фокс, А. Вычислительная геометрия / А. Фокс, М. Пратт. -М.: Мир, 1982. - 304

с.

3. Полищук Н.Н. AutoCAD 2007 / Н.Н. Полищук. - СПб.: БХВ - Петербург, 2008.

4. Полищук Н.Н. AutoCAD: разработка приложений, настройка и адаптация / Н.Н. Полищук. - СПб.: БХВ - Петербург, 2006. - 992 с.

5. Секунов Н.Ю. Visual C++ Визуальная среда программирования / Н.Ю.Секунов.

- СПб.: БХВ - Петербург, 1999. - 960 с.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

6. Труб И.И. Объектно-ориентированное моделирование на С++ / И.И. Труб. -

СПб.: Питер, 2006. - 411 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.