Научная статья
УДК 514.851
DOI: 10.14529/ЬшИ240410
КОНСТРУИРОВАНИЕ ПРОСТРАНСТВЕННОЙ КРИВОЙ, СОСТАВЛЕННОЙ ИЗ РАЦИОНАЛЬНЫХ КУБИЧЕСКИХ СЕГМЕНТОВ
В.А. Короткий, [email protected] Е.С. Студенова, [email protected]
Южно-Уральский государственный университет, Челябинск, Россия
Аннотация. Рациональный кубический сегмент описывается формулой, подобной формуле Безье, но, в отличие от кривой Безье, координаты вершин характеристической ломаной рационального кубического сегмента дополняются весовыми коэффициентами.
В статье рассмотрены две задачи. Первая задача: построение составной 02-гладкой кривой, проходящей через заданные в трехмерном пространстве точки и касающейся в этих точках наперед заданных направляющих прямых. Гладкость 02 означает непрерывное изменение вектора кривизны вдоль конструируемой кривой (без скачков по модулю и направлению). Вторая задача: вставка кубического сегмента в разрыв между двумя фиксированными пространственными кубическими кривыми. Для решения поставленных задач разработаны конструктивные пошаговые графоаналитические алгоритмы. Отличительная особенность алгоритмов заключается в существенном использовании средств и методов трехмерной компьютерной графики.
Первую задачу предлагается решать последовательно: к первому сегменту добавляем второй сегмент, обеспечивая в стыковой точке общую касательную и общий вектор кривизны соединяемых сегментов. Ко второму сегменту добавляем следующий сегмент, также добиваясь совпадения касательных и векторов кривизны в стыковой точке, и т. д.
Для решения второй задачи следует найти характеристическую ломаную вставляемого сегмента, исходя из условия совпадения соприкасающихся плоскостей в стыковых точках. Весовые коэффициенты сегмента вычисляются с учетом требования 02 гладкости.
Представленные в статье примеры решения задач 1 и 2 транспарентны и могут быть использованы в учебном процессе.
Ключевые слова: характеристическая ломаная, весовые коэффициенты, вектор кривизны, соприкасающаяся плоскость, графоаналитический алгоритм
Для цитирования. Короткий В.А., Студенова Е.С. Конструирование пространственной кривой, составленной из рациональных кубических сегментов // Вестник ЮУрГУ. Серия «Строительство и архитектура». 2024. Т. 24, № 4. С. 72-79. БО!: 10.14529/ЬшМ240410
Original article
DOI: 10.14529/build240410
CONSTRUCTION OF A SPATIAL CURVE COMPOSED OF RATIONAL CUBIC SEGMENTS
V.A. Korotkij, [email protected]
E.S. Studenova, [email protected]
South Ural State University, Chelyabinsk, Russia
Abstract. The paper describes a rational cubic segment by a formula similar to the Bezier formula, but, unlike this formula, the coordinates of the vertices of the characteristic broken line of a rational cubic segment are supplemented with weighting coefficients. The paper considers two problems. The first task is to construct a composite G2-smooth curve passing through points given in three-dimensional space and touching pre-specified directing lines at these points. Smoothness G2 means a continuous change in the curvature vector along the constructed curve (without jumps in magnitude and direction). The second task is to insert a cubic segment into the gap between two fixed spatial cubic curves. To solve the problems, constructive step-by-step graphic-analytical algorithms have been developed. A distinctive feature of the proposed algorithms is the significant use of tools and methods of three-dimensional computer graphics. The paper proposes to solve the first problem sequentially: we add a second segment to the first segment, providing a common tangent and a common curvature vector of the connected segments at the joint point. We add the next segment to the second segment, also ensuring that the tangents and curvature vectors at the joint point coincide.
© Короткий В.А., Студенова Е.С., 2024.
To solve the second problem, it is necessary to find the characteristic broken line of the inserted segment based on the condition of coincidence of the touching planes at the joint points. The segment weights are calculated taking into account the G2 smoothness requirement. The examples of solving problems 1 and 2 presented in the paper are transparent and can be used in the educational process.
Keywords: characteristic broken line; weighting coefficients; curvature vector; touching plane; graphic-analytical algorithm
For citation. Korotkij V.A., Studenova E.S. Construction of a spatial curve composed of rational cubic segments. Bulletin of the South Ural State University. Ser. Construction Engineering and Architecture. 2024;24(4):72-79. (in Russ.). DOI: 10.14529/build240410
Введение и постановка задачи Уравнение рационального кубического сегмента имеет вид [1]
r(t ) =
ю0г0(1 -1)3 + 3<Bjre/(1 -1)2 + 3ю2Гр/2(1 -1) + rn3r1t3 , (1) ю0(1 -1 )3 + 3ro1t(1 -1)2 + 3ю2/ 2(1 -1 ) + rn3t3 где параметр t изменяется в диапазоне [0, 1], а весовые коэффициенты œ0, ..., œ3 могут принимать любые положительные значения. Векторы r0, Tq, rP, r1 указывают узловые точки R0, Q, P, R1 характеристической ломаной (рис. 1). При равенстве весовых коэффициентов кривая (1) вырождается в кубическую кривую Безье [2].
Рис. 1. Кубический сегмент
В статье рассматриваются две задачи.
Задача 1. Через указанные в пространстве точки R0, R1, R2, ... с заданными в этих точках направляющими т0, XI, т2, ... требуется провести в2-гладкую составную кривую, касающуюся заданных направляющих (рис. 2). Гладкость в2 означает непрерывное изменение вектора кривизны вдоль кривой, без «скачков» по модулю и направлению [3, 4]. Направляющие прямые могут рассматриваться как элемент управления формой конструируемой кривой.
Рис. 2. Условие задачи 1
Задача 2. В пространстве даны не связанные между собой кубические кривые R0-Rl и R2-R3 (рис. 3). Требуется найти кубический сегмент R1-R2, соединяющий заданные кривые («вставка сегмента»).
В научной литературе встречаются формулировки задач 1, 2, но конструктивные пошаговые алгоритмы их решения отсутствуют. Так, например, в работе [5, с. 153] исследуются условия в2-гладкого соединения кубических сегментов Безье, но результат представлен в аналитической форме, затрудняющей их практическую реализацию. Кроме того, на пояснительном чертеже [5, рис. 6.8] ошибочно показаны сегменты, в точке соединения которых вектор кривизны скачком меняет свое направление, то есть не обеспечивается условие в2-гладкости. В работе [6, с. 108] авторы ограничиваются констатацией очевидного факта, что соприкасающиеся плоскости кубических сегментов в точке их соединения должны совпадать.
Задача вставки сегмента упоминается в работе [5, с. 155], где предложено обеспечивать заданную кривизну на концах вставляемого сегмента посредством «подбора» весовых коэффициентов Юо, ., ю3, но алгоритм подбора не рассматривается.
Для решения поставленных задач авторами разработаны конструктивные пошаговые графоаналитические алгоритмы. Отличительная особенность предлагаемых алгоритмов заключается в существенном использовании средств и методов трехмерной компьютерной графики.
Рациональный кубический сегмент
(общие сведения)
Векторы кривизны К(0) и К(1) в начальной R0(t = 0) и конечной R1(t = 1) точках рационально-
Рис. 3. Условие задачи 2
го кубического сегмента определяются по формулам
К(0) = , К(1) = , (2)
I г(0) |
I г (1) I
где
r(0) = 3-4rß - ro), r(1) = 3(ri - rP),
r(0) = (6- + 6-2 -18-2)(rß - r,) + 6-2(rP - re), (3)
0
u0
u0
-
0
■■/14 ю®2ч/ ч ч
Г (1) = + б-2 -18 2)(Гр - Г1) + " Гр).
ю3 ю3 ю2 Ю3
Выражения (3) получены в результате дифференцирования функции (1) по параметру / [5, с. 155]. Подставляя (3) в (2), после ряда алгебраических преобразований получаем:
К(0) = 2 -0-2 R0Q х QP .
3 -I2 |R0QI3 ; 2 -i-3 QP х PRX
(4)
3
—
PR
Здесь ЯоО, ОР, РИ1 - векторы, соединяющие узловые точки характеристической ломаной сегмента (1). Если узловые точки отмечены на компьютерном 3 Б-макете, то векторные произведения, входящие в (4), могут быть определены графически. Например, для расчета модуля векторного произведения К0О х 0Р достаточно построить (непосредственно на 3Б-макете) параллелограмм со сторонами К0О и ОР, после чего определить (с помощью блока справочной информации используемого графического пакета) площадь этого параллелограмма [7].
Если зафиксирована характеристическая ломаная кубического сегмента (см. рис. 1) и задан вектор кривизны К(0) в его начальной точке К0, то из (4) следует
,3
(5)
-0-. = 3|K(0)|- |R0QI
2
IR0Q х QP I
При выполнении условия (5) и при любом значении ю3 будет получена заданная кривизна К(0) в начале сегмента. Произвольно изменяя значения весовых коэффициентов ю0, ю1, ю2, ю3, но сохраняя расчетное значение (5), получаем множество рациональных кубических кривых (1) с одной и той же кривизной в начальной точке сегмента.
Если задан вектор кривизны К(1) в конечной точке К1 сегмента (1), то из (4) следует:
,3
—J—3 3
= -| K(1) |
I PR
I QP х PRX|
(6)
При выполнении условия (6) и при любом значении ю0 сохраняется заданная кривизна К(1) в конце сегмента.
Решение задачи 1 (графоаналитический алгоритм)
Требуется сформировать кривую, проходящую через наперед заданные точки К0, К1, К2, ... и касающуюся в этих точках наперед заданных прямых т0, т1, т2, ... (см. рис. 2). Предлагается решать задачу последовательно: к первому сегменту К0-К1 добавляем второй сегмент К1-К2, обеспечивая в стыковой точке К1 общую касательную и общий вектор кривизны соединяемых сегментов [8, 9]. К найденному сегменту К1-К2 добавляем следующий сегмент К2-К3, также добиваясь совпадения касательных и векторов кривизны в стыковой точке К2, и так далее.
Таким образом, решение задачи 1 сводится к многократному решению одной и той же задачи: построению кубического сегмента г,(/), проходящего через заданные граничные точки К1-ь Кь касающегося в заданных точках направляющих прямых т1-1, т,- и имеющего в начальной точке наперед заданный вектор кривизны К1-1. Уравнение искомого сегмента будем искать в форме (1).
На начальный (первый) сегмент К0-К1 накладываются слабые требования: инцидентность заданным точкам К0, К1 и соприкосновение с направляющими прямыми т0, т1. Для выполнения этих требований достаточно разместить управляющие точки О1, Р1 характеристической ломаной К0О1Р1К1 конструируемого сегмента на заданных касательных т0, т1 (рис. 4). Весовые коэффициенты ю0, ..., ю3 первого сегмента могут быть назначены произвольно, по усмотрению конструктора.
Рис. 4. Соединение сегментов
Задав характеристическую ломаную и весовые коэффициенты, определяем, согласно (4), вектор кривизны в конечной точке К1 первого сегмента:
K(1W = 2 —— Q1P1 х P1R1
( ) 1 2 3 —
(7)
,2 | |3
где надстрочный индекс в скобках означает номер сегмента. Модуль входящего в (7) векторного произведения х РХКХ находим графически, построив параллелограмм на отрезках О1Р1, Р1К1 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора Р1Я1 также определяем графически. Подставляя найденные значения в (7), вычисляем модуль |К(1)(1)| вектора кривизны в конечной точ-
—
1
2
—
2
ке первого сегмента. Этот вектор направлен перпендикулярно соприкасающейся плоскости I,l(QlPlRl), причем векторы Р^, К(1)(1) образуют правую тройку.
Таким образом, сформирован первый (начальный) сегмент г1(/) искомой составной кривой, а также найден вектор кривизны К(1)(1) в его конечной точке. Визуализация сегмента выполняется средствами трехмерной компьютерной графики [10, 11]. Для этого достаточно разложить векторную функцию (1) по осям координат х, у, z и запрограммировать построение графика параметрически заданной функции х(Г), у(0, z(t) при изменении параметра t в диапазоне [0, 1].
Сформировав первый сегмент и определив вектор кривизны в его конечной точке, присоединяем к нему следующий (второй) сегмент в соответствии с изложенным ниже алгоритмом.
Шаг 1 (построение характеристической ломаной второго сегмента). Управляющие точки Q2, P2 характеристической ломаной R1Q2P2R2 второго сегмента г2(0 должны быть инцидентны наперед заданным касательным т1, т2 (см. рис. 4), но для в2-гладкого соединения второго сегмента с ранее рассчитанным первым сегментом этого недостаточно. Необходимо обеспечить совпадение соприкасающихся плоскостей Е/1" и Е1(2) соединяемых сегментов в стыковой точке R\. Соприкасающаяся плоскость первого сегмента Е/1-^^^) в точке R\ определена самой точкой R\ и положением зафиксированных ранее управляющих точек Qь P\. Положение соприкасающейся плоскости второго сегмента Е^^Я^^^ определяется точками Rь Q2, P2. Чтобы соприкасающиеся плоскости совпали, требуется поместить управляющие точки Q2, P2 второго сегмента в плоскость Е/1^^^). Управляющая точка Q2 на касательной т1 может быть указана произвольно, так как эта касательная лежит в соприкасающейся плоскости. В отличие от точки Q2, точка P2 не может быть произвольно указана на касательной т2, так как она должна находиться одновременно как на т2, так и в соприкасающейся плоскости. Поэтому точку P2 следует отметить на пересечении прямой т2 и соприкасающейся плоскости Е1(1): Р2 = т2 П Е(1). Эта типовая задача начертательной геометрии (построение точки пересечения прямой и плоскости) решается непосредственно на 3Б-макете средствами компьютерной графики.
Результат шага 1: найдена характеристическая ломаная второго сегмента г2(^, исходя из условия совпадения соприкасающихся плоскостей Е1(1) и Е1(2) соединяемых сегментов в стыковой точке R1 (см. рис. 4). Выполнение этого условия гарантирует коллинеарность векторов кривизны соединяемых сегментов г^) и г2(^ в точке стыка, но не обеспечивает ни равнонаправленности, ни совпадения модулей этих векторов.
Шаг 2 (расчет комплекса весовых коэффициентов второго сегмента). Комплекс весовых коэффициентов второго сегмента вычисляется в соответствии с (5):
Ю0ю2 _ 3 1^(2),
■=-|К (2)(0)|-
I "^2
(8)
<ВГ 2' | »102 X 02?2 1
где модуль вектора кривизны |К(2)(0)| в начальной точке сегмента известен (равен модулю вектора кривизны |К(1)(1)| в конечной точке предыдущего сегмента). Как и на шаге 1, модуль входящего в (8) векторного произведения Я102 х 02Р2 находим графически, построив параллелограмм на отрезках R1Q2, Q2P2 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора Я102 также определяем графически. При выполнении условия (8) и при любом значении ю3 получаем заданную кривизну в начале сегмента.
Для обеспечения равнонаправленности векторов кривизны в стыковой точке необходимо потребовать, чтобы управляющие точки Q1, P2 соединяемых сегментов, лежащие в соприкасающейся плоскости Е1(1) = Е1(2), располагались по одну сторону от касательной т1 (см. рис. 4). Если указанное требование не выполнено, задача не имеет решения. В этом случае следует таким образом изменить положение направляющей прямой т2,
чтобы точка Р2 = т2 П Е(1) оказалась по ту же сторону от касательной т1, что и точка Q1.
Результат шага 2: найден комплекс (8) весовых коэффициентов второго сегмента. Произвольно изменяя значения весовых коэффициентов ю0, ю1, ю2, ю3, но сохраняя расчетное значение (8), получаем множество рациональных кубических кривых вида (1) с наперед заданным модулем кривизны в начальной точке. Дополнительная возможность управления формой сегмента обусловлена вариативностью положения управляющей точки Q2.
Шаг 3 (расчет вектора кривизны в конечной точке второго сегмента). Для присоединения ко второму сегменту следующего (третьего) сегмента надо рассчитать вектор кривизны К(2)(1) в конце второго сегмента. Этот вектор рассчитывается в соответствии с формулой (4):
К(2)(1) = 2 Ю1Ю3 02Р2 Х Р2К2
-з 2
3 ю2 I '2"2
1РК,
(9)
Вектор К(2)(1) перпендикулярен плоскости Е2(2)(Q2P2R2), соприкасающейся со вторым сегментом в его конечной точке R2. Как и на предыдущих шагах алгоритма, модуль входящего в (9) векторного произведения 02Р2 х Р2"2 находим графически, построив параллелограмм на отрезках Q2P2, P2R2 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора Р2Я2 также определяем графически.
(2)
Результат шага 3: определен вектор кривизны в конечной точке второго сегмента. Этот вектор необходим для в2-гладкого подключения ко второму сегменту следующего (третьего) сегмента.
Многократно повторяя шаги 1...3 рассмотренного алгоритма, получаем полное решение задачи 1 (построение в2-гладкой составной кривой, проходящей через заданный набор точек и касающейся в этих точках заданных направляющих прямых).
Пример 1
Требуется соединить (с гладкостью в2) кубические сегменты г^/) и г2(/). Кубический сегмент
зафиксирован. Он задан граничными точками R0(20; 35; 10), R1(50; 35; 20) и управляющими точками Q1(30; 25; -5), P\(33; 47; 21). Все весовые коэффициенты первого сегмента приняты равными единице.
Второй кубический сегмент задан граничными точками R\, R2(80; 0; 30), а также общей для соединяемых сегментов касательной т1. В конечной точке R2 второго сегмента задана вертикальная касательная т2 (рис. 5). Управляющие точки Q2, P2 и весовые коэффициенты второго сегмента неизвестны. Их следует определить из условия в2-гладкого соединения сегментов г^/) и г2(/).
Решение. Найдем уравнение и выполним визуализацию первого сегмента г^/). Подставляем координаты узловых точек и значения весовых коэффициентов этого сегмента в векторную функцию (1) и раскладываем ее по осям координат.
согласно (4), вектор кривизны этого сегмента в конечной точке R\:
Учитывая, что
(1-1)3 + 3t(1-1)2 + 3t2(1 -t) +13 = 1
при любом значении параметра t в диапазоне [0, 1], получаем параметрически заданную скалярную функцию:
х1 (/) = 20(1 - /)3 + 90/(1 - / )2 + 99/2 (1 - /) + 50/3; у1 (/) = 35(1 -/)3 + 75/(1 -/)2 +141/2(1 -/) + 35/3; (10) z1 (/) = 10(1 -/)3 -15/(1 - /)2 + 63/2 (1 - /) + 20/3.
Уравнения (10) позволяют выполнить визуализацию сегмента г\(t) в любой компьютерной программе, дающей возможность пользователю программировать построение графика аналитически заданной функции.
Учитывая, что весовые коэффициенты сегмента ^(0 приняты равными единице, получаем,
K(1)(1) = 2 QAх P1R1
(ii)
3 I Р1"11
Модуль входящего в (11) векторного произведения равен площади параллелограмма, построенного на отрезках Q\P\, P\R\. Эта площадь и длина отрезка P\R\ определены с помощью справочных средств компьютерной графики: = 670,9881; P\R\ = 20,8327 (см. рис. 5). Подставляя найденные величины в (11), получаем: |К(1)(1)| = 0,049475.
Проверка. Это же значение модуля кривизны в конечной точке сегмента г^/) получается, если использовать известную [3] формулу
,^,2 (¿у - УО2 + Х - '¿х)2 + (ух - ху)
1 К1 =-772-П--, (12)
(х2 + у2 + г2)3
где значения входящих в (12) производных определяются дифференцированием функции (10) с последующей подстановкой t = 1.
Найдем управляющие точки Q2, Р2 характеристической ломаной второго сегмента г2(/). Точка Q2 может быть произвольно размещена на касательной т1, например, на расстоянии R\Q2 = 20. Точку Р2 находим на пересечении вертикальной касательной т2 с плоскостью Е/^^Р^) (см. шаг 1 алгоритма). С помощью справочных средств компьютерной графики определяем координаты точек Q2(66,2601; 23,3853; 19,1588) и Р2(80; 0; 3,2317).
По формуле (8) рассчитываем комплекс весовых коэффициентов второго сегмента:
. (13)
■ = 3| K' 2
41 2 |"102 X 02Р2|
Здесь |К(2)(0)| = |К(1)(1)| = 0,049475, R\Q2 = 20, а модуль векторного произведения равен площади 82 = 370,4553 параллелограмма, построенного на сторонах R\Q2, Q2P2 (см. рис. 5).
Подставляя указанные значения в (13), полу-
^П®? ^
" 2 = 1,6026. Отдельные значения весо-
чаем:
ю,
вых коэффициентов могут варьироваться. Положим, например, ю0 = 1,6026, ю1 = ю2 = 1. Значение весового коэффициента ю3 не влияет на кривизну в
начальной точке сегмента, поэтому ю3 может задаваться произвольно. При изменении ю3 изменяется форма конструируемого сегмента г2(/).
Для визуализации сегмента г2(/) подставляем координаты узловых точек и значения весовых коэффициентов этого сегмента в векторную функцию (1) и раскладываем ее по осям координат х, у, г. Получаем параметризованное уравнение сегмента:
х2 (г) = — [80,13(1 - г)3 +198,7803/(1 - г)2 +
Ф(г)
+240г2(1 - г)+80ю3г3];
>-2(0 = —[56,091(1 - г)3 + 70,1559/(1 - г)2]; (14) Ф(г)
(/) = — [32,052(1 - г)3 + 57,4764/(1 - г)2 + Ф(г)
+9,б951г 2(1 - г)+30ю3г3],
где ф(/) = 1,6026(1 - г)3 + 3г(1 - г)2 + 3г2 (1 - г)+<в/. Параметр ( меняется в диапазоне [0, 1]. Уравнения (14) позволяют выполнить визуализацию сегмента г2(/). Присваивая весовому коэффициенту ю3 различные значения, получаем сегменты г2(/) различной формы, но с неизменной кривизной в начальной точке (см. рис. 5).
Решение задачи 2
(графоаналитический алгоритм)
Не связанные между собой рациональные кубические сегменты г1(/) и г3(/) вида (1) зафиксированы своими характеристическими ломаными и весовыми коэффициентами (рис. 6). Требуется найти кубический сегмент г2(/), гладко (с гладкостью в2) соединяющий заданные сегменты.
Согласно (4), графоаналитически определяем вектор кривизны К(1)(1) в конечной точке К1 первого сегмента г1(/). Аналогично определяем вектор кривизны К(3)(0) в начальной точке К2 третьего сегмента г3(/). Вставляемый сегмент г2(/) должен иметь точно такие же векторы кривизны в своих граничных точках К1 и К2.
Шаг 1 (построение характеристической ломаной). Управляющие точки О2, Р2 характеристической ломаной КО2Р2К2 вставляемого сегмента г2(/) должны быть инцидентны касательным т1, т2. Для в2-гладкого соединения этого недостаточно. Необходимо обеспечить совпадение соприкасающихся плоскостей соединяемых сегментов в точках стыка К1, К2. В точке К1 соприкасающаяся плоскость Е1(1) первого сегмента определена точками К1, О1, Р1. Соприкасающаяся плоскость Е1(2) вставляемого сегмента определена точками К1, О2, Р2. Эти плоскости должны совпадать:
^(адро = 2Г(Д102 р2).
(15)
В точке К2 получаем аналогичное условие:
Е(2)(^202Р2) = 43)(Д2ЙР3). (16)
Здесь надстрочный индекс (в скобках) обозначает номер сегмента, а подстрочный индекс -номер узловой точки К,-.
Таким образом, искомые управляющие точки О2, Р2 вставляемого сегмента должны находиться на касательных т1 , т2 и удовлетворять условиям (15), (16). Этот комплекс требований выполняется, если точки О2, Р2 находятся на пересечении касательных с соприкасающимися плоскостями:
02 = Т1 П ^(^О^Х Р2 = ^2 П ^МйР) . (17)
Для обеспечения равнонаправленности векторов кривизны в стыковой точке К1 требуется, чтобы управляющие точки О1, Р2 сегментов г1(/) и г2(0, лежащие в соприкасающейся плоскости Е1(1) = Е1(2), располагались по одну сторону от касательной т1. Аналогичным образом для обеспечения равнонаправленности векторов кривизны в стыковой точке К2 требуется, чтобы управляющие точки О2, Р3 сегментов г2(0 и г3(0, лежащие в соприкасающейся плоскости Е2(2) = Е2(3), располагались по одну сторону от касательной т2.
Если указанные требования не выполнены, задача не имеет решения.
Шаг 2 (расчет весовых коэффициентов вставляемого сегмента). Согласно (8), в начальной точке вставляемого сегмента г2(/) должно выполняться условие
= 3|к(2)(0)|-
1^2
, -, (18) ЮГ 2 Ч"|Кх02 X 02Р2|
где модуль вектора кривизны |К(2)(0)| известен (равен модулю вектора кривизны |К(1)(1)| в конечной точке первого сегмента). Модуль входящего в (18) векторного произведения Я102 х 02Р2 находим графически, построив параллелограмм на отрезках КО2, (^2Р2 и определив его площадь с помощью справочных средств используемого графического пакета. Модуль вектора Я1О2 также определяем графически.
Согласно (9), в конечной точке вставляемого сегмента должно выполняться условие
®1®3 _ 3 |ьг(2).
ю9
= - |К(2)(1)|
| Р2 Л 2
Ю2Р2 X Р2Л2|
(19)
где модуль вектора кривизны |К(2)(1)| равен модулю вектора кривизны |К(3)(0)| в начальной точке третьего сегмента. Как и ранее, модули векторов и векторных произведений, входящих в (19), определяем графически.
При выполнении условий (18), (19) получаем искомый сегмент г2(/), гладко соединяющий сегменты г1(/) и г3(/).
Примечание. При произвольном изменении значений отдельных весовых коэффициентов, входящих в (18), (19), форма вставляемого сегмента не меняется, то есть задача 02-гладкой вставки рационального кубического сегмента (1) имеет единственное решение.
Пример 2
Даны кубические сегменты г1(/) и г3(/) (рис. 7а). Требуется найти кубический сегмент
г2(/), гладко (с гладкостью в2) соединяющий заданные сегменты.
Рациональный кубический сегмент г1(/) задан характеристической ломаной R0(0; 65; 0)^^80; 65; 0)-Р1(6; 49; 33)^(20; 35; 10) и весовыми коэффициентами ю0 = 2; ю1 = 6; ю2 = 1,5; ю3 = 0,75. Модуль кривизны сегмента в конечной точке равен |К(1)(1)| = 0,09316.
Сегмент г3(/) задан как кубическая кривая Бе-зье (все весовые коэффициенты равны единице) с характеристической ломаной R2(50; 35; 20)-Q3(62; 26; 19)-Р3(80; 0; 0)-R3(80; 0; 30). Модуль кривизны сегмента в его начальной точке равен |К(3)(0)| = 0,05808.
Решение
Согласно (17), находим управляющие точки Q2(35,7087; 19,2913; -15,8071), Р2(27,3414; 51,9939; 21,8882) характеристической ломаной искомого сегмента г2(/). Чтобы рассчитать комплексы весовых коэффициентов (18), (19), определяем (с помощью справочных средств компьютерной графики) модули входящих в эти выражения векторов: R\Q2 = 34,0519; Р^2 = 28,3861; 5 = | "102 х 02Р2 | = 592,5189; 52 = 102Р2 х Р2"2 | = 1181,6983. Подставляя найденные значения в (18), (19), получаем:
Ю0Ю2
= 9,3123;
ю^з
2 ' ' 2 Ю, Ю
= 1,6864.
(20)
и1 ш 2 Произвольно назначаем ю1 = ю2 = 1. Согласно условиям (20), получаем ю0 = 9,3123; ю3 = 1,6864.
Подставляем координаты точек R\, Q2, Р2, R2 и значения весовых коэффициентов в векторное уравнение (1). Раскладывая (1) по осям координат, получаем скалярные уравнения искомого сегмента г2(/):
х2 (t) = [186,246(1 -t)3 +107,1261t(1 -1 )2 +
+82,0242t2(1 -1) + 84,32t3];
y2(t) =
92(t)
,
1
92(t)
[325,9305(1 -1)3 + 57,8739t(1 -1)2 +
+155,9817/2 (1 - /) + 59,024/3];
г2(/) = —1—[93,123(1 - /)3 - 47,4213/(1 - /)2 + Ф2(/)
+65,6646/2 (1 - /) + 33,728/3 ],
где
Ф2 (/) = 9,3123(1 - /)3 + 3/(1 - /)2 + 3/2 (1 - /) +1,6864/3 . Параметр / меняется в диапазоне [0, 1]. Визуализация сегмента г2(/) представлена на рис. 7б.
Заключение
Предложен графоаналитический алгоритм, позволяющий формировать составную в2-гладкую кривую, проходящую через наперед заданные в трехмерном пространстве точки и касающуюся в этих точках наперед заданных прямых.
Предложен графоаналитический алгоритм вставки кубического сегмента, гладко (с гладкостью в2) соединяющего наперед заданные кубические кривые.
Отличительная особенность предложенных алгоритмов состоит в существенном использовании справочных средств трехмерной компьютерной графики.
Представленные в статье примеры решения задач 1 и 2 транспарентны и могут быть использованы в учебном процессе.
Список литературы
1. Голованов Н.Н. Геометрическое моделирование. М.: Изд-во физико-математической литературы, 2012. 472 с.
2. Безье П. Геометрические методы // Математика и САПР. 2. М.: Мир, 1989. С. 96-257.
3. Прасолов В.В., Тихомиров В.М. Геометрия. М.: Изд-во МЦНМО, 2013. 336 с.
4. Панчук К.Л., Юрков В.Ю., Кайгородцева Н.В. Математические основы геометрического моделирования кривых линий: учеб. пособие. Омск: Изд-во ОмГТУ, 2020. 198 с.
5. Фокс А., Пратт М. Вычислительная геометрия. Применение в проектировании и на производстве. М.: Мир, 1982. 304 с.
6. Шикин Е.В., Плисс Л.И. Кривые и поверхности на экране компьютера. М.: Диалог-МИФИ, 1996. 240 с.
7. Короткий В.А. Конструктивные алгоритмы формирования составных кубических кривых Безье в пространстве и на плоскости // Омский научный вестник. 2022. № 2 (182). С. 10-16. DOI: 10.25206/18138225-2022-182-10-16
8. Короткий В.А. Конструирование в2-гладкой составной кривой на основе кубических сегментов Безье // Геометрия и графика. 2021. Т. 9, № 2. С. 12-28. DOI: 10.12737/2308-4898-2021-9-2-12-28
9. Короткий В.А. Составные геометрически гладкие кубические кривые Эрмита в пространстве и на плоскости // Вестник компьютерных информационных технологий. 2022. Т. 19, № 4 (214). С. 20-32. DOI: 10.14489/vkit.2022.04.pp.020-032
10. Короткий В.А. Незакономерные кривые в инженерной геометрии и компьютерной графике // Научная визуализация. 2022. Т. 14, № 1. С. 1-17. DOI: 10.26583/sv.14.1.01
11. Короткий В.А. Кубические кривые в инженерной геометрии // Геометрия и графика. 2020. Т. 8, № 3. С. 3-24. DOI: 10.12737/2308-4898-2020-3-24
References
1. Golovanov N.N. Geometricheskoe modelirovanie [Geometric Modeling]. Moscow, Publishing house of physical and mathematical literature, 2012. 472 p. (in Russ.)
2. Bezier P. Geometricheskie metody. Matematika i SAPR. [Geometric methods. Mathematics and CAD]. Book 2. Moscow, World Publ., 1989, pp. 96-257. (in Russ.)
3. Prasolov V.V., Tihomirov V.M. Geometriya [Geometry]. Moscow, ICNMO Publ., 2013. 336 p. (in Russ.)
4. Panchuk K.L., Yurkov V.Yu., Kaygorodtseva N.V. Matematicheskie osnovy geometricheskogo modeliro-vaniya krivykh liniy: uchebnoe posobie [Mathematical foundations of geometric modeling of curved lines: textbook]. Omsk, OmGTU Publ., 2020. 198 p. (in Russ.)
5. Foks A., Pratt M. Vychislitel'naya geometriya. Primenenie v proektirovanii i na proizvodstve [Computing Geometry. Application in Design and on Production]. Moscow, World Publ., 1982. 304 p. (in Russ.)
6. Shikin E.V., Pliss L.I. Krivye i poverkhnosti na ekrane komp'yutera [Curves and Surfaces for Computer Screen]. Moscow, Dialog-MIFI Publ., 1996. 240 p. (in Russ.)
7. Korotkij V.A. [Constructive algorithms for forming compound cubic Bezier curves in space and on plane]. Omskiy nauchnyy vestnik [Omsk Scientific Bulletin], 2022, no. 2(182), pp. 10-16. (in Russ.) DOI: 10.25206/18138225-2022-182-10-16
8. Korotkij V.A. [Construction of a G2-smooth compound curve based on cubic Bezier segments]. Geometriya i grafika [Geometry and Graphics], 2021, vol. 9, no. 2, pp. 12-28. (in Russ.) DOI: 10.12737/2308-48982021-9-2-12-28
9. Korotkij V.A. [Composite geometrically smooth cubic Hermite curves in space and on the plane]. Vestnik komp'yuternykh informatsionnykh tekhnologiy [Bulletin of Computer Information Technologies], 2022, vol. 19, no. 4 (214), pp. 20-32. (in Russ.) DOI: 10.14489/vkit.2022.04.pp.020-032
10. Korotkij V.A. [Irregular curves in engineering geometry and computer graphics]. Nauchnaya vizualizat-siya [Scientific Visualization], 2022, vol. 14, no. 1, pp. 1-17. (in Russ.) DOI: 10.26583/sv.14.1.01
11. Korotkij V.A. [Cubic curves in engineering geometry]. Geometriya i grafika [Geometry and Graphics], 2020, vol. 8, no. 3, pp. 3-24. (in Russ.) DOI: 10.12737/2308-4898-2020-3-24
Информация об авторах:
Короткий Виктор Анатольевич, доктор технических наук, доцент, профессор кафедры «Инженерная и компьютерная графика», Южно-Уральский государственный университет, Челябинск, Россия; [email protected]
Студенова Елена Сергеевна, преподаватель кафедры «Инженерная и компьютерная графика», Южно-Уральский государственный университет, Челябинск, Россия; [email protected]
Information about the authors:
Viktor A. Korotkij, Doctor of Technical Sciences, Professor of the Department of Engineering and Computer Graphics, South Ural State University, Chelyabinsk, Russia; [email protected]
Elena S. Studenova, Teacher of the Department of Engineering and Computer Graphics, South Ural State University, Chelyabinsk, Russia; [email protected]
Статья поступила в редакцию 09.07.2024, принята к публикации 18.07.2024.
The article was submitted 09.07.2024 and approved after reviewing 18.07.2024.