Конструирование пространственной кривой, составленной из рациональных кубических сегментов
Автор: Короткий В.А., Студенова Е.С.
Рубрика: Инженерная геометрия и компьютерная графика. Цифровая поддержка жизненного цикла изделий
Статья в выпуске: 4 т.24, 2024 года.
Бесплатный доступ
Рациональный кубический сегмент описывается формулой, подобной формуле Безье, но, в отличие от кривой Безье, координаты вершин характеристической ломаной рационального кубического сегмента дополняются весовыми коэффициентами.В статье рассмотрены две задачи. Первая задача: построение составной G2-гладкой кривой, проходящей через заданные в трехмерном пространстве точки и касающейся в этих точках наперед заданных направляющихпрямых. Гладкость G2 означает непрерывное изменение вектора кривизны вдоль конструируемой кривой (без скачков по модулю и направлению). Вторая задача: вставка кубического сегмента в разрыв между двумя фиксированными пространственными кубическими кривыми. Для решения поставленных задач разработаны конструктивные пошаговые графоаналитические алгоритмы. Отличительная особенность алгоритмов заключаетсяв существенном использовании средств и методов трехмерной компьютерной графики.Первую задачу предлагается решать последовательно: к первому сегменту добавляем второй сегмент, обеспечивая в стыковой точке общую касательную и общий вектор кривизны соединяемых сегментов. Ко второму сегменту добавляем следующий сегмент, также добиваясь совпадения касательных и векторов кривизныв стыковой точке, и т. д.Для решения второй задачи следует найти характеристическую ломаную вставляемого сегмента, исходя из условия совпадения соприкасающихся плоскостей в стыковых точках. Весовые коэффициенты сегмента вычисляются с учетом требования G2 гладкости.Представленные в статье примеры решения задач 1 и 2 транспарентны и могут быть использованы в учебном процессе.
Характеристическая ломаная, весовые коэффициенты, вектор кривизны, соприкасающаяся плоскость, графоаналитический алгоритм
Короткий адрес: https://sciup.org/147246051
IDR: 147246051 | DOI: 10.14529/build240410
Текст научной статьи Конструирование пространственной кривой, составленной из рациональных кубических сегментов
Введение и постановка задачи
Уравнение рационального кубического сегмента имеет вид [1] r ( t ) =
® 0 r 0 (1 - t )3 + 3 ® 1 r Q t (1 - t )2 + 3 ® 2 r P t 2 (1 - t ) + ® з Г 1 1 3 , (1)
O o (1 — t ) + 3 ® 1 t (1 — t ) + 3 ® 2 1 (1 — t ) I 0) 3 1
где параметр t изменяется в диапазоне [0, 1], а весовые коэффициенты ω0, …, ω3 могут принимать любые положительные значения. Векторы r 0 , r Q , r P , r 1 указывают узловые точки R 0 , Q , P , R 1 характеристической ломаной (рис. 1). При равенстве весовых коэффициентов кривая (1) вырождается в кубическую кривую Безье [2].

