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

книги / Основы САПР. CAD CAM CAE

.pdf
Скачиваний:
12
Добавлен:
19.11.2023
Размер:
29.79 Mб
Скачать

192

 

 

 

 

 

Глава б. Представление

кривых и работа с ними

 

 

 

n

 

 

 

 

 

 

 

 

 

 

P(t

 

 

~h;P;N;,k(tk-1)

h р N

(t

k-1

)

_

1·Р

·1

 

k-1

) _ 1=О

 

 

_ О О

O,k

 

О

_

р

 

-

~ h.N. (t

)

-

 

 

 

-

 

-

о·

 

 

 

hoNo,k(tk-1)

 

 

1. 1

 

 

 

 

L.

1 r,k

k-1

 

 

 

 

 

 

 

 

Конечной точке кривой будут соответствовать значения параметра t"+1 = t"+2 = = tn+k· Поскольку N",1 -единственная иенулевая функция сопряжения

первого порядка на отрезке tn и t"+l• она одна должна учитываться при выводе

уравнения последнего сегмента кривой. И она же будет иенулевой при и= tn+t·

Отсюда все функции сопряжения вида N;,k(t"+ 1) равны нулю, за исключением

N",~t(t"+1) = 1. Следовательно, координаты конечной точки могут быть получены

из уравнения (6.52) в следующем виде:

 

n

 

 

 

 

 

 

 

