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

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

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

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

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

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

Algorithm of spline-approximation not a linear surface

In article the algorithm of approximation of a compartment not a linear surfaces is described by splines. Feature of the given algorithm is that approximation is carried out for all set compartment. 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 are used нелинейчатые surfaces not having the analytical description.

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

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

Zamyatin Alexander

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

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

E-Mail: [email protected]

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

Kubarev Alexander

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

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

E-Mail: [email protected]

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

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

Rostov State Building University.

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

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

E-Mail: [email protected]

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

Algorithm of spline-approximation not a linear surface

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

The Abstract: In article the algorithm of approximation of a compartment not a linear surfaces is described by splines. Feature of the given algorithm is that approximation is carried out for all set compartment. 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 are used нелинейчатые surfaces not having the analytical description.

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

Keywords: Not linear surface, spline, surface, first derivative, second derivative.

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

Алгоритм разработан в среде ObjectARX для AutoCAD [2, 3] на языке Visual C+ + [4].

Пусть поверхность задана линейным каркасом в виде набора сплайнов ki . На каждом из заданных сплайнов ki возьмем равное количество точек, которые обозначим Mij . Точки на сплайне можно взять на одинаковых расстояниях. Через найденные точки проведем второе семейство сплайнов - lj. Получим поверхность заданную сетью (рис.1). Сплайны kt и lj расположены на отдельных уровнях. В каждой точке любого из сплайнов имеется возможность определить первую и вторую производные по его уникальному параметру. Будем считать, что поверхность, в пределах рассматриваемого отсека не имеет особых точек.

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

Задача состоит в том, что каждой точке заданного отсека поверхности поставить в соответствие два вещественных параметра u и v, т.е. определить г (и, у), и найти в ней первые

производные

ЭГ (u, v) ЭГ (u, v)

и вторые производные

Э 2r(u, v) Э 2r(u, v) Э 2r(u, v)

Эи Эу Эи 2 Эу2 ’ ЭиЭу

Возьмем в пространстве некоторую линию т. Рассмотрим вопросы определения, первых и вторых производных в ней, при переходе к новому параметру. Пусть задана линия:

Г = Г(я) . (1)

I л кон I

Параметр я монотонно возрастает и находится в пределах я Е [и; я \. На рассматриваемом отрезке линия (1) непрерывна и в каждой точке имеет непрерывные первую вторую производные.

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

На линии, с некоторой плотностью, заданы точки Мг- (рис. 2). Каждой из точек Мг-соответствует параметр

Рис. 2. Переход к новому параметру на линии

Перейдем к новому параметру и, где и Є [о, и кон ]. Будем считать, что параметрам точек Мі - соответствуют новые параметры и{. Пусть и, как и э, монотонно возрастает. Запишем зависимость параметра э от и в следующем виде:

э = / (u),

Тогда, учитывая (1) и (2), уравнение линии имеет вид: Г _ Г(/(и)).

(2)

(3)

Определим зависимость (2). Выполним аппроксимацию функции (2) плоским сплайном, который обозначим через п (рис.3). Имея такую зависимость можно определить параметр

Т т

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

точки.

Найдем первую и вторую производные по новому параметру и. Продифференцировав (3) по параметру и, получим:

йг _ йг(/(и)) й/(и) йи

йэ

йи

(4)

Рис. 3. Зависимость э=/(и)

Положение точки на сплайне п (рис.3) зависит от параметра а, поэтому:

— = . (5)

ёи ёи ёа

Подставив (5) в (4), для первых производных получим:

г ^ ^

ёа

(6)

dr _ dr

du ds du^

V ds j

Для определения вторых производных продифференцируем (5) по u:

4=4/4(7)

du ds V du j ds du

Найдем вторую производную функции f по параметру u: du d2f d2u df

d f = ds ds2 ds2 ds (8)

ds2 fdu^ '

V ds j

Подставив (5) и (8) в (7) получим значение искомой второй производной.

Вдоль каждого из сплайнов kt параметр u = const, вдоль сплайнов lj - v = const. Кроме этого, положение точки на каждом из сплайнов kt определяется уникальным параметром si, который изменяется в пределах si е [о; s*°H ], на сплайнах lj, положение точки определяется уникальным параметром t}-, который изменяется в пределах tj е [о; j]:

t,■ = f (v). (9)

Из всех заданных сплайнов kt найдем сплайн, имеющий наибольшее значение конечного параметра s*°H = smax . Выполнив аналогичную операцию для сплайнов lj, найдем tmax . Для повышения точности вычисления положим, что параметры отсека поверхности u и v изменяются в пределах u е [о; smax ], v е [о; tmax ]. Пусть максимальные конечные параметры имеют сплайны km и ln. Все точки сплайнов к{, проходящие через Min, имеют одинаковые пара-

метры v,, будем считать v, = t, . Все точки сплайнов lj, проходящие через Mmj, имеют одинаковые параметры ы}-, равные uj = s’”. Выполним аппроксимацию функции (2) для к{ плоскими сплайнами fi ,проходящими через точки, абсциссы которых равны tin , ординаты равны значениям параметров t/ . Аналогично, аппроксимируем функцию (2) для lj. Абсциссы точек, через которые проходят сплайны, определяющие зависимость (2), равны smj , ординаты равны si

j

Рис. 4. Построение сплайна 1К Пусть заданы параметры некоторой точки поверхности К - ик и Ук . Найдем координаты этой точки г _ г(ик, Ук), первые производные в ней — "

^ _дг(ик, Ук) Эг = Эг(ик, Ук)

кк \2 - Л2

Эи

Эи ЭУ

ЭУ

и вто-

рые производные

Э 2г _Э 2г (ик, Ук) Э 2г _Э 2г (ик, Ук) Э 2г _Э 2г (ик, Ук )

-.т -.ч . Определим на каж-

Эи2 Эи2 ЭУ2 ЭУ2 ЭиЭУ ЭиЭУ

дом сплайне ki точку Мг, соответствующую параметру у _ Ук (3). В каждой точке Мг опреде-

лим первые производные

ёг,к—(Ук))

(6) и вторые производные

ё г — (Ук))