Рис. 1. Кубический сегмент
В статье рассматриваются две задачи.
Задача 1 . Через указанные в пространстве точки R 0, R 1, R 2, … с заданными в этих точках направляющими τ0, τ1, τ2, … требуется провести G2-гладкую составную кривую, касающуюся заданных направляющих (рис. 2). Гладкость G2 означает непрерывное изменение вектора кривизны вдоль кривой, без «скачков» по модулю и направлению [3, 4]. Направляющие прямые могут рассматриваться как элемент управления формой конструируемой кривой.
Задача 2 . В пространстве даны не связанные между собой кубические кривые R 0– R 1 и R 2– R 3 (рис. 3). Требуется найти кубический сегмент R 1– R 2, соединяющий заданные кривые («вставка сегмента»).
В научной литературе встречаются формулировки задач 1, 2, но конструктивные пошаговые алгоритмы их решения отсутствуют. Так, например, в работе [5, с. 153] исследуются условия G2-гладкого соединения кубических сегментов Безье, но результат представлен в аналитической форме, затрудняющей их практическую реализацию. Кроме того, на пояснительном чертеже [5, рис. 6.8] ошибочно показаны сегменты, в точке соединения которых вектор кривизны скачком меняет свое направление, то есть не обеспечивается условие G2-гладкости. В работе [6, с. 108] авторы ограничиваются констатацией очевидного факта, что соприкасающиеся плоскости кубических сегментов в точке их соединения должны совпадать.
Задача вставки сегмента упоминается в работе [5, с. 155], где предложено обеспечивать заданную кривизну на концах вставляемого сегмента посредством «подбора» весовых коэффициентов ω0, …, ω3, но алгоритм подбора не рассматривается.
Для решения поставленных задач авторами разработаны конструктивные пошаговые графоаналитические алгоритмы. Отличительная особенность предлагаемых алгоритмов заключается в существенном использовании средств и методов трехмерной компьютерной графики.
Рациональный кубический сегмент(общие сведения)
Векторы кривизны K (0) и K (1) в начальной R 0( t = 0) и конечной R 1( t = 1) точках рационально-

Рис. 2. Условие задачи 1

Рис. 3. Условие задачи 2
го кубического сегмента определяются по формулам
K (0) =
r (0) X r(0)
I r (0)|3 ,
K (1) =
r (1) х Г (1)
I r (1)|3 ,
где
r (0) = 3— ( r e - r 0 ), r (!) = 3 ^(г - r P )
^0
r(0) = (6W + 6W -18^)(re - r0) + 6^(rP - re), (3) w0 W0 ®0
WWWw
r(1) = (6— + 6— -184)(rp - ri) + 6—(re - rp )• w3 w3 W2
Выражения (3) получены в результате дифференцирования функции (1) по параметру t [5, с. 155]. Подставляя (3) в (2), после ряда алгебраических преобразований получаем:
-
2 W 0 W 2 R 0 Q X QP .
■K(0) ^o i ;
-
3 w 2 1 R 0 Q I3
-
2 WW QP X PR 1
-
3 w 2 | PR 1 I3 ’
Здесь R 0 Q , QP , PR 1 – векторы, соединяющие узловые точки характеристической ломаной сегмента (1). Если узловые точки отмечены на компьютерном 3D-макете, то векторные произведения, входящие в (4), могут быть определены графически. Например, для расчета модуля векторного произведения R 0 Q x QP достаточно построить (непосредственно на 3D-макете) параллелограмм со сторонами R 0 Q и QP , после чего определить (с помощью блока справочной информации используемого графического пакета) площадь этого параллелограмма [7].
Если зафиксирована характеристическая ломаная кубического сегмента (см. рис. 1) и задан вектор кривизны K (0) в его начальной точке R 0, то из (4) следует
Решение задачи 1
(графоаналитический алгоритм)
Требуется сформировать кривую, проходящую через наперед заданные точки R 0 , R 1 , R 2 , … и касающуюся в этих точках наперед заданных прямых τ 0 , τ 1 , τ 2 , … (см. рис. 2). Предлагается решать задачу последовательно: к первому сегменту R 0– R 1 добавляем второй сегмент R 1– R 2, обеспечивая в стыковой точке R 1 общую касательную и общий вектор кривизны соединяемых сегментов [8, 9]. К найденному сегменту R 1– R 2 добавляем следующий сегмент R 2 – R 3 , также добиваясь совпадения касательных и векторов кривизны в стыковой точке R 2 , и так далее.
Таким образом, решение задачи 1 сводится к многократному решению одной и той же задачи: построению кубического сегмента r i ( t ), проходящего через заданные граничные точки Ri -1, Ri , касающегося в заданных точках направляющих прямых τ i -1, τ i и имеющего в начальной точке наперед заданный вектор кривизны K i -1. Уравнение искомого сегмента будем искать в форме (1).
На начальный (первый) сегмент R 0– R 1 накладываются слабые требования: инцидентность заданным точкам R 0 , R 1 и соприкосновение с направляющими прямыми τ 0 , τ 1 . Для выполнения этих требований достаточно разместить управляющие точки Q 1 , P 1 характеристической ломаной R 0 Q 1 P 1 R 1 конструируемого сегмента на заданных касательных τ0, τ1 (рис. 4). Весовые коэффициенты ω0, …, ω3 первого сегмента могут быть назначены произвольно, по усмотрению конструктора.
w^=Wi^ RQL w 2 21 ^'| R „ Q x QP |
.

