Графически
заданные незакономерные
кривые
встречаются
в различных
инженерных
задачах. Например,
волнообразная
кривая, произвольно
начерченная
архитектором,
может стать
основой
проекта (рис. 1). Для
практического
применения такой
кривой ее заменяют
(с
определенной
степенью
точности) некоторой
закономерной
кривой.
Рис.
1.
Современный
аэропорт
В
современных
САПР незакономерную
кривую аппроксимируют
NURBS–кривой,
ставшей
стандартным
инструментом
компьютерного
моделирования
[1]. Такой
подход не
всегда может
удовлетворить
конструктора.
NURBS–кривая,
несмотря на
свою
универсальность,
не позволяет
учесть
некоторые локальные
геометрические
условия,
наложенные
на
моделируемую
линию (касательные
в узловых
точках,
радиусы кривизны
в конечных
точках и др.).
Например, средствами
САПР
Fusion
360 не удается
построить кривую,
гладко сопрягающую
две заданные
окружности с
указанными
на них точками
сопряжения. Между
тем, на
множестве параметризованных
кубических
кривых эта
задача может
иметь четыре
решения (см. п. 5).
Другой
подход основан
на
использовании
составной
кривой,
проходящей
через
характерные
точки
моделируемой
линии и
удовлетворяющей
заданным условиям
гладкости. В
качестве
сегментов
составной
кривой чаще
всего
применяют
кубические
кривые в
форме Безье [2, 3] или
Эрмита [4]. Выбор
кубических
кривых
объясняется
простотой и
наглядностью
их
математического
описания в
сочетании с
хорошей “гибкостью”,
достаточной
для многих
практических
приложений. В
частности, при
использовании
кубических
сегментов
Безье с
единичными
весовыми
коэффициентами
погрешность
моделирования
физического сплайна
не превышает
2% (см. п. 6).
Основная
проблема при
формировании
составной
кривой заключается
в
обеспечении заданной
степени
гладкости.
Будем
полагать, что
моделируемая
незакономерная
кривая имеет
степень
гладкости
G2
(непрерывное
изменение
кривизны). Русло
реки,
траектория
движения
летательного
аппарата,
гибкая
металлическая
линейка,
эластики
Эйлера [5] и
другие
естественные
кривые по
своей
природе обладают
гладкостью
не менее
G2.
Даже
движение
карандаша по
бумаге, как
тела
ненулевой
массы,
подчиняется
второму
закону
Ньютона,
согласно
которому скачок
вектора
ускорения
возможен
только при
скачкообразном
изменении
движущей
силы. В этом
случае
говорят, что “рука
дрогнула”.
Гладкая
стыковка
сегментов
может
достигаться
различными
способами. В
работе [3] для
обеспечения
заданной
степени
гладкости
предлагается
менять
порядок
соединяемых
сегментов,
что ведет к
усложнению
математической
модели. В
работе [4] используется
упрощенный
подход, когда
в стыковой
точке
векторы
первых
производных
принимаются
совпадающими
не только по
направлению,
но и по
модулю. При
этом
утрачивается
одна степень
свободы.
Классический
подход,
предложенный
П. Безье,
основан на
соединении
сегментов
одинакового
порядка [2, стр.
169]. В
монографии [6,
стр. 152] получено
векторное
условие
G2-гладкого
соединения сегментов
пространственной
кубической
кривой Безье.
В предлагаемой
статье
показано, что
для плоского
случая это
условие
сводится к
решению обыкновенного
квадратного
уравнения (см.
п. 3).
Задача
формирования
плоского
кубического
сегмента
Безье с
наперед
заданными
касательными
и радиусами
кривизны на
обоих концах также
не может
считаться
вполне
тривиальной. В
[6, стр. 153]
отмечается,
что для
построения
такого
сегмента
нужно решить алгебраическое
уравнение
четвертой
степени. В
предлагаемой
статье
показано, что
в решении
уравнения четвертой
степени нет
необходимости,
так как
поставленная
задача
сводится к
поиску точек
пересечения
двух парабол
(см. п. 5).
Научная
новизна.
Разработан
графоаналитический
алгоритм
построения плоской
составной
G2-гладкой
(всюду дважды
дифференцируемой)
кубической кривой
Безье,
проходящей
через
заданные опорные
точки и
касающейся в
этих точках
заданных
прямых.
Отличительная
особенность
алгоритма
заключается
в учете направления
касательных
векторов и
радиусов кривизны
в опорных и
конечных
точках
конструируемой
кривой.
Разработан
программный
модуль,
позволяющий
в диалоговом
режиме
управлять
формой составной
кривой (с сохранением
второго
порядка
гладкости в
стыковых
точках).
Актуальность
работы
обусловлена
тем, что
теория и
практика
формообразования
составных
параметризованных
кривых,
применяемых
в
техническом
проектировании
с середины 60-х
годов 20 века, недостаточно
отражена в российских
научных
изданиях и
учебных
пособиях по
инженерной и
компьютерной
графике [7, 8, 9].
Практическая
значимость.
Предложенный
в статье
графоаналитический
алгоритм
позволяет
конструировать
G2-гладкую
составную кубическую
кривую Безье,
имеющую в
опорных
точках
заданные
касательные,
а в конечных
точках –
заданные
касательные
и заданные
радиусы
кривизны. Такие
кривые
применяются
при
моделировании
разнообразных
геометрических
объектов и
физических
процессов, в
частности,
для
аппроксимации
незакономерных
(графически
заданных)
кривых линий.
На
плоскости
зафиксирована
незакономерная
кривая,
проходящая
через
опорные
точки 0, 1, 2,…,
n.
В
опорных
точках
отмечены
касательные τ0,
τ1, τ2,…, τ
n. В
конечных
точках 0,
n
задана
кривизна
K0,
Kn.
Требуется
сформировать
G2-гладкую
аппроксимирующую
функцию,
проходящую
через данные
точки,
касающуюся данных
прямых и
имеющую
заданную
кривизну в
конечных точках.
Допустимая
погрешность
аппроксимации
определяется
конструктором.
Как правило,
она не должна
превышать 1…2%.
Будем
составлять
искомую
кривую из
сегментов
кубических
кривых в
форме Безье.
Любой
сегмент с
номером
i
=
1, 2, 3,
…, n
вполне
определен
своей
характеристической
ломаной: начальной
точкой
i–1,
конечной
точкой
i
и
управляющими
точками
Qi,
Pi.
Например,
первый
сегмент 0-1
описывается параметрическими
уравнениями
Безье:
,
|
(1)
|
где
Q1(
xQ1, yQ1),
P1(
xP1, yP1) –
управляющие
точки, а
точки 0(x0,
y0 ), 1(x1, y1) –
граничные
точки
сегмента
Безье.
Управляющие
точки
Q1, P1
инцидентны
касательным τ0,
τ1. Параметр
t
меняется в
диапазоне
t
[0, 1].
Вспомогательная
декартова
система координат
xy
на
плоскости
чертежа
может быть указана
произвольно. Положение
управляющих
точек определяется
из условия непрерывности
изменения
кривизны в
точках
сопряжения
соседних
сегментов, а
также из
условия
обеспечения
наперед
заданной
кривизны в
граничных
точках 0,
n.
Схема
решения.
Фиксируем
форму
какого-либо
сегмента. Фиксация
обеспечивается
указанием
характеристической
ломаной.
Номер
фиксируемого
сегмента и
его характеристическую
ломаную задает
конструктор. Находим
“левый” и
“правый”
сегменты,
гладко соединенные
с фиксированным
сегментом.
Слева и
справа к полученным
сегментам
присоединяем
новые
сегменты,
всякий раз
обеспечивая
условие
непрерывности
кривизны в
точках сопряжения.
При этом
требуется
многократно
решать две
локальные
задачи.
Локальная
задача 1.
Найти
управляющие
точки плоского
кубического
сегмента
Безье 1-2,
гладко соединенного
с
фиксированным
кубическим сегментом
Безье 0-1.
Сегменты
0-1 и 1-2
компланарны. В
стыковой
точке 1 оба
сегмента
должны иметь
общую
касательную τ1
и общий
радиус
кривизны.
Кроме этого,
конструируемый
сегмент 1-2 должен
касаться в своей
конечной точке
2 наперед
заданной
прямой τ2.
Основная
проблема при
решении задачи
связана с
обеспечением
непрерывности
кривизны в
стыке
сегментов. В
случае
применения
параметризованных
кубических
кривых решение
сводится к
поиску
корней
квадратного
уравнения
(см. п. 3).
Покажем,
что локальная
задача 1
имеет ∞1
решений.
Параметрические
уравнения кубического
сегмента
Безье содержат
восемь скалярных
коэффициентов.
Следовательно,
сегмент имеет
восемь
степеней
свободы.
Координаты граничных
точек
сегмента
зафиксированы.
У
конструируемого
сегмента
остаются 4
степени свободы.
Управляющие
точки должны
быть
инцидентны
заданным
касательным.
Это
требование
отнимает у искомого
сегмента еще
две степени
свободы. Две
оставшиеся
степени
свободы
позволяют
конструктору
указать
радиусы
кривизны в
начальной и
конечной
точках сегмента.
Но в условии задачи
1
зафиксирована
кривизна
только в
стыковой точке
1, что
поглощает
лишь одну
степень
свободы. Следовательно,
конструируемый
сегмент
сохраняет
одну степень
свободы.
Таким
образом,
имеется ∞1
сегментов
Безье, удовлетворяющих
условию задачи
1, что
позволяет
управлять
формой
сегмента.
Локальная
задача 2
.
Найти
управляющие
точки плоского
кубического
сегмента
Безье, имеющего
в своих
конечных
точках
заданные
касательные
и заданные
радиусы
кривизны.
Задача может
иметь 0, 2 или 4
решения (см. п. 5).
Если
зафиксированы
знаки
кривизны в
конечных
точках, то
задача не
может иметь
более одного
решения.
Построение
G2-гладкой
составной кривой,
проходящей
через данные
точки и касающейся
в этих точках
наперед
заданных
прямых, начинается
с фиксации
какого-либо
сегмента. Будем
полагать, что
пользователь
зафиксировал
первый
сегмент 0-1,
представив
его в виде параметризованной
кривой
r(1)(t).
Здесь
и далее
надстрочный
индекс в
скобках обозначает
номер сегмента.
Требуется
присоединить
к первому
сегменту 0-1
второй
сегмент 1-2, обеспечив
равенство
кривизны
соединяемых
сегментов в
стыковой
точке 1 и
соприкосновение
с заданными
прямыми τ1, τ2
в точках 1, 2.
Кривизна
K
параметрически
заданной кривой
r(t)
определяется
выражением
,
|
(2)
|
где
B
–
единичный
вектор
бинормали.
Если рассматривается
плоская
кривая, то
вектор
B
расположен
перпендикулярно
плоскости
чертежа.
Из (2)
следует, что
условие
равенства
кривизны сегментов
r(1)(t)
и
r(2)(t)
в
стыковой точке
1 имеет вид
.
|
(3)
|
Запишем
первые
производные
в виде
,
|
(4)
|
где
T1
–
общий
касательный
вектор, а
величины
– модули
первых
производных
в стыковой
точке 1
(подстрочный
индекс здесь
и далее обозначает
номер точки).
Подставляя выражения
(4) в (3), получаем
условие гладкости:
|
(5)
|
Условие
(5) будет
выполнено,
если
.
|
|
Но
условие (5)
будет
выполнено также
и в том
случае, если
к вектору
прибавить
любой вектор,
коллинеарный
вектору
T1,
например,
вектор
,
где μ1
–
произвольный
скаляр [6, стр. 150].
Получаем условие
гладкости
,
|
(6)
|
справедливое
при любом
значении μ1
(как
положительном,
так и отрицательном).
Варьируемый
параметр μ1
дает
дополнительную
степень свободы
в системе
построения
G2-гладкой
кривой.
Записав
уравнение
сегмента 0-1 в
форме Фергюсона
и
дважды
дифференцируя,
получаем
выражение
для расчета
второй
производной
в конце первого
сегмента (при
t=1):
,
|
(7)
|
где
–
производные
первого
сегмента в его
граничных точках
0, 1.
Аналогичным
образом,
записав
уравнение второго
сегмента 1-2 в виде
и
дважды
дифференцируя,
получаем
выражение
для расчета
второй
производной
в начале второго
сегмента (при
t=0):
,
|
(8)
|
где
– векторные
производные
второго сегмента
в граничных
точках 1, 2.
Подставляя
выражения (7), (8)
в (6), получаем
условие
гладкого
соединения
сегментов 0-1 и
1-2:
,
|
(9)
|
где
введено
обозначение:
(отношение
модулей
векторных
производных
в
стыковой
точке 1).
Для гладкого
соединения
сегментов не
требуется обеспечивать
непрерывность
изменения
модулей
производных
[6, с. 165].
Параметр λ1
может
принимать
любые
положительные
значения.
Чтобы
записать
условие
гладкости (9) в
форме Безье,
учтем, что
управляющие
точки
Q1,
P1
сегмента 0-1 и векторные
производные
в
конечных
точках этого
сегмента
связаны
соотношениями
Безье (рис. 2):
,
|
(10)
|
где
q1,
p1
–
векторы,
указывающие
положение
управляющих
точек
Q1,
P1.
Аналогичным
образом,
управляющие
точки
Q2, P2
второго
сегмента и производные
в конечных
точках этого
сегмента
связаны соотношениями:
,
|
(11)
|
где
q2,
p2
–
векторы,
указывающие
положение
управляющих
точек
Q2,
P2.
Рис.
2. Соединение
сегментов
Безье
Из
(10) и (11) следует:
.
|
(12)
|
Подставляя
(12) в (9), получаем
условие
гладкости, в
котором нет
вектора
r2,
указывающего
положение
конечной точки
второго
сегмента, так
как
слагаемые с
участием
этого
вектора сокращаются:
.
|
(13)
|
Согласно
(12),
управляющие
векторы
p1
и
q2
взаимосвязаны:
.
|
(14)
|
Подставляя
(14) в (13) (исключая
вектор
q2),
получаем
условие
гладкого
соединения
сегментов 0-1 и 1-2
в форме
Безье:
.
|
(15)
|
Здесь
r1
–
вектор, указывающий
положение
стыковой
точки 1,
q1
и
p1
–
векторы,
указывающие
положение
управляющих
точек
Q1,
P1
первого
(зафиксированного
пользователем)
сегмента 0-1,
p2
–
вектор,
указывающий
положение
управляющей
точки
P2
второго
(конструируемого)
сегмента 1-2 (см. рис.
2). Обращает на
себя
внимание то обстоятельство,
что в условии
(15) не
требуется
указывать ни
положение
начальной
точки 0
первого
сегмента, ни
положение
конечной
точки 2 второго
сегмента.
Таким
образом, если
вектор
p2,
указывающий положение
управляющей
точки
P2
второго сегмента,
удовлетворяет
условию (15), то,
независимо
от положения точек
0 и 2, сегменты 0-1
и 1-2 будут
иметь в точке
стыка
одинаковую
кривизну (при
зафиксированных
векторах
r1,
q1,
p1
и
произвольно
указанных
значениях
параметров λ1
и μ1).
Положение
управляющей
точки
Q2
(вектор
q2),
согласно соотношению
(14),
функционально
зависит
только от λ1
(при
фиксированных
векторах
r1
и
p1).
Рассмотрим
условие (15) как
параметрически
заданную
функцию, описывающую
движение
управляющей
точки
P2
на
плоскости
чертежа (в
зависимости
от
параметров λ1
и μ1). Заметим,
что при
фиксированном
параметре μ1
уравнение (15)
описывает
параболу, по
которой
движется
точка
P2.
Для
различных
значений μ1
получаем
семейство
парабол.
Любая точка
P2
любой
параболы
удовлетворяет
условию гладкости
(15).
Согласно
условию задачи,
требуется найти
точку
P2,
инцидентную
наперед
заданной
касательной
τ2
(см. рис. 2).
Положение
точки
P2,
бегущей по параболе
(15), определяется
(при
фиксированном
μ1
и
фиксированных
векторах
r1,
q1,
p1)
величиной
параметра λ1.
Следовательно,
надо найти
такое
значение λ1,
при котором
точка
P2
попадает на
касательную
τ2. Иначе
говоря, надо
найти точки
пересечения
прямой τ2
и параболы
(15).
Раскладывая
векторное
уравнение (15)
по осям
координат
x,
y
и
присваивая
параметру μ1
произвольное
значение,
получаем
параметрическое
уравнение
параболы, где
λ1
играет
роль независимого
параметра:
|
(16)
|
Здесь
(x1,
y1), (xQ1, yQ1),
(xP1, yP1)
–
координаты
стыковой
точки 1 и управляющих
точек
Q1,
P1
фиксированного
сегмента 0-1. При
изменении параметра
μ1
получаем
семейство парабол.
Уравнение
касательной
τ2,
проходящей
через точку 2(x2, y2)
и
наклоненной
к оси
x
под
углом δ2,
имеет вид:
.
|
|
Управляющая
точка
P2
конструируемого
сегмента 1-2
должна быть
инцидентна
касательной
τ2,
следовательно,
координаты
xP2,
yP2
точки
P2
должны
удовлетворять
уравнению
.
|
(17)
|
Фиксируя
в уравнении (16)
параметр μ1
(выделяя одну
параболу из
семейства
парабол) и подставляя
(16) в (17), после
алгебраических
преобразований
получаем
квадратное
уравнение относительно
λ1:
|
(18)
|
где
|
(19)
|
Найденное
из (18) значение
λ1
обеспечивает
выполнение
условия
гладкости (15) и
принадлежность
точки
P2
наперед
заданной
касательной
τ2.
В отличие
от обобщенного
условия
гладкости (15), в
котором нет
информации
ни о конечной
точке 2
конструируемого
сегмента 1-2, ни
о
касательной
в точке 2, в
уравнение (18)
включены все
граничные
условия.
Поэтому
значение
параметра
λ1,
найденное из
уравнения (18),
позволяет рассчитать,
согласно (16),
координаты
управляющей
точки
P2
τ2,
обеспечивающей
гладкое
сопряжение
сегментов.
Координаты
другой
управляющей
точки
Q2
τ1
конструируемого
сегмента вычисляются
по скалярным
формулам
|
(20)
|
эквивалентным
векторному
уравнению (14).
Заметим,
что в
уравнении (18)
имеются две
функционально
связанные
переменные λ1
и μ1. Как
отмечалось
ранее, параметр
μ1
может
быть задан
произвольно.
Тогда из (18) находим
значение
параметра λ1
как функцию
параметра μ1:
,
|
(21)
|
где
Коэффициенты
α1, β1
вычисляются
согласно (19).
Но
можно
поступить
иначе: в
качестве
независимой
переменной
принять
величину λ1,
а параметр μ1
полагать
функционально
зависящим от
λ1. Тогда из (21)
получаем:
.
|
(22)
|
Очевидно,
уравнения (21) и
(22)
эквивалентны.
Произвольно
задавая
параметр μ1, вычисляем,
согласно (21),
величину
параметра λ1.
И наоборот, произвольно
задавая
параметр λ1,
вычисляем,
согласно (22),
величину
параметра μ1.
Подставляя
найденную
тем или иным
способом
пару μ1, λ1
в
уравнения (16) и
(20), вычисляем
координаты
управляющих
точек
P1,
Q1
конструируемого
сегмента 1-2. Локальная
задача 1 решена.
На
экране
компьютера представлена
некоторая
незакономерная
(графически
заданная) кривая.
На кривой
отмечены точки
0, 1, 2, … и зафиксированы
касательные
в этих точках
τ0, τ1, τ2, … Требуется
найти
составную
кубическую
кривую Безье,
проходящую
через данные
точки и
касающуюся
данных
прямых. Следуя
П. Безье [2, стр. 106],
будем
называть эту
кривую
аппроксимирующей
кривой,
несмотря на
то, что она
должна пройти
строго через
указанные
точки.
Шаг
1.
Перемещая
управляющие
точки
Q1,
P1
по
касательным τ0,
τ1
и
вычерчивая
сегмент
Безье (1) для
каждого сочетания
{Q1,
P1},
добиваемся
удовлетворительного
совпадения сегмента
Безье с участком
0-1 графически
заданной кривой.
Шаг
2.
Произвольно
задаем параметр
λ1, фиксируя
тем самым
управляющую
точку
Q2
на
касательной τ1
(см. рис. 2):
.
|
|
Используя
выражения (20),
вычисляем
координаты
управляющей
точки
Q2:
Примечание
к шагу 2.
Вместо
указания
числового
значения
параметра λ1
конструктор
может
произвольно
отметить на
касательной τ1
управляющую
точку
Q2,
после чего
вычислить λ1.
Шаг
3.
Согласно (22),
вычисляем
параметр μ1:
.
|
|
Шаг
4.
Вычисляем
координаты
управляющей
точки
P2
τ2,
положение
которой,
согласно (16), функционально
зависит от λ1
и μ1:
Шаг
5.
Вычисляем
двумерный
массив точек сегмента
Безье 1-2,
задавая
значения
параметра
t
в
диапазоне
t
[0, 1]:
Результат:
получен
сегмент
Безье,
проходящий
через точки 1, 2
и касающийся
в этих точках
прямых τ1, τ2.
В стыковой
точке 1
полученный
сегмент
имеет тот же
самый радиус
кривизны, что
и сегмент 0-1.
Если достигнута
удовлетворительная
точность аппроксимации
участка 1-2, переходим
к
моделированию
следующего
участка. Если
точность
аппроксимации
не
удовлетворяет
конструктора,
изменяем
положение
точки
Q2
τ1
и повторяем
шаги 2…5. Диалог
продолжается
до
достижения заданной
точности
аппроксимации
на участке 1-2.
Примечание.
Указывая различные
положения
управляющей
точки
Q2
τ1,
получаем ∞1
сегментов
Безье,
удовлетворяющих
условию локальной
задачи 1. Это
происходит
благодаря присутствию
варьируемого
параметра μ1
в условии
гладкости (15).
Пренебрежение
этим параметром
приводит к
утрате
вариативности:
при μ1
=0
уравнение (15)
имеет
единственное
решение (или не
имеет
решения). В
результате
теряется
возможность
управления
формой конструируемого
сегмента.
Пример 1(управление
формой
сегмента
Безье).
Пусть
кубический
сегмент
Безье 0-1
зафиксирован
указанием
управляющих
точек
Q1,
P1
на
касательных τ0,
τ1
(рис. 3).
Требуется
найти
кубический
сегмент 1-2,
обеспечивающий
гладкость
G2
в
стыковой
точке 1 и
касающийся
прямой τ2
в
своей
конечной
точке 2.
Рис.
3. Управление
формой
сегмента
Безье
Присваиваем
параметру λ1
какое-либо
значение,
например, λ1
=4.
Вычисляем
координаты (20)
управляющей
точки
Q2
сегмента
1-2. Вычисляем
значение (22)
параметра μ1.
Вычисляем
координаты (16)
управляющей
точки
P2
сегмента 1-2. Результат:
найден
сегмент
Безье,
удовлетворяющий
заданным
граничным
условиям. В
стыковой точке
1 сегменты 0-1 и 1-2
имеют
одинаковый
радиус кривизны.
Присваивая
параметру λ1
различные
значения (λ1
=4.0,
4.2, 4.5), получаем
сегменты Безье
1-2 различной
формы, но с
одинаковой
кривизной в стыковой
точке 1 (см. рис. 3).
Запишем
уравнение
кривой Безье
AB
в
проекциях на
оси
x,
y:
|
(23)
|
В
зависимости
от положения
точки
и
управляющих
точек
получаем
кривые, форма
которых
существенно
различается
(рис. 4).
Рис.
4. Типы
кубических
кривых Безье
Дополнительно
рассмотрим
два частных
случая: 1)
касательные
τA,
τB
в конечных
точках
сегмента
AB
параллельны
друг другу; 2)
одна из
управляющих
точек (Q или P)
совпадает с
точкой
X
пересечения
касательных (
).
Теорема
1.
Если
касательные
τA,
τB
в
конечных
точках
сегмента
Безье
AB
параллельны
друг другу,
то кривизна
сегмента в точке
A
определяется
только
положением
управляющей
точки
Q
τA
(не зависит
от положения
управляющей
точки
P
τB).
Аналогичным
образом, в
силу
симметрии
сегмента
Безье, его
кривизна в
точке
B
не
зависит от
положения
управляющей
точки
Q
τA,
а определяется
только
положением
точки
P
τB.
Доказательство.
Кривизна
сегмента (23) в
его
начальной точке
A
вычисляется
по формуле
|
(24)
|
Требуется
показать, что
при
τA
||
τB
кривизна
KA
не
зависит от
положения
точки
P(xP, yP).
Дифференцируя
(23) по параметру
t
и подставляя
t
=0,
получаем:
|
(25)
|
Согласно
(25), знаменатель
выражения (24)
не зависит от
координат
xP,
yP
управляющей
точки
P.
Достаточно
показать, что
числитель
этого выражения
также не
зависит от координат
точки
P.
Подставляя (25)
в (24) и выполняя
некоторые
алгебраические
преобразования,
получаем
выражение
для
числителя
Ч
(без учета постоянного
коэффициента):
|
(26)
|
Первые
два
слагаемых
этого
выражения,
содержащие
координаты
точки
P,
взаимно
сокращаются,
поскольку,
вследствие
параллельности
касательных,
справедливо
равенство
.
Таким
образом, как
знаменатель,
так и числитель
выражения (24)
не зависят от
координат
точки
P,
что и
требовалось
доказать. В
частности, сегменты
Безье
r,
rʹ,
rʹʹ
с общей управляющей
точкой
Q
и
различными
управляющими
точками
P,
Pʹ,
Pʹʹ,
несмотря на
различную
форму, имеют
в точке
A
одну и ту же
кривизну
(рис. 4, д).
Теорема
2.
Если вершины
A,
Q,
P
характеристической
ломаной
AQPB
сегмента Безье
коллинеарны,
то,
независимо
от положения
точки
B,
кривизна
сегмента
AB
в
точке
A
равна
нулю (рис. 5,
слева).
Аналогичным
образом, если
вершины
B,
Q,
P
расположены
коллинеарно,
то, независимо
от положения
точки
A,
кривизна
сегмента
AB
в
точке
B
равна
нулю (рис. 5,
справа).
Доказательство.
Пусть точки
A,
Q,
P
коллинеарны
(инцидентны
касательной
τA).
Уравнение
касательной
τA
имеет вид
, следовательно
.
|
|
Подставляя
yQ,
yP
в (25),
находим
производные
Подставляя
их в
выражение (24),
убеждаемся,
что
числитель
этого
выражения
равен нулю.
Аналогично
доказывается
вторая часть теоремы.
Рис.
5. К теореме 2
Следствие
из теоремы 2.
Если
управляющие
точки
Q,
P
характеристической
ломаной
AQPB
сегмента Безье
совпадают, то
кривизна
сегмента в
концевых
точках
A,
B
равна
нулю (рис. 4, е).
Следствие
из теоремы 2
позволяет
конструировать
G2-гладкую
составную
кривую с нулевой
кривизной в
стыковых
точках: надо
всего лишь
совместить
управляющие
точки сегментов
с точками
пересечения
касательных в
конечных
точках этих
сегментов.
Пример
2
(гладкое
сопряжение
прямых линий
кубическими
кривыми). Через
точки 0, 1, 2, 3 требуется
провести
G2-гладкую
составную
кривую, касающуюся
в этих точках
наперед
заданных
прямых τ0, τ1,
τ2, τ3
(рис. 6).
Рис.
6. Составная
кривая с
нулевой
кривизной в
стыковых
точках
Совмещаем
управляющие
точки
P1,
Q1
первого
сегмента 0-1 с
точкой
X1
= τ0
∩τ1.
Точно так же
совмещаем
управляющие
точки
P2,
Q2
второго
сегмента 1-2 с
точкой
X2
= τ1
∩τ2,
и так далее.
Получаем
кривую,
состоящую из
кубических
сегментов
Безье с нулевой
кривизной в
стыковых
точках,
наиболее
плотно из
всех
возможных
G2-кривых
прилегающую
к своей
характеристической
ломаной.
В
заключение
раздела 4
отметим
“инволюционное”
свойство
кубической
кривой Безье:
при
переименовании
опорных точек
A
↔
B
с
одновременным
переименованием
управляющих
точек
Q
↔
P
форма
сегмента Безье
AB
не
меняется. Это
непосредственно
следует из
рассмотрения
структуры
уравнения (23), с
учетом того,
что при любом
значении
t
[0, 1]
полином
Бернштейна
равен
единице.
Напомним
условие
локальной
задачи 2 (см. п. 2): построить
сегмент
Безье 0-1, задав
направления
касательных
τ0, τ1
и
значения
кривизны
K0,
K1
в
конечных
точках 0, 1. Будем
искать
решение в
форме (1):
Управляющие
точки
Q(xQ, yQ),
P(xP,
yP)
должны быть
определены
из условий
инцидентности
Q
τ0,
P
τ1
и из
условий
равенства
кривизны на
концах сегмента
значениям
K0,
K1.
Кривизна
плоской
кривой,
заданной в явном
виде
y
=
y(x),
вычисляется
по формуле
|
(27)
|
Значения
и
известны
(равны
тангенсам
d0,
d1
углов
наклона
касательных
τ0, τ1
к оси
x),
поэтому
из (27) могут
быть найдены
значения
вторых производных
в
конечных
точках
конструируемого
сегмента.
Согласно
известным
правилам
дифференцирования
сложной
функции,
имеем:
,
|
(28)
|
.
|
(29)
|
Подставляя
(28) в (29), получаем:
.
|
(30)
|
Дифференцируем
(1) по
параметру
t:
|
(31)
|
Подставляя
(31) в (30), получаем:
|
(32)
|
В
уравнения (32)
входят
неизвестные
величины
xQ,
yQ,
xP,
yP.
Учитывая, что
Q
τ0,
P
τ1, запишем:
.
|
(33)
|
Подставляя
(33) в (32),
исключаем
неизвестные
yQ,
yP.
После
алгебраических
преобразований
получаем
систему явных
уравнений
относительно
неизвестных
xP,
xQ:
|
(34)
|
где
ψP,
ψQ
–
постоянные
коэффициенты:
Решая
уравнения (34)
относительно
xP,
xQ
и
учитывая (33),
находим координаты
управляющих
точек
Q(xQ,
yQ),
P(xP,
yP)
сегмента
Безье с
заданной кривизной
K0,
K1
в
конечных
точках.
Нелинейная
система
уравнений (34)
может быть
решена
графически.
Начертим параболу
xP
=
f(xQ)
(первое
уравнение) и
параболу
xQ
=
g(xP)
(второе
уравнение). В
точках
пересечения
парабол
f
∩
g
получаем
значения
неизвестных
xQ,
xP.
Согласно
(33), вычисляем
значения
yQ,
yP.
Управляющие
точки
определены.
Примечание.
Пересекаясь
в четырех
точках,
параболы дают
четыре
решения
системы
уравнений (34)
(четыре
варианта характеристической
ломаной). Все
четыре
варианта
индуцируют
сегменты Безье
с одним и тем
же модулем
кривизны |K0|
в
начальной
точке
сегмента, и
одним и тем же
модулем
кривизны |K1|
в
конечной
точке. При
этом только
один вариант
соответствует
наперед
заданным знакам
кривизны на
концах
конструируемого
сегмента.
Пример
3 (сопряжение
двух
окружностей).
Требуется
построить
кубическую
кривую Безье,
гладко
соединяющую
две заданные
окружности с
радиусами
RA,
RB.
На
окружностях
указаны
точки
сопряжения
A,
B
(рис. 7).
Начертив,
согласно (34),
параболы
xP
=
f(xQ)
и
xQ
=
g(xP),
отмечаем
точки их
пересечения 1,
2, 3, 4. Получаем
четыре
решения системы
уравнений (34).
Каждому
решению
соответствует
кубический сегмент
Безье с
заданными
радиусами
кривизны
RA,
RB
в граничных
точках
A,
B. На
рис. 7
показано
построение
управляющих
точек
Q1,
P1
кубического
сегмента № 1,
соответствующего
точке 1
пересечения
парабол.
Рис.
7. Сопряжение
двух
окружностей
Пример
4 (сопряжение прямой
линии и окружности).
Указано
направление
TA
прямой
линии,
проходящей
через точку
A.
На
окружности
RB
указана
точка
B
(рис. 8). Требуется
сконструировать
переходную
кривую
AB,
гладко (без
скачков
кривизны)
соединяющую прямую
линию и
окружность.
Рис.
8. Сопряжение
окружности и
прямой линии
Кривизна
переходной
кривой в точке
A
должна
быть равна
нулю.
Следовательно,
согласно
теореме 2,
управляющая
точка
P
искомой
кривой должна
совпадать с
точкой
пересечения
направлений
TA,
TB.
Здесь
TB
–
вектор,
касающийся
окружности
RB
в
точке
B.
Подставляя
η0
=
ηA
=0 в первое
уравнение (34),
получаем
вырожденную
параболу
xP
=
const.
Подставляя
расчетное
значение η1
=|ηB|
во
второе
уравнение (34),
получаем две
параболы
xQ
=
F(xP) и xQ
=
F
ʹ(xP).
Отмечаем
точки
U,
Uʹ
пересечения
парабол с
прямой
линией
xP
=
const.
Получаем характеристические
ломаные (A
-
Q
-
P
-
B) и (
A
-
Q
ʹ-
P
ʹ-
B),
которым
соответствуют
сегменты
Безье №1 и №2. Условию
задачи
удовлетворяет
сегмент №1.
Пример
5 (замкнутый
G2-гладкий
контур).
Требуется
сформировать
гладкий
замкнутый
контур,
касающийся
сторон
квадрата в точках
0, 1, 2, 3. В точке 0
задан радиус
кривизны.
Задача
имеет
множество
решений.
Используя
составную
кубическую
кривую Безье,
можем
получить как
симметричные
(рис. 9, а, б), так и
несимметричные
(рис. 9, в, г)
замкнутые
G2-гладкие
контуры,
удовлетворяющие
условиям
задачи. При
построении
контуров
использованы
алгоритмы
решения
локальных
задач 1 и 2.
Рис.
9. Замкнутый
G2-гладкий
контур
(варианты)
Физическим
сплайном называют
линию,
образованную
осью упругого
стержня,
проходящего
через
наперед заданные
точки.
Предполагается,
что размеры
поперечного
сечения
стержня
весьма малы
по сравнению
с длиной и
радиусом
кривизны его
оси. Пример
такого
сплайна –
упругая
металлическая
линейка. Проходя
через
заданные на
плоскости
точки,
линейка
естественным
образом
приобретает
форму,
характеризующуюся
минимальной
энергией
внутренних
напряжений и
минимальной
средней
кривизной. Теоретическое
уравнение
физического
сплайна
может быть
найдено лишь
при условии
малых
прогибов
(малых отклонений
от прямой
линии). В этом
случае физический
сплайн
удовлетворительно
описывается
составной
кусочно-кубической
полиномиальной
кривой
второй
степени
гладкости [10]. Для
больших
прогибов
решение
принципиально
усложняется.
Согласно [6],
оно сводится
к
вариационной
задаче, не имеющей
элементарного
решения.
Поэтому моделирование
физического
сплайна с
большими
прогибами
целесообразно
выполнять
экспериментально,
с
последующей
аппроксимацией
полученной
кривой.
Простейший
физический
сплайн.
Через
точки
A,
B,
C
проходит
физический
сплайн (рис. 10,
слева). Такой “трехточечный”
сплайн со
свободными
концами может
быть назван
простейшим
физическим
сплайном. Требуется
найти аналитическую
функцию,
дающую
удовлетворительное
приближение к
упругой
линии
простейшего
сплайна.
Искомая
функция
должна удовлетворять
трем группам
локальных
условий:
инцидентность
опорным
точкам
A,
B,
C;
касание
прямых τA,
τB,
τC;
нулевая
кривизна в
точках
A,
C. Задача
не может быть
решена с
помощью стандартной
NURBS
–кривой, не
позволяющей
учитывать наперед
заданные локальные
геометрические
характеристики
моделируемой
линии. Эластики
Эйлера также
неприменимы,
так как
отсутствует
осевое
усилие,
действующее на
упругий
элемент [5].
Будем
искать
решение в форме
составной
G2-гладкой
кубической
кривой Безье.
Разбиваем
упругую
линию на
участки
AB
и
BC,
каждый из
которых
заменяем
кубическим
сегментом
Безье.
Чтобы
обеспечить
нулевую
кривизну в
точке
A,
совмещаем
управляющую
точку
P1
сегмента
AB
с
точкой пересечения
касательных τ
A,
τB
(см.
теорему 2).
Перемещая
управляющую
точку
Q1
по
касательной τA,
добиваемся
требуемой
точности
аппроксимации
участка
AB.
Чтобы
обеспечить
нулевую
кривизну в
точке
C,
совмещаем
управляющую
точку
Q2
с
точкой
пересечения
касательных τ
B,
τ
C
(см.
теорему 2). Вычисляем
значение
параметра λ
B
(см.
п. 3.3):
.
|
|
По
формуле (22) находим
значение
параметра μ,
при котором
выполняется
условие (18)
гладкого
соединения
сегментов
AB
и
DC.
Подставляя
найденные
значения λ
B
и μ
в (16), получаем
координаты
управляющей
точки
P2. Управляющие
точки
сегмента
BC
полностью
определены. Составная
кубическая кривая
AB
+
BC
удовлетворяет
всем
граничным
условиям. Погрешность
аппроксимации
не превышает
1,5% (рис. 10, справа).
Рис.
10. Простейший
физический
сплайн: фото
(слева) и
аппроксимация
(справа)
Физический
сплайн
общего вида.
Через опорные
точки 0, 1, …, 4
проходит
упругий
элемент со
свободными концами.
В опорных
точках
отмечаем
касательные
τ0, …, τ4
(рис. 11,
слева). Требуется
найти
G2-гладкую
аппроксимирующую
функцию,
проходящую
через точки 0, 1,
…, 4 и касающуюся
прямых τ0, …, τ4.
Кривизна
аппроксимирующей
функции в
конечных
точках 0 и 4
должна быть
равна нулю. Будем
искать
решение в
виде кривой,
составленной
из четырех кубических
сегментов
Безье.
Первый
сегмент.
Управляющую
точку
P1
первого
сегмента 0-1 совмещаем
с точкой
пересечения
касательных
τ0, τ1. Результат:
кривизна
сегмента 0-1 в
начальной
точке равна
нулю (см.
теорему 2).
Перемещая
управляющую
точку
Q1
по
касательной
τ0,
добиваемся
удовлетворительной
аппроксимации
первого участка
физического
сплайна.
Второй
сегмент.
Указав
управляющую
точку
Q2
τ1,
находим управляющую
точку
P2
τ2.
Положение
точки
P2
функционально
зависит от
положения
точки
Q2
(смотри
п. 3.3). Перемещая
точку
Q2
по
касательной τ1,
добиваемся
удовлетворительной
аппроксимации
второго
участка
физического
сплайна.
Третий
сегмент.
Указав
управляющую
точку
Q3
τ2,
находим
управляющую
точку
P3
τ3.
Положение
точки
P3
функционально
зависит от
положения
точки
Q3.
Перемещая
точку
Q3
по
касательной τ2,
добиваемся
удовлетворительной
аппроксимации
третьего
участка
физического
сплайна.
Четвертый
сегмент.
Управляющую
точку
Q4
совмещаем с
точкой
пересечения
касательных τ3,
τ4. Результат:
кривизна
сегмента
Безье 3-4 в
конечной
точке 4 равна
нулю (см. теорему
2). Кривизна на
концах четвертого
сегмента
зафиксирована,
поэтому его
формой
управлять
невозможно
(смотри п. 5). Тем
не менее,
сегмент
Безье 3-4
удовлетворительно
аппроксимирует
четвертый
участок физического
сплайна.
Погрешность
аппроксимации
менее 2% (рис. 11,
справа).
Рис.
11.
Аппроксимация
физического
сплайна общего
вида (фото и
чертеж)
Плоские
графически
заданные
незакономерные
кривые
встречаются
в различных
инженерных
задачах.
Чтобы
использовать
такую кривую
в процессе
проектирования,
ее необходимо
с заданной
точностью аппроксимировать
какой-либо достаточно
простой
аналитической
функцией (или
набором
таких
функций,
соединенных
между собой с
определенной
степенью
гладкости). Компромисс
между
точностью и
простотой
математического
описания
может быть
достигнут за
счет
применения
составных
кубических
кривых Безье.
Практическое
применение
таких кривых
затрудняется
отсутствием в
технической
литературе
алгоритмов
расчета
координат
управляющих
точек сегментов
Безье с
учетом
наперед
заданных локальных
характеристик
конструируемой
кривой
(таких, как
касательные
и кривизна в
узловых и
конечных
точках).
В
статье предлагается
алгебраический
алгоритм (п. 3.2,
локальная
задача 1) и
программный
модуль (п. 3.3,
программная
реализация),
позволяющие
определять
координаты
управляющих
точек соединяемых
сегментов
Безье и
управлять
формой
сегментов, не
нарушая порядок
гладкости
G2
в
стыковых
точках.
Показано, что
решение
задачи
гладкой
стыковки
сводится к
решению квадратного
уравнения (18).
Составлен
графоаналитический
алгоритм
построения плоского
кубического сегмента
Безье,
заданного
значениями
первой и
второй
производных
на концах
сегмента (п. 5,
локальная
задача 2). Поиск
управляющих
точек такого
сегмента сводится
к решению
системы двух
квадратных
уравнений (34)
или к
определению
координат
точек
пересечения
двух начерченных
парабол. Разработанные
алгоритмы
использованы
для
аппроксимации
экспериментально
полученного
физического
сплайна.
Погрешность
аппроксимации
составила
менее 2%.
1. Glaeser, G. Geometrie und ihre
Anwendungen in Kunst, Natur und Technik / G. Glaeser. – Springer Spektrum,
2014. – 508 pp.
–
DOI 10.1007/978-3-642-41852-5
2. Безье
П.
Геометрические
методы // Математика
и САПР. 2. М.: Мир, 1989.
С. 96-257.
3.
Григорьев
М.И. Полиномы
Бернштейна и
составные
кривые Безье /
М.И.
Григорьев,
В.Н.
Малоземов,
А.Н. Сергеев //
Журнал
вычислительной
математики и
математической
физики. – 2006. Т. 46,
№ 11.
С.
1962-1971.
4. Panchuk, K.
Spline Curves Formation Given Extreme Derivatives / K. Panchuk, T. Myasoedova,
E. Lyubchinov. – Mathematics
2021, 9(1), 47.
https://doi.org/10.3390/math9010047
5.
Работнов Ю.Н.
Сопротивление
материалов / Ю.Н.
Работнов. – М.: Физматгиз,
1963. – 456 с.
6. Фокс А.
Вычислительная
геометрия.
Применение в
проектировании
и на производстве
/ А. Фокс, М.
Пратт. – М., Мир, 1982. –
304 с.
7. Голованов
Н.Н.
Геометрическое
моделирование
/ Н.Н.
Голованов. – М.:
Изд-во физико-математической
литературы, 2012. –
472 с.
8. Шикин
Е.В. Кривые и
поверхности
на экране
компьютера /
Е.В. Шикин, Л.И.
Плисс. –
Диалог-МИФИ, 1996.
– 240 с.
9.
Короткий В.А.
Кубические
кривые в
инженерной геометрии
/ В.А. Короткий //
Геометрия и
графика. – 2020. Т. 8, №
3. – С. 3-24. – DOI: 10.12737/2308-4898-2020-3-24
10.
Завьялов Ю.С.
Сплайны в
инженерной
геометрии /
Ю.С. Завьялов,
В.А. Леус, В.А.
Скороспелов.
– М.: Машиностроение,
1985. – 224 с.
Irregular Curves in Engineering Geometry and Computer Graphics
Author: V.A. Korotkiy 1
South Ural State University (National Research University) “SUSU (NRU)”
1 ORCID: 0000-0002-5266-4701, ospolina@mail.ru
Abstract
Graphically-defined irregular curves are found in various engineering problems. To use such a curve in the design process, it is replaced (approximated) by an analytical function. The article considers traditional approach when a graphically-defined curve is approximated by cubic Bezier segments (with unit weight coefficients) connected to each other by the order of smoothness G2 (with a continuous change in curvature). It is shown that for planes, the well-known algebraic condition of a G2-smooth connection of Bezier segments reduces to the solution of an ordinary quadratic equation. An algorithm is obtained that can be used to control the shape of a planar composite Bezier curve without violating the specified order of smoothness. The algorithm differs in that it allows for variation of both directions of tangents at the junction points and the radii of curvature at the end points of the composite curve. In particular, the algorithm can be used to find the equation of a planar cubic Bezier segment defined by tangents and radii of curvature at their end points. The calculation of the coordinates of the control points of such a segment is reduced to solving a system of two quadratic equations or constructing the intersection points of two parabolas.
The problem of G2-smooth conjugation of two straight lines, a straight line and a circle, and two circles (with predetermined conjugation points) is considered. An example of construction of a G2-smooth closed contour touching given straight lines and having a given curvature at the closing point is presented. An experiment on the approximation of a physical spline of a composite cubic Bezier curve is performed. The approximation error was less than 2%.
Keywords: composite cubic Bezier curve, Bernstein polynomial, physical spline, curvature, approximation, smoothness, degree of freedom.
1. Glaeser G. Geometrie und ihre
Anwendungen in Kunst, Natur und Technik / G. Glaeser. – Springer Spektrum,
2014. – 508 pp.
–
DOI 10.1007/978-3-642-41852-5
2. Bezye P. Geometricheskiye metody // Matematika i
SAPR. 2.
Moscow,
Mir, 1989, p. 96-257. [in Russian].
3. Grigoryev M.I., Malozemov V.N.,
Sergeyev A.N.
Bernstein
polynomials and compound Bezier curves.
Zhurnal vychislitelnoy matematiki i
matematicheskoy fiziki [Journal of Computational Mathematics and Mathematical Physics],
2006. V. 46, I. 11: p. 1962-1971.
[in Russian].
4. Panchuk K.
Spline Curves Formation Given Extreme Derivatives / K. Panchuk, T. Myasoedova,
E. Lyubchinov. – Mathematics
2021, 9(1), 47.
https://doi.org/10.3390/math9010047
5. Rabotnov Yu. N. Soprotivleniye materialov [Strength of materials].
Moscow, 1963, 456 p. [in Russian].
6. Foks A., Pratt M. Vychislitel'naja
geometrija. Primenenie v proektirovanii i na proizvod-stve [Computing Geometry.
Application in Design and on Production], Moscow, Mir, 1982, 304 p. [in
Russian].
7. Golovanov N.N. Geometricheskoe
modelirovanie [Geometric Modeling]. Moscow, 2012. 472 p.
[in Russian].
8. Pliss L.I., Shikin E.V. Krivye i
poverkhnosti na ekrane komp'yutera [Curves and Surfaces for Computer Screen],
Moscow, Dialog-MIFI Publ., 1996, 240 p [in Russian].
9. Korotkiy W.A. Cubic curves in
engineering geometry. Geometriya i grafika [Geometry and graphics], 2020. V. 8.
I. 3: p. 3-24 (in Russian) - DOI: 10.12737/2308-4898-2020-3-24
[in Russian].
10. Zav'yalov YU.S., Leus V.A, Skorospelov
V.A. Splajny v inzhenernoj geometrii [Splines in engineering geometry], Moscow,
Mashinostroenie, 1985, 224 p [in Russian].