(7). Через най-

ёу 1 ёу2

денные точки построим сплайн 1к (рис. 4). Точка К будет принадлежать этому сплайну. Построим для сплайна 1к зависимость параметра sk от и (2), рис.3. По формуле (3) определим координаты точки К. Частная производная поверхности в точке К по параметру и, равна:

Эг(ик, Ук) _ с{Г',к — (ик))

Эи ёи

где производная стоящая в правой части равенства, вычисляется по формуле (6).

Вторая частная производная по параметру и в этой точке:

(10)

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

Э , ук) _ ё 2^1—(ик))

Эи2 ёи2

(11)

где вторая производная, находящаяся справа, вычисляется по формуле (7), — (и) - зависимость (2) для сплайна 1к .

^ Эг(ик, ук) „ ёггк — (ук))

Для вычисления ———— строим сплайн по точкам — 4 '. Определяем зависи-

ЭУ ёУ

мость параметра сплайна от и и по формуле, аналогичной (3), находим искомую производную

при значении параметра u = uk. Производная в точке K этого сплайна, вычисления по форму-

„ „ Э2r(uk,vk)

ле, аналогичной (6),равна смешанной производной------——— .

ЭuЭv

тт Г Э 2r(uk, vk) „ d 2rk (fk (vk))

Чтобы вычислить -----1-k—— строим сплайн по точкам — \ , определяем зави-

Э v dv

симость параметра сплайна от u и по формуле, аналогичной (3), находим искомую вторую

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

Аналогично можно выполнить аппроксимацию, используя сплайны lj .

Для хранения динамических данных в памяти компьютера используются односвязные списки шаблонов (тип ListNode<TYPE>) [6].

Для выполнения аппроксимации, описанным выше способом, создан класс CPovS. Рассмотрим объекты данного класса.

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

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

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

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

сплайнов kt, тип переменной - указатель на ListNode <AcGePointArray>;

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

сплайнов lj, тип такой же, что и для hptsu;

• psu - содержатся параметры точек Mnj на сплайне kn , который имеет максимальный конечный параметр из сплайнов k{ (тип AcGeDoubleArray);

• psv - того же типа, что и предыдущий массив, хранятся параметры точек Mim, лежащих на сплайне lm, имеющего максимальный параметр из сплайнов lj;

• hpu - хранит указатель на первый элемент списка сплайнов, определяющих функции f (t) (тип ListNode<AcDbSpline>*);

• hpv - того же типа, что и hpu, содержит указатель на первый элемент списка сплайнов, определяющих функции s}- (u).

Функция ParPov является основной функцией алгоритма. В качестве входных данных она использует значения параметров u и v (тип Double); ppt - указатель на точку (тип AcGePoint3d*), используется для передачи точки поверхности; pru, prv, pruu, prvv, pruv - указатели на векторы (AcGeVector3d*), используются для передачи значений первой и вторых производных в точке поверхности. Функция возвращает значение “true”, если вычисление прошло успешно, иначе значение функции “false”.

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

ЛИТЕРАТУРА

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

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

с

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

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

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

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

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

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

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