Рис. 4. Соединение сегментов
При выполнении условия (5) и при любом значении ω3 будет получена заданная кривизна K (0) в начале сегмента. Произвольно изменяя значения весовых коэффициентов ω0, ω1, ω2, ω3, но сохраняя расчетное значение (5), получаем множество рациональных кубических кривых (1) с одной и той же кривизной в начальной точке сегмента.
Если задан вектор кривизны K (1) в конечной точке R 1 сегмента (1), то из (4) следует:
Задав характеристическую ломаную и весовые коэффициенты, определяем, согласно (4), вектор кривизны в конечной точке R 1 первого сегмента:
К «(l) = 2 WW Q 1 P x P 1 R 1
3 w 2 | P 1 R 1 |3 ,
m. = V(1)|^ PR 1L w 2 21 V3I| QP x PR 1|
где надстрочный индекс в скобках означает номер сегмента. Модуль входящего в (7) векторного произведения Q 1 P 1 X P 1 R 1 находим графически, построив параллелограмм на отрезках Q 1 P 1 , P 1 R 1 и
При выполнении условия (6) и при любом значении ω 0 сохраняется заданная кривизна K (1)
в конце сегмента.
определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора P 1 R 1 также определяем графически. Подставляя найденные значения в (7), вычисляем модуль | K (1)(1)| вектора кривизны в конечной точ-
ке первого сегмента. Этот вектор направлен перпендикулярно соприкасающейся плоскости Е1( Q i P i R i ), причем векторы Q i P i , P i R i , K (1)(1) образуют правую тройку.
Таким образом, сформирован первый (начальный) сегмент r i( t ) искомой составной кривой, а также найден вектор кривизны K (1)(1) в его конечной точке. Визуализация сегмента выполняется средствами трехмерной компьютерной графики [i0, ii]. Для этого достаточно разложить векторную функцию (1) по осям координат x , y , z и запрограммировать построение графика параметрически заданной функции x ( t ), y ( t ), z ( t ) при изменении параметра t в диапазоне [0, 1].
Сформировав первый сегмент и определив вектор кривизны в его конечной точке, присоединяем к нему следующий (второй) сегмент в соответствии с изложенным ниже алгоритмом.
Шаг 1 (построение характеристической ломаной второго сегмента). Управляющие точки Q 2, P 2 характеристической ломаной R i Q 2 P 2 R 2 второго сегмента r 2( t ) должны быть инцидентны наперед заданным касательным т1, т2 (см. рис. 4), но для О2-гладкого соединения второго сегмента с ранее рассчитанным первым сегментом этого недостаточно. Необходимо обеспечить совпадение соприкасающихся плоскостей Е1(1) и Е1(2) соединяемых сегментов в стыковой точке R i. Соприкасающаяся плоскость первого сегмента Е1(1)( Q i P i R i) в точке R i определена самой точкой R i и положением зафиксированных ранее управляющих точек Q i, P i. Положение соприкасающейся плоскости второго сегмента Е1(2)( R i Q 2 P 2) определяется точками R i, Q 2, P 2. Чтобы соприкасающиеся плоскости совпали, требуется поместить управляющие точки Q 2 , P 2 второго сегмента в плоскость Е/^ Q i P i R i). Управляющая точка Q 2 на касательной т1 может быть указана произвольно, так как эта касательная лежит в соприкасающейся плоскости. В отличие от точки Q 2 , точка P 2 не может быть произвольно указана на касательной т2, так как она должна находиться одновременно как на т2, так и в соприкасающейся плоскости. Поэтому точку P 2 следует отметить на пересечении прямой т2 и соприкасающейся плоскости Е1(1): P 2 = Т 2 П Е (1). Эта типовая задача начертательной геометрии (построение точки пересечения прямой и плоскости) решается непосредственно на 3Э-макете средствами компьютерной графики.
Результат шага 1 : найдена характеристическая ломаная второго сегмента r 2( t ), исходя из условия совпадения соприкасающихся плоскостей Е1(1) и Ei(2) соединяемых сегментов в стыковой точке R i (см. рис. 4). Выполнение этого условия гарантирует коллинеарность векторов кривизны соединяемых сегментов r i ( t ) и r 2 ( t ) в точке стыка, но не обеспечивает ни равнонаправленности, ни совпадения модулей этих векторов.
Шаг 2 (расчет комплекса весовых коэффициентов второго сегмента). Комплекс весовых коэффициентов второго сегмента вычисляется в соответствии с (5):
= З^^ИТ^ОАл, ω 1 2 | R1Q2 × Q2P2 |
где модуль вектора кривизны |K(2)(0)| в начальной точке сегмента известен (равен модулю вектора кривизны |K(i)(1)| в конечной точке предыдущего сегмента). Как и на шаге 1, модуль входящего в (8) векторного произведения R1Q2 х Q2P2 находим графически, построив параллелограмм на отрезках R1Q 2, Q2P 2 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора RiQ2 также определяем графически. При выполнении условия (8) и при любом значении ю3 получаем заданную кривизну в начале сегмента.
Для обеспечения равнонаправленности векторов кривизны в стыковой точке необходимо потребовать, чтобы управляющие точки Qi, P2 соединяемых сегментов, лежащие в соприкасающейся плоскости Е1(1) = Е1(2), располагались по одну сторону от касательной т1 (см. рис. 4). Если указанное требование не выполнено, задача не имеет решения. В этом случае следует таким образом изменить положение направляющей прямой т2, чтобы точка P = Т2 П Е(1) оказалась по ту же сто рону от касательной т1, что и точка Q1.
Результат шага 2 : найден комплекс (8) весовых коэффициентов второго сегмента. Произвольно изменяя значения весовых коэффициентов ю0, ю1, ю2, ю з , но сохраняя расчетное значение (8), получаем множество рациональных кубических кривых вида (1) с наперед заданным модулем кривизны в начальной точке. Дополнительная возможность управления формой сегмента обусловлена вариативностью положения управляющей точки Q 2.
Шаг 3 (расчет вектора кривизны в конечной точке второго сегмента). Для присоединения ко второму сегменту следующего (третьего) сегмента надо рассчитать вектор кривизны K (2)(1) в конце второго сегмента. Этот вектор рассчитывается в соответствии с формулой (4):
(2) 2 ω 1 ω 3 Q 2 P 2 × P 2 R 2
3 ω 22 | P 2 R 2 |3
.
Вектор K(2)(1) перпендикулярен плоскости Е2(2)( Q 2 P2 R 2), соприкасающейся со вторым сегментом в его конечной точке R2. Как и на предыдущих шагах алгоритма, модуль входящего в (9) векторного произведения Q2P2 × P2R2 находим графиче- ски, построив параллелограмм на отрезках Q2P2, P2R2 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора P2R2 также определяем графи- чески.
Результат шага 3 : определен вектор кривизны в конечной точке второго сегмента. Этот вектор необходим для G2-гладкого подключения ко второму сегменту следующего (третьего) сегмента.
Многократно повторяя шаги 1…3 рассмотренного алгоритма, получаем полное решение задачи 1 (построение G2-гладкой составной кривой, проходящей через заданный набор точек и касающейся в этих точках заданных направляющих прямых).
Пример 1
Требуется соединить (с гладкостью G2) кубические сегменты r i ( t ) и r 2( t ). Кубический сегмент r i ( t ) зафиксирован. Он задан граничными точками R 0(20; 35; 10), R 1 (50; 35; 20) и управляющими точками Q 1 (30; 25; -5), P 1 (33; 47; 21). Все весовые коэффициенты первого сегмента приняты равными единице.
Второй кубический сегмент задан граничными точками R 1 , R 2(80; 0; 30), а также общей для соединяемых сегментов касательной т1. В конечной точке R 2 второго сегмента задана вертикальная касательная т2 (рис. 5). Управляющие точки Q 2, P 2 и весовые коэффициенты второго сегмента неизвестны. Их следует определить из условия G2-гладкого соединения сегментов r 1( t ) и r 2( t ).
Решение . Найдем уравнение и выполним визуализацию первого сегмента r 1( t ). Подставляем координаты узловых точек и значения весовых коэффициентов этого сегмента в векторную функцию (1) и раскладываем ее по осям координат. Учитывая, что (1 - 1 )3 + 3 t (1 - 1 )2 + 3 1 2(1 - 1 ) + 1 3 = 1 при любом значении параметра t в диапазоне [0, 1], получаем параметрически заданную скалярную функцию:
x ( t ) = 20(1 - 1 )3 + 90 1 (1 - 1 )2 + 99 1 2 (1 - 1 ) + 50 1 3;
y 1 ( t ) = 35(1 - 1 )3 + 75 t (1 - 1 )2 + 141 1 2(1 - 1 ) + 35 t 3; (10) z 1 ( t ) = 10(1 - 1 )3 - 15 t (1 - 1 )2 + 63 1 2(1 - 1 ) + 20 1 3.
Уравнения (10) позволяют выполнить визуализацию сегмента r 1( t ) в любой компьютерной программе, дающей возможность пользователю программировать построение графика аналитически заданной функции.
Учитывая, что весовые коэффициенты сегмента r1(t) приняты равными единице, получаем, согласно (4), вектор кривизны этого сегмента в конечной точке R1:
KW = 2 Q 1 P 1 х PR . (11)
3 | P 1 R 1 |3
Модуль входящего в (11) векторного произ- ведения равен площади параллелограмма, построенного на отрезках Q1P1, P1R1. Эта площадь и длина отрезка P1R1 определены с помощью справочных средств компьютерной графики: S1 = 670,9881; P1R1 = 20,8327 (см. рис. 5). Подставляя найденные величины в (11), получаем: |K(1)(1)| = 0,049475.
Проверка . Это же значение модуля кривизны в конечной точке сегмента r 1( t ) получается, если использовать известную [3] формулу
I K | 2 =
( z y - y z )2 + ( x z - zx )2 + ( yx - xy )
, (12)
( x 2 + y 2 + Z 2)3
где значения входящих в (12) производных определяются дифференцированием функции (10) с последующей подстановкой t = 1.
Найдем управляющие точки Q 2, P 2 характеристической ломаной второго сегмента r 2( t ). Точка Q 2 может быть произвольно размещена на касательной т1, например, на расстоянии R 1 Q 2 = 20. Точку P 2 находим на пересечении вертикальной касательной т2 с плоскостью E1(1)( Q 1 P 1 R 1) (см. шаг 1 алгоритма). С помощью справочных средств компьютерной графики определяем координаты точек Q 2 (66,2601; 23,3853; 19,1588) и P 2 (80; 0; 3,2317).
По формуле (8) рассчитываем комплекс весовых коэффициентов второго сегмента:
^2 = 3 I K (2) (0) I R 1 Q
® 2 2 ^‘ir^ х Q 2 P 2 I
.
Здесь | K (2)(0)| = | K (1)(1)| = 0,049475, R 1 Q 2 = 20, а модуль векторного произведения равен площади S2 = 370,4553 параллелограмма, построенного на сторонах R 1 Q 2, Q 2 P 2 (см. рис. 5).
Подставляя указанные значения в (13), полу- ю ю чаем: 0 2 = 1,6026. Отдельные значения весо- ю2
вых коэффициентов могут варьироваться. Положим, например, ю0 = 1,6026, ю1 = ю2 = 1. Значение весового коэффициента ю3 не влияет на кривизну в