P(t

~h;P;N;,k(t"+l)

h р N

(t

) = 1=0

 

 

 

 

= " 11

n.k

n+l

11+1

n

 

 

 

)

h N

(

)

 

""h.N. (t

11+l

"

rl.k

tn+l

 

L.

1

r,k

 

 

 

 

jaO

) =

1·Рn

1 =р

 

11

n

Получить первую производную в начальной точке можно с помощью уравне­

ния (6.53). Левая производпая в числителе (6.53) вычисляется подстановкой h1P1

вместо Р1 и h0P 0 вместо Р0 в конечное выражение примера 6.5. Точно так же

правая производпая вычисляется подстановкой h1 вместо Р1 и h0 вместо Р0• Да­

лее, :L:o h;N;,k(tk-l) =h0 Из всего вышеизложенного следует, что первая произ-

водная в начальной точке кривой равна

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

6.7. Интерполяционные кривые

Представьте, что вы работаете в системе геометрического моделирования и хоти­

те визуализировать кривую. Кажется естественным передать системе координа­

ты нескольких точек на этой кривой. На самом деле чертежники рисуют кривые таким интуитивным методом уже многие годы. Они ставят на бумаге несколько точек в соответствии со своим представленнем о форме кривой, а затем соединя­ ют их плавной линией при помощи средства, называемого сплайиом (spline). Так

же и в САПР: конструктор уt<азьшает точки, а система строит по ним интерполя­

ционную кривую, которую и отображает. Уравнение интерполяционной кривой сохраняется для последующей работы с ней. Можно создать кривую, непосред­

ственно указав задающие точки кривой Безье или В-сплайна. Однако большин-

6.7. Интерполяционные кривые

193

ство конструкторов предпочитают указывать точки, лежащие на самой кри~ой, и

изменять кривую, перемещая ее характеристические точки. Характеристически­

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

терполяционная кривая относится к одному из этих классов. Возможность стро­

ить интерполяционные кривые по точкам очень полезна, если геометрическая

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

новой модели автомобиля. Математическое описание поверхностей может при­

меняться для автоматической выработки траекторий движения фрезы с ЧПУ.

Вот в такой ситуации нам и пригодится функция построения поверхностей и

кривых по точкам. Перейдем же теперь к выводу уравнений интерполяционных

кривых - эрмитовой кривой и В-сплайна.

6.7.1. Интерполяция эрмитовой кривой

Основная идея данного метода заключается в том, что каждый сегмент между со­ седними точками представляется в виде эрмитовой кривой. Поскольку степень та­ кой кривой равна 3, этот подход аналогичен использованию сплайна (рис. 6.9)

для проведения кривой по заданным точкам.

Рис. 6.9. Сплайн - инструмент, применяемый в черчении

Сплайн, проведенный через заданные точки, имеет физический аналог - балку с подпорками в тех же заданных точках (рис. 6.10). Форма любого сегмента между

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

d2y

Qox+Mo

(6.54)

dx 2 =

El

 

Рис. 6.1 О. Статическая модель сплайна

Уравнение (6.54) является дифференциальным, ему должна удовлетворять ней­ тральная линия балки, находящейся под влиянием силы реакции Qo и момента М0, приложеиных к левой опоре. Здесь под Е понимается модуль Юнга матtриа­

ла, из которого изготовлена балка, а 1 - момент инерции ее поперечного сече­

ния'. Двойное интегрирование уравнения (6.54) дает функцию у(х), степень ко­

торой равна 3. Поэтому для описания сегментов кривой между точками может

использоваться эрмитова кривая.

1 Вывод уравнения (6.54) можно найти n любом учебtшке по сопротивлению материалов.

194 Глава б. Представление кривых и работа с ними

Выведем уравнение эрмитовой кривой для всех сегментов при условии, что мы

знаем координаты точек Р0, Р1, ••. , Р". Эти n + 1 точек дадут нам n эрмитовых кривых, которые мы обозначим буквами P 1(u), P 2(u), , P"(u) (рис. ?·11).

Рис. 6.11. Интерполируемые точки и эрмитовы кривые

Эрмитова кривая под номером i может быть записана с использованием уравне­

ниj:i (6.10) 11 (6.12):

Р;(и) = Рн + Р;_1и + [З(Р; - Рн ) - 2Р;_1

- Р; ]и2 +

(6.55)

 

 

+[2 (Рн - Р; ) + Р'i-t +Р; ]и:J

Здесь Р;_1 и Р; - векторы касательных в точках Рн и Р; соответственно. Уравне­

ние для конкретного сегмента получается подстановкой конкретного значения i

в общее уравнение. Для каждого сегмента параметр изменяется от О до 1.

При попытке воспользоваться уравнением (6.55) мы столкнулись бы с одним за­ труднением: коэффициенты Р;_1 и Р; обычно не указываются. Поэтому нам нужно изменить уравнение (6.55) так, чтобы онн в нем и не появлялись. Чтобы иметь возможность вычислить производвые Р;_1 и Р; по самим данным, нам нужно на­

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

d 2Р;(и) 1 = d

2

Р;+1 (и)

1

(i=1,2, ... ,n-1).

(6.56)

du2

 

du2

 

 

11=1

 

 

и=О

 

 

 

 

Подставовка (6.55) в (6.56) дает

 

 

 

 

 

 

 

2(-ЗР;_1 + ЗР; -2Р;_1

-Р;)+6(2Р;_1

-2Р; +Р;_1

+Р;)=

(6.57)

 

 

 

 

 

 

 

= 2(-ЗР; + ЗР;+1 -2Р; -P;+t ).

Первая строка в уравнении (6.57) nолучается двойным дифференцировюшем уравнения (6.55) и nодстановкой значения и= 1. Вторая строка nолучается тем

же путем nосле nолучения выражения для P;+1(u) после nодстановки i + 1 вместо i в уравнение (6.55). Уnрощение (6.57) дает следующее выражение:

(6.58)

Подставля.si в уравнение (6.58) все значения i от 1 до n - 1, мы получим приве­

деиное ниже матричное уравнение:

6.7. Интерполяционные кривые

 

 

 

 

 

 

 

195

 

4 1 о

 

u о

 

 

 

 

 

 

Р'1

 

ЗР2 -3Р0 -Р~

 

 

1 4 1 о

 

о о

р;

 

3 -3Р1

 

 

о 1 4 1 о

 

 

 

 

=

4 -3Р2

(6.59)

 

о

о

1

4

1

 

 

 

 

 

 

 

 

 

 

о

о

о

1

4

P;,_l

 

3Рп -3Pn-2 -Р;,

 

Если нам известны значения Р~ и Р;, из правой части уравнения (6.59), мы мо­ жем най_ти значения n - 1 неизвестных персменных Р;, Р~,... ,Р;,_1 Получив зна­

чения всех производных, мы можем подставить их в уравнение (6.55) и полу­

чить, таким образом, полностыо определенную эрмитову кривую.

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

сит форма интерполяционной кривой. В первом случае конструктор задает на­

правления касательных вручную. Говорят, что на кривую накладывается условие

жестко закрепленных концов. Второй метод состоит в предположении об отсут­ ствии крутящих моментов на концах балки. Это эквивалентно присnаиванию Р' 0

и Р' n нулевых значений, поскольку вторая производная пропорциональна крутя­

щему моменту. Отсюда получаются приведеиные ниже дополнительные уравне-

ния, выражающие заданное ограничение:

d 2P1 (и)

(6.60)

 

 

 

и=О

 

d2P" )1

= 2 [3(Р" - рп-1) - 2Р'n-1 -Р;,]+

(6.61)

du

и=l

 

+6[2(Pn-l 11 )+Р;,_1 +Р;,].

 

Упрощение выражений (6.60) и (6.61) дает:

 

 

2Р~ +Р; = 3Р1 -3Р0 ;

(6.62)

2Р;,_1 + Р;,_1 = ЗРn - 3Pn-l'

(6.63)

Перепишем матричное уравнение (6.59), переставив Р~ и Р;,

в левую часть и до­

бавив уравнения (6.62) и (6.63) в начало и конец матрицы соответственно. В ре-

зультате получится новое матричное уравнение:

2 1 о

 

о о

Р'о

 

1 -3Р0

 

1 4 1 о

 

о о

Р'1

 

2 -3Р0

 

о 1 4 1 о

 

 

 

 

=

3 -3Р1

(6.64)

 

 

 

 

 

 

 

о

о

о 1

4

1

 

 

 

 

о

о

о

1

2

Р;,

 

 

 

Уравнение (6.64) позволяет найти n + 1 неизвестных: Р~, Р;, ... , Р;,.

Различия между двумя интерполяционными кривыми, построенными по одним

и тем же точкам, иллюстрирует рис. 6.12: у одной кривой конец жестко закреп-

196

Глава б. Представление кривых и работа с ними

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

со свободными концами как бы •распрямляется~> вблизи них.

Закрепленный конец

1_

Рис. 6.12. Зависимость интерполяционных кривых от граничных условий

6.7.2. Интерполяция В-сплайном

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

точки Qo, Q1, ••• , Qn. Нам придется определить степень, количество задающих то­ чек, их координаты, а также узловые значения параметра интерполяционного В­ сплайна. Любой В-сплайн, определяемый n + 1 и более задающими точi<ами,

можно провести через n + 1 точек, потому что у такой кривой будет n + 1 и более

степеней свободы. В-сплайн с большим числом степеней дает конструi<тору большую свободу в управлении формой кривой, например направлением каса­ тельных на ее концах. В этом разделе для простоты мы рассмотрим тольi<о В­

сплайн с n + 1 задающими точками.

Сначала нужно выбрать порядок В-сплайна. Чаще всего выбирается порядок 4,

поскольку степень 3 является минимальной, удовлетворяющей требованию не­

прерывности второй производной в точках соединения. ·затем определяются уз­

ловые значения. Поскольку мы решили работать с n + 1 задающими точi<ами, нам придется вычислить n + k + 1 узлов. Узлы можно выбрать множеством спо­

собов, так что мы воспользуемся результатами Хартли [63] и Ли [98]:

t;=O

 

(i=0,1, ... ,k-1);

 

 

 

 

 

 

i-2

 

 

 

 

 

 

 

 

'Ldj

 

 

 

 

 

 

t.=t.

+ j=i-k

("

kk

1

)

;

(665)

1

r-1

n+l

m-2

l

= .

+ •...•

n

.

 

 

'L

'Ldj

 

 

 

 

 

 

m=kj=m-k

t; =1 (i=n+1,n+2, ... ,n+k),

где

(6.66)

Пусть нам нужно определить положение n + 1 задающих точек Р0, Р1, •.. , Pn. Эти

точки должны удовлетворять соотношению:

 

n

(6.67)

Qj = 'LP;N;.k(uj)(j =0, 1, ... , n),

i=O

где щ - значения параметра, которые должны соответствовать точкам Q,;. Любой

набор uj между tk-l и tn+t даст В-сплайн, проходящий через точки данных. Однако

6.8. Пересечение кривых

197

гладкость этого В-сплайна будет очень сильно зависеть от выбора щ. Хартли [63] рекомендует для получения гладкой кривой выбирать следующие значения щ

tj+l + tj+2 +

+ tj+k-1 .

(6.68)

uj=

(J=0,1, ... ,n).

k -1

 

 

Значения щ полученные из уравнения (6.68), подставляются в формулу (6.67),

в результате чего получается следующий набор уравнений для Р;:

.

N;.k(иo)

"][Ро]

[Qo]

 

.

N;,k(иt )

·

Pt

= Qt .

(6.69)

[.

 

.

 

 

.

N;,k(и")

.

Р"

Q"

 

Решение (6.69) относительно Р; позволяет получить координаты задающих то­ чек В-сплайна, проходящего через точки Q.

6.8. Пересечение кривых

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

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

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

заданных параметри<Iескими уравнениями. Описанный метод может использо­

ваться для расчетов с произвольными кривыми следующих типов: эрмитовы

кривые, кривые Безье, В-сплайн и NURBS. Методы расчета точек пересечения

'для кривых, задаННЬI}' не параметрически, а также для кривых с уравнениями

разных типов (парамеtрическими и непараметрическими) излагаются в работе

Хоффманна [69].

Предположим, что пересекающиеся кривые заданы уравнениями Р(и) и Q(v). Значение параметра, соответствующее точкам пересечения, задается уравнением

P(и)-Q(v) =0.

(6.70)

Обратите внимание, что уравнение (6.70) распадается на три скалярных уравне­ ния с двумя неизвестными. Выберем какие-либо две компоненты векторов, на­

примерхи у:

Р,. (и)- Q.,. (v) =О;

(6.71)

Рч (и)- QY (v) =О.

(6.72)

Решим уравнения (6.71) и (6.72) относительно и и v и воспользуемся оставшим­ ся скалярным уравнением (компонентой z уравнения (6.70)), чтобы проверить

по'лученные значениjf и и v. Системы нелинейных уравнений обычно решаются

численными методамli, таКИI\Ш как метод Ньютона-Рафеона [39]. Последний

требует вычисления nроизводных Р.., Q,, Р.ч• Qg, для чего нам потребуются вьше­ денные в разделах 6.4.1, 6.5.3 и 6.6.2 формулы дифференцирования уравнений

кривых.

Решая уравнения (6.71) и (6.72) любым численным методом, мы можем столк­

нуться со следующимli проблемами.

198

Глава б. Представление кривых и работа с ttими

 

 

 

оИтерации могут разойтись, если начальные приближения и и v окажутся

слишком далеки от настоящих решений.

оПри наличии нескольких точек пересечения может случиться, что не все они

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

оСитуация, в которой часть одной кривой точно совпадает с частью другой

кривой, не может быть обработана алгоритмом в силу его внутренних особен­

ностей. В этом случае будет возвращено неопределенное количество точек пе­

ресечения.

ОЕсли в некоторых местах расстояние между кривыми очень мало, координаты

этих участков могут быть возвращены в качестве точек пересечения (в зави­

симости от внутренней поrрешности алгоритма).

Первая и вторая проблемы решаются последовательным заданием начальных приближений, близких к реальным точкам пересечения. Для кривых Беэье t1 В­

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

кривых отрезками. В приложении Ж мы показали, что аппроксимация крt~вой Беэье или В-сплайна отрезками получается путем последовательного деления такой кривой. Третья проблема обычно возникает при расчете точек пересече­ ния простых кривых, например отрезков или дуг окружносте~. Например, мы

можем попытаться найти численным методом точку пересечения двух дуг, лежа­

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

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

метод не может обнаружить перекрытие, поэтому он возвратит неопределенное количество точек пересечения, зависящее от начального приближени~. Следова­

тельно, проверять возможность перекрытия следует до вызова численного ме'J'ода.

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

NЦRBS. Четвертую проблему в большинстве случаев можно решить, правда не

полностью, аккуратной настройкой точности численного метода.

Рассмотрим теперь более простой метод определения точки пересечения, кото­

рый применим в том случае, если одна из кривых является прямой. Предполо­

жим, что Р(и) -уравнение прямой, а Q(v) -уравнение кривой. Если прямая

проходит через точки, положение которых задается векторами Р0 и Р1, то ее

уравнение может быть записано следующим образом:

Р(и)=Р1 +и(Р1 0 ).

(6.73)

Параметры и и v в точке пересечения должны, таким образом, удовлетворять

уравнению

Р0 +и(Р1 -P0 )=Q(v).

(6.74)

Умножим левую и правую части уравнения (6.74) скалярмо на Р0х Р1 : 1

0хР1 )·Q(v)=O.

(6.75)

Нелинейное уравнение (6.75) может бЬ1ть решено относительно v численным ме­

тодом. Однако эдесь нас подстерегают те же проблемы, что и раньше.

1 Уравнение поJtучается таким, JJотому чтоскалярное произведение Р0или Р1 на равно нулю.

Воnросы и задачи

199

Вопросы и задачи

1. Чтобы нарисовать эллипс, изображенный на приведеином ниже рисунке, вам

придется получить выражения для координат х и у граничных точек парамет­

рического уравнения.

у

@) .

L-.------x

1)Получить уравнение эллипса, расположенного в начале координат и на­

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

2)Применить необходимые преобразования к уравнению, полученному в

предыдущем пункте, для вывода уравнения эллипса, показанного на ри­

сунке.

2.Пусть эрмитова кривая, лежащая в плоскости ху, определяется следующими

геометрическими коэффициентами:

[~~]=~~)

3-4 Р'(1)

1)Найти кривую Безье третьего порядка, максимально точно соответствую­

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

