УДК 514.182.7
DOI: 10.25206/1813-8225-2022-182-10-16
В. А. КОРОТКИЙ
Южно-Уральский государственный университет (национальный исследовательский), г. Челябинск
КОНСТРУКТИВНЫЕ АЛГОРИТМЫ ФОРМИРОВАНИЯ СОСТАВНЫХ КУБИЧЕСКИХ КРИВЫХ БЕЗЬЕ В ПРОСТРАНСТВЕ И НА ПЛОСКОСТИ
В статье рассмотрены два графоаналитических алгоритма. Первый алгоритм позволяет формировать пространственную кривую, проходящую через заданные узловые точки с указанными в этих точках направляющими векторами. Второй алгоритм позволяет формировать плоскую составную кривую, проходящую через заданные узловые точки с указанными в этих точках направляющими векторами и радиусами кривизны. Конструируемые кривые образованы кубическими сегментами в форме Безье. Направляющие векторы рассматриваются как элемент управления формой конструируемой кривой. В узловых точках обеспечивается геометрическая гладкость второго порядка, обусловленная непрерывностью наклона и кривизны. Отличительная особенность предлагаемых алгоритмов заключается в существенном использовании конструктивных средств компьютерной графики.
Ключевые слова: кубический сегмент, направляющий вектор, кривизна, кручение, геометрическая гладкость.
Введение. Кубические кривые в форме Безье широко применяются в геометрическом моделировании благодаря своей простоте и ясному смыслу векторных коэффициентов, входящих в уравнения кривой Безье. Плоские кубические кривые Безье входят в стандартный набор геометрических примитивов практически всех пакетов компьютерной графики [1]. Сложнее найти инструментальные средства для моделирования и визуализации пространственных кубических сегментов Безье. Еще более затруднительно с помощью стандартных средств компьютерной графики сформировать составную кубическую кривую Безье, удовлетворяющую наперед заданным граничным условиям и требованиям гладкости. Научные издания и учебные руководства не уделяют достаточного внимания вопросам формирования составных кривых, ограничиваясь исследованием геометрических свойств отдельных сегментов. Задача гладкого соединения сегментов решается, как правило, в рамках концепции параметрической гладкости, предполагающей совпадение векторных производных соединяемых сегментов в точке стыка как по направлению, так и по модулю [2 — 4]. В энциклопедическом издании [5] имеется лишь пять страниц (с. 452 — 456), посвященных геометрической непрерывности составных кривых. В работе [6] рассматриваются плоские кубические кривые без обсуждения условий их гладкого сопряжения. Наиболее полно условия формирования геометрически гладких составных кривых рассматриваются в [7—11], но конвертация этих условий в практически приемлемые алгоритмы требует определенной математической грамотности.
В связи с этим представляется актуальной разработка конструктивных алгоритмов формирования
гладких составных кривых Безье, пригодных для реализации в любом графическом пакете, поддерживающем трехмерную графику. Представленные в статье пошаговые алгоритмы могут быть полезны в проектировании и в учебном процессе.
Постановка задачи. В ортонормированном базисе хух даны точки Я0, Я , Я2, ..., Яп с указанными в этих точках единичными направляющими векторами ..., Через данные точки требуется провести С^-гладкую составную кривую (геометрически гладкую кривую второго порядка гладкости), касающуюся указанных векторов. Направляющие векторы могут рассматриваться либо как наперед заданные геометрические условия, либо как элемент управления формой конструируемой кривой.
Для конструктивного решения задачи в статье используются кубические сегменты в форме Безье
г.(Н) — (1 - t)3^ + 3Н(1 - Н)2О,. + 3t2(1 - Щ +1, t и [0, 1],
(1)
где Н — номер сегмента; Я , Я. — начальная и конечная точки г-го сегмента; О , Р. — первая и вторая управляющие точки -го сегмента. Здесь и далее симоолы Я , О,, Р { обозначают точки как геометрически е в)—ъекты, а символы R., Q., P .обозначают радиус-векторы этих же точек. Декартовы координаты радиус-векторов R., Q., P., отнесенные к ортам i, j, k декартовой системы координат хух, совпадают с декартовыми координатами точек Я, О, Р..
Кривая называется С^-гладкой, если ее вектор кр и ВИ
И(Н) —
гн) X Г-(Н) I Г(Н) |3
(2)
10
при изменении параметра t изменяется непрерывно как по модулю, тан и по направлению. Для СП-гладкой стыковки сегменто в г^Да), г,, (а) необходимо и досгатонно гНеспечить общуе касательную и общий вектор кривнзнге г точке соединения сегментов: М,ДР) и Мг (Р). Геометрическая непрерывность второго порядка, обусловленная непрерывностью наклона и кривизны, нг аребует совпадения значений первых и вторых производных по обе стороны точки соединения [12]. Векторы первых
производных г_Р(Р), (Р) соединяемых сегментов
в стыковой точке Я должны Р)впадать по направлению, но могут не совпадать по модулю. Векторы вторых производных г_Р(Р) г ГРР) находятсяв общей для соединяемых сегментов соприкасающейся плоскости, но могут не совпадать ни понаправлению, ни по модулю [7].
Искомую кривую предлагается формировать последовательно, постепенно добавляя сегменты. На первый сегмент Я0-Я1 накладываются требования инцидентности точкам Я0, Я1 и касания векторов
Как на плоскости, так и в пространстве имеется <х>2 кубических сегментов, удовлетворяющих указанным требованиям, поэтому пользователь может достаточно произвольно выбирать форму первого сегмента.
Второй сегмент Я1-Я2, добавляемый к первому, должен удовлетворятьграничнымусловиям {Я1, Я2, то есть проходитьчерез точки Я1, Я2, касаться векторов T2 и иметь вектор кривизны ^ в своей начальной точке, совпадающийс вектором кривизны в конечной точке первого сегмента. 1
Cеадщ:lщиe ^тмех-ты должны yдoвлeрвopнть аналогичной группе условий. Таким образом, поставленная в статьм з адача сводится к последом -тельному построению кубических сегментов Безье Я{1-Я. вида (1), удовлетворяющих граничным услое ви][яМ {).,, Я., Т., , Т) ^Л.
* 1-1' V 1)' V г-1'
^лжие (У-геадкого соединения кубических сегментов Бегье. В системе кнорщинат щх дан_1 точки Я1, Я2 с инцидентными этим точкнм прямым и т0, Х1Г ^ (рис. 1). Требуется сформировать составную С^-гладкую кривую, образованнуо кубичежи-ми негмннтнми Безье Я0-Я1 и Я2. Искомая кривая долкна доходить через данные точки _и каматься данныи прямых.
Пусть первый сегмент Я0-_1 зафиксирован указанием упраслянщихточек ИД нгр1ед н ,
и^(а) и (и - а)3еи -а-рщ(р -ар^ыыц Нд;з1^ы-ты1 и^с,
(н [И и]. ез)
иудем иС1нать управляющие точки 02 и пдр, Р2 н пн вто^огн пегмннта Я^Я
и(2)(а) и (и _ а)3К1 -+33{(н_п)2ыЫд +за2(д_ и)р2 + и3с2 а н [и, и],
I гД2) |3
а
г ^Цд^
/ у / ИФК
Г(,,(0) М--К1
Л
т2>
Рис. 1. Иоидинение сегмент в Безье кпр()динат XYZ
Запишем первьгe произвгдные в ш(^е
В™=о™ Т г+т =ЮрЩр,
(И)
где ш™, шlс2) — модуле пеирвых производных в иочке Я1. Подставляо Д))са из (Р^) а пилличаем усновии ]+,)^а1г2:ке^сти:
, ^г ( 2) 4 2
Ти тги2'
.тт1тгГ1TИРрг
(7)
Условие ( 7) иудет оьтполнени, еоиви
(2)
*(2) _ __ (и)! ги и ги 1 о'г)
Но услтиие (7 г будет выполнено также и в том случае, если в ыектору г-2) пеибиветь любой вектор, коллинеарный вектоит ьи напримep, вектор е1 Г1((), где I — произвольный скаляр. Получаем условие геадкости
г(2) - гМ ги и г1
I +еН
(и)
(8)
справедлив се пии любом злечинеи [и^. Дифферинцируя (и) и Ы4)_ нолуиаим:
и В(()]() и 3^! _р);
гич и г ^Ц и 6]Ы( _ (Ри + Си) ги2) и г» и 3(Ыс _ Си); г1(2) и г (2) (Р) и 6(С _ 2Ы + о).
(9)
Подставляя (9) в (8), после алгебраических преобразований получаем известное [13, с. 152] условие С2-гладкого соединения сегментов Безье:
Р2 = [(1 + {)2 + 0,5--^- + -+- - Р1[22Х1(Х1 +1) + 0,5^ ].
(10)
(4)
исходя из условия равенства векторов кривизны первиго и втоиого сигментов в стыковой точке Я1. Здесь г даиее недстгке)ш3)1 й индыксы в зкoЫках изна-чает номьр теменеа, а потстрочный индекс — номер узловой точкии.
ЬЬоглосно и2), условие ривенства кривизны сегментов г^Т £) и г(2)( I) в тичке имеет и ид
(5)
где { = и(2) / и™. Выражение (10) следует рассматривать как векторную параметрически заданную функцию P2(^1, скалярных параметров Х1, I (с фиксироканными в нктор ными коэффициентами R1, Q1, P1). Функция P2(^1, 1-Ц) определяет некото-руюповерхноеть в пространстве хух. Учитывая, что управляющаяточка Р2 должна быть инцидентна наперед заданной ка сатель ной т2 (см. рис. 1), от метим точку Р2 на пересечении прямой т2 с поверхностью P2(X1,|l1). В свою очертдь, точка Р2 однозначно опре-делит пару значени+ {X2, удовл-Т2ориющи+ условию (10).
Положение управляющей точки К2 еси зависит от \ [14]:
е
11
02Л, = | Р^ |
(11)
Условия (10), (11) позволяюм найти управляющие точки ГС- Р2 сегмента ]Т-Я, гладко (с гладкостью С2) соединенного с фиксированным сегментом Я0-Я1 и кас ающе гося в своей конечной точке Я2 наперед заданной прямой т2. П]вактическое применение условий (20), (11) рассматрвваотся ниже.
составная гсривня Безье а пространстве. В ортогональной системе координат хуг даны точки И0, Я1Г Я2 с рказанными а отих точаах касдельными т0, т1, т2. Зафиксированы управляющие точки 1 стл, Р1 с м1 первого ссгменса Я0-Кг Сребуется к сегменту Я0-Я1 добаввзь сегмент а -Я - обеспечив общую касательную т1 и общий вектор кришзны K1 соединсемых ссгмонтов в стыковой точке Яе
Задачасводится к построению управляющих точек И см, Р с м2 даб ов лячмпоо се ммч нте, удовлетворяющих условиям гладкости (10), (11). В стыковой точке Я1 должН1]а сзааздатз попаикаиающиеся плоскости О1Р1Я1 и Я1О2Р2 соединяемых сегментов, следовательно, точиа с2 .должна находиться в соприкасающейся плосиоати Рс М . С другой стороны, точка Р2 инцидентное! напе)вед заданной касательной т2, поэтомуточка Р2 ов]аеделяется на пересечении касательной т2 и воприкасающейся плоскости
О1Р1Я1:
Р2 аа М] П тираЯ).
(12)
Тавим чбсозоМс учааетоющая ттака Р2 зафиксирована. Для определения управляющой точке ИУ2 тро-уется найт и скали рныае ве личины Х1, удов -летворяющие услоеиу оаа£11гвкосои (-Ч).
В смприкасающейся плоскости О1Р1Я1 отметим локальную систему коор дисат XС с началом в точке О1 и асью Х=ва1Я1. Ваи точки, входящие в условие (10), лежат в пласкомти Xм, тавтом° это условие можно разложить ао осом X, У. Учиаыаая, что локальным кдосдинаты хачки О1 и ыворквнята У точки -К1(Х1, У1С оааны нулю, полр^чаем условие гладко-стд (10) в скадфной форме:
Xг а ](г о ос)1 о 0,.5у)]СЬ1 а [СОв-Со о () о ОвИу.^
У— 2 ас ] ао - м - о 1 ) о о,ту-]Ур-. (13)
Входащие о о 13) -^од^аасные координаты точек Я1(Х1,0), Р1(Хрс, -Ма), Р2(Рр2, в системе координат ХУ опредеудютсс - по-опсю справочных средств графическогд пасетд.
Система уравнсксий (1-) с^сыдвржит неизвестные скалярные вссиочиндс 11Г |1 1. Из вторагп уоавн-нит находим:
о,ту- =-с^р,-]:р- о 1] а урп а уР]
(14)
Подставляя (14) в пновсп уравненсе из (13-, получаем:
оп а=1оуап._l)_T1рП]
с-
сс -
(15)
О ч раье лив 1)) . с-1 меч ае о н- кас анеоьно й -, с о -гласи - (1-), уп равля юпыую точку О2 конструируемого аегкеныа О^П - Тьким о-рачом, м^юиччыкое применение уелоВ1-й гвв^дкрсти )1 В), (В1С сис^дитмя к гешесаю типовой ьадачи начертательной геометрии (построение точки пересечения прямой т2 и олосывосыи <а1Р)ЯД и вычислению параметра Х1
в соответствии с (15). Конструктивная простота применения условий (10), (11) достигнута благодаря использованию вспомогательной системы координат ХУ и справочных средств применяемого графического пакета.
На основе полученного решения предлагается конструктивный алгоритм, реализуемый с помо-щыа сюбого программного средства, поддерживающего трехмерную графику («Компас», «Нанокад», «Симплекс» и др.).
Алгоритм 1. Построение пространственного кубического сегмента Безье, гладко соединенного с фиксированным пространственным сегментом Безье. Дана характеристическая ломаная Я0О1Р1Я1 фиксированного сегмента Я0-Я1 и конечная точка Я2 добавляемого сегмента Я1-Я2 с указанной в точке Я2 касательной т2.
Тр ебуется найти управляющие точки О2, Р2 дор авляемого сегмента, исходя из условия (10) гладко-г ос од вд нения сегментов.
Шаг 1. В «мировой» системе координат хух средствами трехмерной компьютерной графики указываем характеристическую ломаную Я0О1Р1Я1 фиксированного сегмента Я0-Я1, конечную точку Я2 добавляемого сегмента, а также касательную т2 в точке Я2 .
Шаг 2. В соприкасающейся плоскости О1Р1Я1 отмечаем локальную систему координат ХУ с началом в точке О1 и осью Х=О1Я1. Средствами компьютерной графики фиксируем управляющую точку Р2 = ИУПт2 конструируемого сегмента Я1-Я2. С помощью сп авочных средств графического пакета - пределяем локальные координаты точек Я1(Х1, 0),
Р1(ХР, ypl), Р2(ХР2, УР2).
Шаг 3. Подставляя найденные на шаге 2 значения локальных координат точек Я21, Р1, Р2 в выражение (15), вычисляем величину Х1. Учитывая (11), отмечаем на касательной т1 управляющую точку О2 сегмента Я1-Я2.
Результат: найдены управляющие точки О2, Р2 сегмента Я1-Я2, гладко (с гладкостью С2) соединенного с фиксированным сегментом Я0-Я1.
мслаше существования решения. Если точка Р2 попадает на касательную т1, то, согласно (15), получаем Х1 = 0. Таким образом, касательная т1 делит соприкасающуюся плоскость ХУ= О1Р1Я1 на две области, в одной из которых правая часть выражения (15) отрицательна. Попадание управляющей точки Р2 в эту область означает, что поставленная задача не имеет решения.
Пример 1. В «мировой» системе координат хух зафиксирована характеристическая ломаная Я0(0- 0, 0)-01(0, 0, 10)-Р1(-5, -25, 40)-Я1(5, -20, 30) кубического сегмента Безье Я0-Я1. Требуется найти управляющие точки О2, Р2 сегмента Безье _К1--К2(40, 0, 0), гладко соединенного с фиксированным сегментом Я0-Я1. Касательная т2 в точке Я2 совпадает с осью х (рис. 2).
Решение. В "мировой" системе координат средствами трехмерной компьютерной графики указываем характеристическую ломаную Я0О1Р1Я1 фиксированного сегмента Я0-Я1, конечную точку Я2 добавляемого сегмента и касательную т2 = х а точке Я2. В соприкасающейся плоскости О1Р1Я1 отмечаем локальную систему координат ХУ с началом в точке О1 и осью Х=О1Я1. С помощью едств компьютерной графики находим управляющую точку Р2 = ХУПх2 и ее локальные координаты Р2(ХР2=-3,04635, УР2= -24,4330). С помощью справочных средств графического пакета определяем
Рис. 2. Составная кривая Безье (к примеру 1)
Рис. 3. Модель траектории (к примеру 2): аксонометрия (слева) и двухпроекционный чертеж (справа)
локальные координаты точек Я1(Х1 = 28,7228, 1^ = 0), Р1(Хр1 = 37,4267, УР1 =12,2165).
Подставляя найденные локальные координаты точек Я1, Р1, Р2 в уравнение (15), вычисляем величину Х1 = 0,7071. Учитывая (11), отмечаем на касательной т1 управляющую точку 02 сегмента Я1-Я2. Возвращаясь в «мировую» систему координат хух, определяем (с помощью справочных средств графического пакета) координаты управляющих точек 02(12,0711; -16,4644; 22,9289), Р2(22,5; 0; 0) в «мировой» системе координат. Раскладывая уравнение (4) по осям х, у, х, находим скалярные уравнения пространственного сегмента Безье Я1-Я2. Меняя параметр t в диапазоне от 0 до 1, вычисляем координаты точек сегмента и получаем его визуальное изображение (см. рис. 2).
Пример 2. Управляемый объект стартует с большой скоростью вдоль оси х «мировой» системы координат хух (точка старта Я0 — начало координат), и в точке Я3(80, -65, 30) уходит вертикально вверх (рис. 3). Траектория должна пройти через промежуточные пункты Я1(20, -30, 10) и Я2(50, -30, 20). В пункте Я1 задан нисходящий направляющий вектор Т1(0,4575; -0,4575; -0,7625), заставляющий движущийся объект сделать «петлю» и изменить направление движения более чем на 90° относительно первоначального направления. В точке Я2 объект должен сделать «горку» (задан почти горизонтальный единичный направляющий вектор Т2(0,8130; -0,5807; -0,04206)). Требуется смоделировать физически правдоподобную траекторию движения объекта.
Решение. Движение материального тела без воздействия внешних возмущающих факторов характеризуется непрерывным (без скачков) изменением наклона, кривизны и кручения. Моделируя траекторию с помощью составной кубической кривой, можно добиться плавного изменения наклона и кривизны, но невозможно обеспечить непрерывное изменение кручения [15]. Поэтому с помощью
составной кривой Безье может быть получена модель траектории лишь «в первом приближении». Преимущество такого решения — в небольшом ко-кичестве нео бходимых вычислений и вспо могателк -кых со строе ний.
Произвольно задав модули | r(0) |аю0 а, а 675, | r(1) |a<Bj а 195 первых производных в точках R0, R1, получаем петлеобразную кривую R0-Rv Пльле-дующие сегменты R1-R2, R2-R3 формируются однозначно, в соответствии с алгоритмом 1 (мм. рис. 3). Меняя значения ю0, ю1, получаем разные варианты геометрически гладкой пространственной составной кривой R0-R1-R2-R3.
Составная кривая Безье на плоскости В ортогональной системе координат xy даны точаи R0, Rr R2 с указанными в этих точках касательными т0, т1, т2. Отмечены управляющие точки Ы з то, — з Ti сегмента Безье R0-R1. Требуется к сегменту R0-R1 добавить сегмент R1-R2, обеспечив непрерывноеиз-менение наклона и кривизны в стыковой точке R1.
На плоскости имеется ю1 сегментов Безье R1-R2, удовлетворяющих указанным требованиям, поэтому одна из управляющих точек конструируемого сегмента R1-R2 (точка Q2 на касательной т1 или точка P2 на касательной т2) может быть задана произ-вольн о.
Схемь реrения. Вво/хо е рассмотрение локальную систему коочеднат XY с началом в точке Q1 и осью X, ероходящей через узловую точку R1.Про-изв ольным образом указываем одну из управляющих точек второго сегмента. Например, укажем на касательной т2 рпрарляюп-хю тохо. Х2. Ei системе ыоощ.фйпат XY опмеделяем локалмные координаты точеы ВД, Yj), Pl{XpV yj, е°2(М)р-2т Ур2>- по Форму-ые (1 4) ьычооляем паркметк А, 1 и отмечаем управляю щуч тоокч Q2 на касательной т1: |R102| = X1|R1P1|. Фощмой дзбйвыяемогч сегмента можно управлять, изменях полыжеже управляющей точки P2 на ка-сатем>ной т2.
Плосхиё кубихескер сегмьнь Хезте ч фикси-р.ванной кривизной в оХечх араничных точках (оставкс сегм^1^та^). Тре[уьтья нахти крсОический сегмече Безйь, пчт^5йОфк1Ций через точки R^x1, y1), R2(x2, y2) и имеющий в этих точках заданные каса-теченые х , х2 и сыскнс/ю кривизну K1, K2 (вставить кубич еский сегмеоо в раз рыс мехоу ивтм- ньперех заданныки сегаентами).
ыудхм иcк:а6ьpeшeник в к9ординттной (ч)С)]рк^е:
x(t) а () - ])3Xl -и ЭК - 1)йx0 х 3]й() е t)xp х t3x2 y(t) а () е t)3jä) х 3t() е t)йз2ф -с 30й(1 - t)y— х 13у. ,
й з [0, Т (16)
Уыравля-щ ве тчкки Q(x0, у0), Р(хр, ур) должны быть определены из условий инцидентности ы чв,, - з Bj x из ^словмх ]рсвзнстФa кривезны на концах сегмейта тапееех зсданным зФaрзнияФ K1, K2.
Кринизна плосхой кривой, заданной в явном виде y=y(x), выгачвытетчя -ч формуле
K =
2 Г
(17)
Значения (у'хД = с), = ¿2 из вестны (равны тангенсам d1, d2 углов наклона касательных т1, т2 к ост х), поэтому из (17) могуг быоу нсйдены значения вторых производных в граничных точуах конструируемого сегмента:
г- а]/;)- ао-]- о ЬП)рап, Г( а] уЫ)2л Оп)2 оЫ2
(В8[
Кривизна пагамегpечеcки задоньо) кривой вычисляется по фo)—ма]сe
о
ид - ид
и 2 о у](3/2
Подставляя д, а — а у(авнение (17) и приравни-ы
вая правые части уравнеыий (17) и (19), получаем:
Подставляя (26) в (25), исключаем из (25) неизвестные уО, ур. По еле алгебраических преобразований получаем:
2(Я2 - Я.) 3Л2
(19)
0 2(Я. - Я2)
где у — пос с о янный яо бЮфи1щент:
(-о - э.)2 sign(эа - э.) й
(э2 - эp)Оeigк(дО - хр) й у, (27)
V л
(У 2 - У 1) 5 (Я1Э1 - Я2 Э2 ) , Я. - Я,
(28)
Г
- о
2[0)2137
и— р и—
ТП . 2 \( а
(ис2 оВ )
эу - эу
(э25-^Г э2 5 у2 с
Сокращая )наменанели и уштывая, что
(X2)3/2 = | X |3,
получа ем:
л | э | л эу - Эу.
(21)
гэ±э;дл(э) 12 у - у; э .
лО'дПэ.) 1= у1 - яу^Эс 1, Л 2 *22« гдР-Гг(Э^2 ) л Нт - Я2Э2 ■
Но = Я1 (т0 - И 5 у 1. Н)т = Н2 -Я2(Э2 - эт) ■
Подставляя у = Эу'х в вырэжение (21) и сокращая на Э, полу аед:
(22)
Множитель sigэ(Э) и^еет принципиальэое значение. енлбрежение этим »небожителем может приводить к выиислилесьной ою-иTye:
Согласнб (2Л)1 л-тита-м услоння ; пуи выполнении которых консэpyиуоeм2Iт сегмент (у6) ууовлвтн воряет гуалинным уловоям т- у2, т^ с2, =2)1, К2°:
Дифференцирул (Ш) по дуртмеору t, саходим произлоэ2^)е^б;1 болщи- я ycлмяия ]у3):
-1 л3(у- -(н2 у2 лЯ(0о )-бl),
Э2 = Я-—Я Эт )0 -2 л (((У]-Эт^г
Э1 = с(у1 -2у212 й л) У6- л Уйя О) о й Нт). э 2 = с(-0 - 2ля -I У. )с у2 - с1Н(-2Нн йУд- (22)
Подставлш Л1-о Я)2111), лнлоyмям:
((■л 1 (-])) то- у^-)] )=;ди(-о - -)1( )= = 2(У1 -2уо й1 н-.-) -p )((в^)вОl -)м-й) й (p^),
Ял2(У2 - дp))s(gи{д2 - тТ) = = -)(Но - 2Ут й Ул2 - ОЯ2 ( —О -е ^т й У2 1"
В уралненит ((-5) -водят неизеестиые сел-гаины
хо, уо, хР' УР-
Учиты оая у1 ловия и нцтдент ности О е (, Те т2 , запишем,
Решая систему уравнений (27) относительно неизвестных хР, хО и учитывая (26), яаходим координаты управляющих точек О(хО, уО), Р(хР, уР) сегмента Безье, удовлетворяющего граничным условиям {Я1,
Я2, V ^ К2}
Нелинейная система л-нвнений (27) может быть решена графически. Полагая хО независимой пере-(20) менной, начертим парэболу хР = 1(хО) (первое уравнение из системы (27)). Аналогично, полагая хР независимой переменной, лвчeетих )араболу х0 = д(хР) (второе уравнение из системы (27)). В точках пересечения парабол полетим значения неизвестных хР, хО. Затем, согласно (26), вычисляем значения уО, уР. Если кривизна К1 (лм Кд рувнл ну-ю, то решение заметно упрощается. тает ко- илл-н-йн-я система уравнений (27) вырождается в линейное уравнение относительно хО (или хР)
На основе полученног- р яш ения соста=лхн конструктивный алго итм вставки куби еского сегмента.
Алгоритм 2. Постро2нис плоеного сеомента Бс-зье, удовлетворяющего граничным условиям {Я1, Я2,
V ^ K1, К2}.
На плоскости ху даны т-чко йут), 1 у2(g2, °2) с указанными в этих точклх ка-ательтыми т- Тл В точках Я1, Я2 заданы слгеMнаичсcкио значемя кривизны К1, К2 (с учетом знака). Требуется найти тправляющие точки О е (, Т е( сегмента Безье, удо влетворяющего указанным граничным условиям.
Шаг 1. Находим тангенсы й1, й2 углов наклона касательных т1, т2 к оси х. По формулам (18) вычисляем вторые производные п1, П2 в граничных точках конструируемого сегмента. По формуле (28) вычисляем постоянный коэффициент у.
Шаг 2. Графически решаем систему уравнений (27). Для этого вычерчиваем параболу хР = /(хО), полагая хО независимой переменной. Аналогично, полагая хР независимой переменной, вычерчиваем параболу хО = д(хР). В точках пересечения парабол получаем значения координат хР, хО управляющих точек О, Р.Затемпо формулам (26) определяем координаты уР, уО управляющих точек О, Р.
Результат: получены управляющие точки О(хО, уО), Р(хР, уР) сегмента Безье (16), удовлетворяющего граничным условиям {Я1, Я2, т1, т2, К1, К2}. Если в граничных точках заданы только модули кривизны |К1|, |К2| (без учета знака), то задача может иметь четыре решения. Например, на рис. 4 показаны четыре кубических сегмента с общими окружностями кривизны р1, р2 в граничных точках Я1, Я2.
Условие существования решения. Параболы хР = /(хО) и хО = д(хР) должны иметь вещественные точки пересечения. Если параболы не пересекают-(26) ся (система уравнений (27) не имеет вещественного решения), то кубического сегмента, удовлетворя-
(23)
О 5)
э„ л
Т
с
или
Рис. 4. Сегменты Безье с фиксированной кривизной на концах
кубических кривых Безье, отличающиеся использованием направляющих векторов в узловых точках для управления формой конструируемой кривой. В узловых точках обеспечивается общая касательная, общая соприкасающаяся плоскость и общий радиус кривизны соединяемых сегментов. В качестве граничных геометрических условий принимаются узловые точки с указанными в этих точках касательными векторами. Для практической реализации алгоритмов используются ручной калькулятор и любой программный продукт, поддерживающий трехмерную графику. Трехмерное моделирование используется как для выполнения геометрических операций (построение точки пересечения прямой и плоскости, поиск точек пересечения парабол и др.), так и для пересчета координат опорных точек при замене системы координат.
К преимуществам предлагаемых алгоритмов можно отнести простоту их практической реализации, обусловленную небольшим количеством вспомогательных расчетов и построений, и наглядность (возможность визуального представления и прогноза качественного изменения формы кривой при изменении направления касательных векторов в узловых точках). Недостатки алгоритмов следуют из общих недостатков параметризованных кубических кривых — недостаточная «гибкость» и невозможность обеспечить непрерывность кручения по длине конструируемой кривой.
Рис. 5. Сопряжение окружностей (к примеру 3)
ющего условиям {Я1, Я2, т1, т2, К , К2}, не существует.
Используя алгоритм 2, можно найти кубический сегмент Безье, обеспечивающий: С2-гладкое сопряжение двух окружностей; сопряжение прямой линии и окружности; сопряжение двух прямых линий.
Пример 3 (сопряжение окружностей). На окружностях р1, р2 с одинаковыми радиусами 50 даны точки Я1(0, 0) и Я2(175, 150) с указанными в этих точках касательными векторами Т1, Т2 (рис. 5). Требуется найти кубический сегмент Безье Я1-Я2, обеспечивающий ^-гладкое сопряжение данных окружностей.
Решение. Задача сводится к поиску управляющих точек сегмента Безье, удовлетворяющего граничным условиям {Я1, Я2, т1, т2, К1, К2}, где К1 = К2 = 0,02, а касательные т1, т2 в точках Я1, Я2 наклонены к оси х под углами 0° и 120°.
Вычисляем коэффициенты d1 = 1д 0° = 0, d2 = tg 120° =-1,73205. По формулам (18) вычисляем вторые производные п1 = 0,020, г|2 = 0,160. По формуле (28) вычисляем постоянный коэффициент у = 261,6025. Выполняем графическое решение системы уравнений (27) относительно неизвестных хР, хс/. Для этого вычерчиваем параболы хР = /(х0) (первое уравнение), х0 = д(хР) (второе уравнение) и отмечаем точку ^"(х0 = 52,5094; хР = 21,8458) пересечения парабол. По формулам (26) вычисляем координаты у0 = 0, уР=82,7170. Подставляя координаты узловых точек Я1(0, 0) и Я2(175, 150) и управляющих точек 0(52,5094; 0), Р(213,8458; 82,7170) в уравнения (16), получаем кубический сегмент Безье Я1-Я2, гладко соединяющий окружности р1, р2 (см. рис. 5).
Заключение. Предложены алгоритмы формирования пространственных и плоских составных
Библиографический список
1. Голованов Н. Н. Геометрическое моделирование. Москва: ДМК-Пресс, 2020. 406 с.
2. Panchuk K., Myasoedova T., Lyubchinov E. Spline Curves Formation Given Extreme Derivatives // Mathematics. 2021. Vol. 9. 47. DOI: 10.3390/math9010047.
3. Панчук К. Л., Юрков В. Ю., Кайгородцева Н. В. Математические основы геометрического моделирования кривых линий. Омск: Изд-во ОмГТУ, 2020. 198 с.
4. Шикин Е. В., Плисс Л. И. Кривые и поверхности на экране компьютера. Руководство по сплайнам для пользователей. Москва: Диалог-МИФИ, 1996. 240 с.
5. Agoston M. K. Computer Graphics and Geometric Modeling. Springer: London, UK, 2005. P. 373-470.
6. Gallier J. Curves and Surfaces in Geometric Modeling: Theory and Algorithms. University of Pennsylvania: Philadelphia, PA, USA, 2018. P. 61-114.
7. Farin G., Hoschek J., Kim M. S. Handbook of Computer Aided Geometric Design. Elsevier Science B. V.: Amsterdam, The Netherlands. 2002. P. 75-87.
8. Marsh D. Applied Geometry for Computer Graphics and CAD. 2nd ed. Springer: London, UK, 2005. P. 135-185.
9. Schneider P. J., Eberly D. H. Geometric Tools for Computer Graphics. Morgan Kaufmann Publishers, Inc.: San Francisco, CA, USA, 2003. P. 109-170.
10. Knott G. D. Interpolating Cubic Splines. Birkhauser: Boston, MA, USA, 1999. P. 133-138.
11. Bartels R. H., Beatty J. C., Barsky B. A. An Introduction to Splines for Use in Computer Graphics and Geometric Modeling. Morgan Kaufmann Publishers, Inc.: Los Altos, CA, USA, 1987. P. 6-12.
12. Жермен-Лакур П., Жорж П. Л., Пистр Ф. [и др.]. Математика и САПР. В 2-х кн. Москва: Мир, 1989. Кн. 2. 264 с.
13. Фокс А., Пратт М. Вычислительная геометрия. Применение в проектировании и на производстве. Москва: Мир, 1982. 304 с.
14. Короткий В. А. Кубические кривые в инженерной геометрии // Геометрия и графика. 2020. Т. 8, № 3. С. 3-24. DOI: 10.12737/2308-4898-2020-3-24.
15. Hoschek J., Lasser, D. Fundamentals of computer aided geometric design. A K Peters / CRC Press, England, 1996. P. 213-247.
ReseacherlD: 000457888400003
ORCID: 0000-0002-5266-4701
Адрес для переписки: [email protected]
КОРОТКИЙ Виктор Анатольевич, доктор технических наук, доцент (Россия), профессор кафедры «Инженерная и компьютерная графика» ЮжноУральского государственного университета (национального исследовательского), г. Челябинск. SPIN-код: 7576-1921 AuthorID (РИНЦ):777039 AuthorID (SCOPUS): 57170871600
Для цитирования
Короткий В. А. Конструктивные алгоритмы формирования составных кубических кривых Безье в пространстве и на плоскости // Омский научный вестник. 2022. № 2 (182). С. 10-16. Б01: 10.25206/1813-8225-2022-182-10-16.
Статья поступила в редакцию 12.02.2022 г. © В. А. Короткий