Рис. 5. К примеру 1
начальной точке сегмента, поэтому ω 3 может задаваться произвольно. При изменении ω 3 изменяется форма конструируемого сегмента r 2 ( t ).
Для визуализации сегмента r 2 ( t ) подставляем координаты узловых точек и значения весовых коэффициентов этого сегмента в векторную функцию (1) и раскладываем ее по осям координат x , y , z . Получаем параметризованное уравнение сегмента: x 2 ( t ) = — [80,13(1 - 1 )3 + 198,7803 1 (1 - 1 )2 +
Ф ( t )
+ 240 1 2(1 - 1 ) + 80 ® 3 1 3];
y 2 ( t ) = —[56,091(1 - 1 )3 + 70,1559 1 (1 - 1 )2]; (14)
-
2 ф ( t )
z 2 ( t ) = — [32,052(1 - 1 )3 + 57,4764 1 (1 - 1 )2 +
Ф ( t )
+9,695112(1 -1) + 30®313], где ф(t) = 1,6026(1 -1)3 + 3t(1 -1)2 + 312 (1 -1) + ю313. Параметр t меняется в диапазоне [0, 1]. Уравнения (14) позволяют выполнить визуализацию сегмента r2(t). Присваивая весовому коэффициенту ω3 различные значения, получаем сегменты r2(t) различной формы, но с неизменной кривизной в начальной точке (см. рис. 5).
Решение задачи 2
(графоаналитический алгоритм)
Не связанные между собой рациональные кубические сегменты r 1( t ) и r 3( t ) вида (1) зафиксированы своими характеристическими ломаными и весовыми коэффициентами (рис. 6). Требуется найти кубический сегмент r 2( t ), гладко (с гладкостью G2) соединяющий заданные сегменты.
Согласно (4), графоаналитически определяем вектор кривизны K (1)(1) в конечной точке R 1 первого сегмента r 1 ( t ). Аналогично определяем вектор кривизны K (3)(0) в начальной точке R 2 третьего сегмента r 3 ( t ). Вставляемый сегмент r 2 ( t ) должен иметь точно такие же векторы кривизны в своих граничных точках R 1 и R 2 .
Шаг 1 (построение характеристической ломаной). Управляющие точки Q 2, P 2 характеристической ломаной R 1 Q 2 P 2 R 2 вставляемого сегмента r 2( t ) должны быть инцидентны касательным τ1, τ2. Для G2-гладкого соединения этого недостаточно. Необходимо обеспечить совпадение соприкасающихся плоскостей соединяемых сегментов в точках стыка R 1 , R 2 . В точке R 1 соприкасающаяся плоскость Σ 1 (1) первого сегмента определена точками R 1 , Q 1 , P 1 . Соприкасающаяся плоскость Σ 1 (2) вставляемого сегмента определена точками R 1 , Q 2 , P 2. Эти плоскости должны совпадать:
SP( R 1 Q 1 P ) =E < 2)( R 1 Q 2 P 2). (15)
В точке R 2 получаем аналогичное условие:
s 2 2)( R 2 q 2 P 2 ) = e 2 3) ( R 2 Q 3 P 3 ). (16)
Здесь надстрочный индекс (в скобках) обозначает номер сегмента, а подстрочный индекс – номер узловой точки Ri .
Таким образом, искомые управляющие точки Q2, P2 вставляемого сегмента должны находиться на касательных τ1, τ2 и удовлетворять условиям (15), (16). Этот комплекс требований выполняется, если точки Q2, P2 находятся на пересечении каса- тельных с соприкасающимися плоскостями:
Q 2 = T 1 П ^ 3)( R 2 Q 3 P 3 ), P 2 = ' П ^Ц( RQ 1 P 1 ). (17)
Для обеспечения равнонаправленности векторов кривизны в стыковой точке R1 требуется, чтобы управляющие точки Q1, P2 сегментов r1(t) и r2(t), лежащие в соприкасающейся плоскости Σ1(1) = Σ1(2), располагались по одну сторону от касательной τ1. Аналогичным образом для обеспечения равнонаправленности векторов кривизны в стыковой точке R2 требуется, чтобы управляющие точки Q2, P3 сегментов r2(t) и r3(t), лежащие в соприкасающейся плоскости Σ2(2) = Σ2(3), располагались по одну сторону от касательной τ2.
Если указанные требования не выполнены, задача не имеет решения.
Шаг 2 (расчет весовых коэффициентов вставляемого сегмента). Согласно (8), в начальной точке вставляемого сегмента r2(t) должно выполнять- ся условие
= I'K^nFRQJrFi, <'8’ й| 2 I R1Q2 x Q2P2 I где модуль вектора кривизны |K(2)(0)| известен (равен модулю вектора кривизны |K(1)(1)| в конеч- ной точке первого сегмента). Модуль входящего в
(18) векторного произведения R1Q2 x Q2P2 нахо- дим графически, построив параллелограмм на отрезках R1Q2, Q2P2 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора R1Q2 также определяем графически.
Согласно (9), в конечной точке вставляемого сегмента должно выполняться условие
= 3| K (2) (1)| | P 2 R 2 |3 ,
® 2 21 2 । Q 2 P 2 x P 2 R 2 I
где модуль вектора кривизны | K (2)(1)| равен модулю вектора кривизны | K (3)(0)| в начальной точке третьего сегмента. Как и ранее, модули векторов и векторных произведений, входящих в (19), определяем графически.
При выполнении условий (18), (19) получаем искомый сегмент r 2( t ), гладко соединяющий сегменты r 1( t ) и r 3( t ).
Примечание. При произвольном изменении значений отдельных весовых коэффициентов, входящих в (18), (19), форма вставляемого сегмента не меняется, то есть задача G2-гладкой вставки рационального кубического сегмента (1) имеет единственное решение.
Пример 2
Даны кубические сегменты r 1 ( t ) и r 3 ( t )
(рис. 7а). Требуется найти кубический сегмент