ре задающие точки кривой Безье.

2)Раскрыть уравнения обеих кривых в полиномиальной форме и сравнить их.

3.Кривая Безье с задающими точками Ао. А, и А2 преобразуется в кривую Бе­

зье с задающими точками В0, В1 и В2 (см. рисунок). Преобразование должно

переместить точку Ао в Во и А2 D в2. Таким образом, это преобразование

должно включать в себя масштабирование.

у

 

 

вr<,В2(1, 2+J3)

 

А2(4

4) r,

Кривая С2

 

At(2,y

 

 

1

Во(5,2)

 

 

Ао(1, 1)

 

 

 

~

 

~~ х

 

 

200

Глава б. Представление кривых и работа с t!ИМИ

1) Выбрать нужные матрицы преобразования и определить порядок их nри­

менения.

2)Определить координаты задающей точки В1

3)Записать параметрическое уравнение кривой С2.

4.Найти кривую Безье третьего порядка, аппроксимирующую четверть окруж­

ности с центром в точке (0, 0). Концы аппроксимируемой дуги: (1, О) и (0, 1). Найти координаты середины кривой Безье и сравнить их с координатамя се­

редины дуги.

5.Изучите кривые Безье, изображенные на рисунке. Кривую 2 необходимо при­

соединить к кривой 1, переместив точку D к точке С. Нужно также обеспе­

чить непрерывность первой производной в точке соединения. Какими будут задающие точки объединенной кривой?

F(S, 1, О)

В(1, 1, О)

А(О, О, О)

С(2, О, О) D(З, О, О)

Е(4, О, О)

6. Непериодический В-сплайн четвертого порядка определен четырьмя задаю­

щими точками:

Р0 = (0, О, О); Р1 = (6, 8. О);

Р2 =(12, 8, О~ Р3 =(18, О, 0).

Что получится, если повернуть эту кривую вокруг осихна 180°? Если это будет В-сплайн, то каким будет его порядок и какие у него будут задающие точкя?

7.Непериодический В-сплайн третьего порядка определен задающими точками

Ро, Pt, Р2, Рз.

1)Какими будут узловые значения параметра?

2)Из скольки различных кривых состоит В-сплайн?

3)Раскройте уравнение В-сплайна и получите уравнения кривых из преды­

дущего пункта.

8.Представить окружность единичного радиуса с центром в начале координат кривой NURBS с семью задающими точками (см. рисунок). Вам нужно полу­ чить порядок кривой k, узловые значения параметра и однородные координа­ ты задающих точек (х ·w, у ·w, z ·w, w).

вопросы и задачи

201

9.Интерполируйте точки Р0(0, 0), Р1{1, 2), Р2{3, 2) двумя эрмитовымя кривыми Pt(u) и Р2(и). Считайте, что в точках Р0 и Р2 концы кривой не закреплены.

10.С помощью любой доступной вам системы автоматизированного проектиро­

вания продемонстрируйте:

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

Олокальность изменений для В-сплайнов;

Овыпуклость оболочки кривых Безье;

Овлияние дублирования задающих точек на кривые Безье и В-сплайны.

11.Напишите программу с перечисленными ниже меню и функциями.

О Меню ввода задающих точек: позволяет пользователям вводить координа­

ты задающих точек неп~риодического В-сплайна третьего порядка на

плоскости ху. Максимальное количество задающих точек - 10. Задание

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

место, после чего следует нажатие на кнопку мыши (то есть мышь исполь­

зуется в режиме опроса).

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

В-сплайн и задающий многоугольник.

ОМеню изменения задающих точек: позволяет пользователю изменять по­

ложение задающих точек (по одной). Пользователь должен иметь возмож­

ность выбрать любую задающую точку и перетащить ее в новое место.

В процессе перетаскивания система должна динамически перестраивать новый В-сплайн вместе с задающим многоугольником.

ОМеню удаления: это меню позволяет пользователю удалять В-сплайн щелчком на любом ребре соответствующего задающего многоугольника.

ОВыход: этот пункт меню завершает работу с программой.

Соседние файлы в папке книги