а) б)
Рис. 7. К примеру 2
r 2 ( t ), гладко (с гладкостью G2) соединяющий заданные сегменты.
Рациональный кубический сегмент r 1 ( t ) задан характеристической ломаной R 0 (0; 65; 0)– Q 1 (80; 65; 0)– P 1 (6; 49; 33)– R 1 (20; 35; 10) и весовыми коэффициентами ω 0 = 2; ω 1 = 6; ω 2 = 1,5; ω 3 = 0,75. Модуль кривизны сегмента в конечной точке равен | K (1)(1)| = 0,09316.
Сегмент r 3( t ) задан как кубическая кривая Безье (все весовые коэффициенты равны единице) с характеристической ломаной R 2(50; 35; 20)– Q 3(62; 26; 19)– P 3(80; 0; 0)– R 3(80; 0; 30). Модуль кривизны сегмента в его начальной точке равен | K (3)(0)| = 0,05808.
Решение
Согласно (17), находим управляющие точки Q 2 (35,7087; 19,2913; –15,8071), P 2 (27,3414; 51,9939; 21,8882) характеристической ломаной искомого сегмента r 2( t ). Чтобы рассчитать комплексы весовых коэффициентов (18), (19), определяем (с помощью справочных средств компьютерной графики) модули входящих в эти выражения векторов: R 1 Q 2 = 34,0519; P 2 R 2 = 28,3861; S 1 = I R 1 Q 2 * Q 2 P 2 I = 592,5189; S 2 = | Q 2 P 2 * P 2 R 2 | = 1181,6983. Подставляя найденные значения в (18), (19), получаем:
^2 = 9,3123; ^M l = 1,6864. (20) M f ® 2
Произвольно назначаем ω1 = ω2 = 1. Согласно условиям (20), получаем ω 0 = 9,3123; ω 3 = 1,6864.
Подставляем координаты точек R 1 , Q 2 , P 2 , R 2 и значения весовых коэффициентов в векторное уравнение (1). Раскладывая (1) по осям координат, получаем скалярные уравнения искомого сегмента r 2 ( t ):
x ( t ) = J- [186,246(1 - 1 )3 + 107,1261 t (1 - 1 )2 +
-
2 Ф 2 ( t )
+ 82,0242 1 2(1 - 1 ) + 84,32 1 3];
y 2 ( t ) = 1 |325,9305(l - 1 )3 + 57,8739 1 (1 - 1 )2 +
Ф 2 ( t )
+ 155,9817 1 2(1 - 1 ) + 59,024 1 3];
z 2 ( t ) = [93,123(1 - 1 )3 - 47,4213 t (1 - 1 )2 +
-
2 Ф 2 ( t )
+65,664612(1 -1) + 33,72813], где
Ф 2 ( t ) = 9,3123(1 - t )3 + 3 t (1 - t )2 + 3 t 2 (1 - t ) + 1,6864 t 3. Параметр t меняется в диапазоне [0, 1]. Визуализация сегмента r 2 ( t ) представлена на рис. 7б.
Заключение
Предложен графоаналитический алгоритм, позволяющий формировать составную G2-гладкую кривую, проходящую через наперед заданные в трехмерном пространстве точки и касающуюся в этих точках наперед заданных прямых.
Предложен графоаналитический алгоритм вставки кубического сегмента, гладко (с гладкостью G2) соединяющего наперед заданные кубические кривые.
Отличительная особенность предложенных алгоритмов состоит в существенном использовании справочных средств трехмерной компьютерной графики.
Представленные в статье примеры решения задач 1 и 2 транспарентны и могут быть использованы в учебном процессе.
Список литературы Конструирование пространственной кривой, составленной из рациональных кубических сегментов
- Голованов Н.Н. Геометрическое моделирование. М.: Изд-во физико-математической литературы, 2012. 472 с.
- Безье П. Геометрические методы // Математика и САПР. 2. М.: Мир, 1989. С. 96-257.
- Прасолов В.В., Тихомиров В.М. Геометрия. М.: Изд-во МЦНМО, 2013. 336 с.
- Панчук К.Л., Юрков В.Ю., Кайгородцева Н.В. Математические основы геометрического моделирования кривых линий: учеб. пособие. Омск: Изд-во ОмГТУ, 2020. 198 с.
- Фокс А., Пратт М. Вычислительная геометрия. Применение в проектировании и на производстве. М.: Мир, 1982. 304 с.
- Шикин Е.В., Плисс Л.И. Кривые и поверхности на экране компьютера. М.: Диалог-МИФИ, 1996. 240 с.
- Короткий В.А. Конструктивные алгоритмы формирования составных кубических кривых Безье в пространстве и на плоскости // Омский научный вестник. 2022. № 2 (182). С. 10-16. DOI: 10.25206/18138225-2022-182-10-16
- Короткий В.А. Конструирование в2-гладкой составной кривой на основе кубических сегментов Безье // Геометрия и графика. 2021. Т. 9, № 2. С. 12-28. DOI: 10.12737/2308-4898-2021-9-2-12-28
- Короткий В.А. Составные геометрически гладкие кубические кривые Эрмита в пространстве и на плоскости // Вестник компьютерных информационных технологий. 2022. Т. 19, № 4 (214). С. 20-32. DOI: 10.14489/vkit.2022.04.pp.020-032
- Короткий В.А. Незакономерные кривые в инженерной геометрии и компьютерной графике // Научная визуализация. 2022. Т. 14, № 1. С. 1-17. DOI: 10.26583/sv.14.1.01
- Короткий В.А. Кубические кривые в инженерной геометрии // Геометрия и графика. 2020. Т. 8, № 3. С. 3-24. DOI: 10.12737/2308-4898-2020-3-24