8. Примеры моделирования кривых высокого качества

8.1. Построение кривой на опорной ломаной, точки которой сняты с конической кривой

8.2. Построение кривой на касательной ломаной

8.3. Построение шаблонов аналитических кривых

8.4. Построение  кривой высокого качества путем улучшения сплайновой кривой, нарисованной в CAD-системе

8.5. Приемы построения кривых на критической конфигурации опорной ломаной с использованием эскиза

1) Конфигурация ломаной с резким изменением кривизны

2) Построение кривой с прямолинейным участком

3) Улучшение кубической сплайновой кривой, нарисованной в nanoCAD по опорным точкам с точкой перегиба, на странице Hermite3D

4) Улучшение сплайновой кривой произвольной степени, с произвольной конфигурацией ломаной узловых точек

8.6. Редактирование рациональной b-сплайновой кривой на комплексе

8.7. Построение и редактирование b-сплайновых кривых с управляющими ломаными в открытом формате

Выводы к п.8

 

8. Примеры моделирования кривых высокого качества

Примеры подобраны для демонстрации технологии моделирования кривых высокого качества на комплексе Web FairCurveModeler + (nanoCAD + v_nano.lsp) с использованием всех команд утилиты v_nano.lsp.

Для выполнения примеров загрузите приложение утилиту v_nano.lsp.

 

8.1. Построение кривой на опорной ломаной, точки которой сняты с конической кривой

 

Аппроксимация v-кривой NURBzS кривой

Пример демонстрирует следующий тезис: метод моделирования кривых класса F программы FairCurveModeler обеспечивает минимальное количество вершин кривой. Для тестирования метода используется опорная ломаная, точки которой нарочито неравномерно сняты с конической кривой (в данном примере с окружности). Очевидно, что окружность имеет минимальное количество вершин.

Откройте пример 3DPoly on Circle.dxf (рисунок 8.1.1).

Рисунок 8.1.1. 3D Polyline на окружности.

Выполните процедуру переноса ГО 3D Полилиния в  web-приложение на страницу Polyline3D с использованием команды v_spoly. Постройте v-кривую на точках конической кривой с аппроксимацией NURBzS кривой на ГО (рисунок 8.1.2). Отобразите график кривизны как F(x).

Рисунок 8.1.2. Экспорт ГО в web-приложение на странице Polyline3D и построение v-кривой.

Макропараметры качества NURBzS кривой:

Length = 627.8425711235575

Max Curvature = 0.010000091642893819

Min Curvature = 0.00999992167462291

Potential Energy = 0.06278429702989444

По умолчанию v-кривая аппроксимируется NURBzS кривой. Отметьте чрезвычайно высокую точность аппроксимации конической кривой. График кривизны F(x) представляет горизонтальную прямую (рисунок  8.1.2).

Аппроксимация v-кривой b-сплайновой кривой

Перейдите к изогеометрической аппроксимации v-кривой посредством b-сплайновой кривой на равномерной сетке. Суть изогеометрической аппроксимации заключается в том, что звенья результирующего s-полигона параллельны касательным векторам v-кривой в опорных точках. Отметим, что узловые точки b-сплайновой кривой не совпадают с точками опорной ломаной.

На странице Polyline3D метод аппроксимации использует также опцию  однократного уплотнения v-кривой. Количество сегментов b-сплайновой кривой в 2 раза больше, чем количество сегментов исходной опорной ломаной. 

Установите тип аппроксимации посредством b-сплайновой кривой (Approximation: (*) by b-spline), степень b-сплайновой кривой m = 8 (Degree [8]). Постройте кривую. Отобразите график кривизны как F(x) (кнопка [Draw Curvature as F(x)] (рисунок 8.1.3).

Рисунок 8.1.3. B-сплайновая кривая с однократным уплотнением v-кривой.

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

Для увеличения точности рекомендуется дополнительно повысить степень b-сплайновой кривой и / или использовать опцию благоприятного перераспределения точек по контуру v-кривой (рисунок 8.1.4).

Рисунок 8.1.4. B-сплайновая кривая 10-ой степени с перераспределением точек по контуру.

Макропараметры качества b-сплайновой кривой:

Length = 628.2677461209622

Max Curvature = 0.010001201324767098

Min Curvature = 0.009999168940175851

Potential Energy = 0.06282638552633173

Точность практически такая же, как и NURBzS аппроксимации.

Перенесите построенную модель в чертеж nanoCAD с исходным ГО на окружности (рисунок 8.1.5).

Рисунок 8.1.5. Построенная NURBS кривая 10-ой степени в чертеже nanoCAD.

Как видно из рисунков (8.1 – 8.5) , при повышении степени (до 10-ой) и применении опции благоприятного перераспределения качество аппроксимации существенно повышается. Точность и качество аппроксимации v-кривой b-сплайновой кривой практически не отличается от точности и качества аппроксимации посредством NURBzS кривой.

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

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

 

Специальный метод построения рациональной b-сплайновой кривой, геометрически точно аппроксимирующей коническую кривую

В частных случаях моделирования участков кривой, где требуется абсолютно точное  совпадение с участками конической кривой, предлагается специальный метод - метод приведения NURBzS кривой, геометрически точно аппроксимирующей коническую кривую, к рациональной b-сплайновой кривой на неравномерной сетке, геометрически точно аппроксимирующей коническую кривую [Муфтеев 2012 Винница]. Метод полезен при моделировании профиля кулачка [см. метод моделирования профиля кулачка произвольного порядка гладкости] или трассировании участка дороги с участками, геометрически точно совпадающими с дугами окружности.

Откройте  тот же пример и выполните построение  в web-приложении  v-кривой с аппроксимацией NURBzS кривой. Перейдите на страницу NURBzS3D перестройте кривую (рисунок 8.1.6).

Рисунок 8.1.6. Реальная NURBzS кривая.

Модель кривой - геометрическая NURBzS кривая. Если NURBZS точно аппроксимируе коническую кривую (эллипс или окружность), то на странице NURBzS3D можно конвертировать геометричекую NURBzS в реальную NURBzS. Нажмите кнопку [To Conic Real Bezier Spline] и затем [Create]. Повысьте степень  реальной NURBzS кривой до 10 степени последовательным нажатием кнопки [Elevate Spline Degree] (рисунок 8.1.7).

Рисунок 8.1.7. Реальная NURBzS кривая 10-ой степени.

Преобразуйте реальную NURBzS кривую в рациональную b-сплайновую кривую (кнопки [Convert to B-Spline] > [Create] (рисунок 8.1.8).

Рисунок 8.1.8. Рациональная b-сплайновая кривая 10-ой степени.

Параметры качества кривой:

Length = 627.8209911238657

Max Curvature = 0.01000006807194083

Min Curvature = 0.009999950546424968

Potential Energy = 0.06278224166637948

 

Выводы:

Метод построения v-кривой на локально выпуклой ломаной минимизирует количество вершин (экстремумов кривизны) аппроксимирующей кривой.

 

8.2. Построение кривой на касательной ломаной

 

Пример демонстрирует уникальное свойство дуальности способа построения v-кривой – возможность построения v-кривой как на опорной ломаной так и на касательной ломаной. Для тестирования метода используется ломаная, построенная касательно к конической кривой (в данном примере с окружности).

Откройте пример 3D Tangent on Circle.dxf  (рисунок 8.2.1).

Рисунок  8.2.1. 3D Полилиния касательная к окружности.

 

Выполните процедуру переноса ГО 3D Полилиния в web-приложение на страницу Tangent3D с использованием команды v_spoly. Постройте v-кривую на точках конической кривой с аппроксимацией NURBzS кривой на ГО (рисунок 8.2.2). Отобразите график кривизны как F(x).

 

 

Рисунок 8.2.2. Аппроксимация конической кривой посредством NURBzS кривой.

По умолчанию v-кривая аппроксимируется NURBzS кривой. Отметьте чрезвычайно высокую точность аппроксимации конической кривой. График кривизны F(x) представляет горизонтальную прямую.

 

Выводы:

Метод построения v-кривой на дуальных геометрических определителях существенно расширяет инструментарий дизайнера.

 

8.3. Построение шаблонов аналитических кривых

 

Уникальный способ аппроксимации v-кривой, основанный на приведении v-кривой на определенном шаге уплотнения к ГО Эрмита (к множеству точек с фиксированными векторами касательных и кривизны) в приложении используется для аппроксимации аналитических кривых.

На аналитической кривой необходимо подготовить ГО Эрмита: таблицу с координатами точек и дифференциальными характеристиками вида касательных векторов, значений кривизны и векторов кривизны.

 

1) Пример построения аналитической кривой – окружности

В данном примере используется следующая таблица точек и дифференциальных параметров, снятых с окружности:

 ((-100.0 0.0 0.0 0.0 1.0 0.0 0.01 0.0 0.0 0.0) (0.0 100.0 0.0 1.0 0.0 0.0 0.01 0.0 0.0 0.0) (70.7107 70.7107 0.0 0.707107 -0.707107 0.0 0.01 0.0 0.0 0.0) (0.0 -100.0 0.0 -1.0 0.0 0.0 0.01 0.0 0.0 0.0) (-100.0 0.0 0.0 0.0 1.0 0.0 0.01 0.0 0.0 0.0))

Строки таблицы содержат координаты точек, касательные векторы, значения кривизны и векторы кривизны. Для плоских кривых можно не задавать векторы кривизны (в таблице они имеют нулевые координаты).

Точки на окружности взяты нарочито неравномерно для демонстрации устойчивости и точности  метода.

Скопируйте в буфер памяти данную таблицу. Перейдите в Web FairCurveModeler на страницу Hermite3D. Затем вставьте в текстовое поле ‘Instructions and Messages' текст из буфера памяти. Кликните кнопку [Data from Hermite Table in Notebook]. Отключите опции рафинирования (Fairings: (*) None). Постройте кривую (кнопка [Create]). Отобразите график кривизны как F(x) (кнопка [Draw Curvature as F(x)])(рисунок 8.3.1).

Рисунок 8.3.1. Точная аппроксимация ГО Эрмита на окружности.

 

2) Для построения шаблона клотоиды используйте следующую таблицу

((0.00000 0.00000 0.0 1.000000 0.000000 0.0 0.00000000 0.0 0.0 0.0)

(203.577 11.1153 0.0 885.3000 145.8800 0.0 0.00159664 0.0 0.0 0.0)

(390.140 85.3253 0.0 715.6150 541.2330 0.0 0.00317927 0.0 0.0 0.0)

(493.009 254.678 0.0 101.9280 891.4300 0.0 0.00476891 0.0 0.0 0.0)

(413.428 430.436 0.0 -764.231 470.0940 0.0 0.00635854 0.0 0.0 0.0)

(229.930 403.506 0.0 -558.886 -701.914 0.0 0.00794118 0.0 0.0 0.0)

(263.287 228.826 0.0 802.3950 -401.498 0.0 0.00953081 0.0 0.0 0.0)

(405.952 317.017 0.0 -52.3119 895.7130 0.0 0.01111340 0.0 0.0 0.0))

Точки на клотоиде взяты нарочито неравномерно для демонстрации мощи метода.

 

Скопируйте в буфер памяти данную таблицу. Перейдите в Web FairCurveModeler на страницу Hermite3D. Затем вставьте в текстовое поле ‘Instructions and Messages' текст из буфера памяти. Кликните кнопку [Data from Hermite Table in Notebook]. Отключите опции рафинирования (Fairings: (*) None). Постройте кривую (кнопка [Create]). Отобразите график кривизны как F(x) (кнопка [Draw Curvature as F(x)])(рисунок 8.3.2).

Рисунок 8.3.2. NURBzS аппроксимация ГО Эрмита без рафинирования.

Инновационный метод построения кривой на ГО Эрмита показывает поразительное качество приближения конических кривых, клотоиды и др.

3) Построение шаблонов других аналитических кривых

Аналогично можно подготовить данные для любых аналитических кривых. Это несложно сделать с помощью AutoLISP.  Пример программы подготовки данных для участка синусоиды приведен в приложении (Приложение .1).  

 

Выводы:

Методы аппроксимации аналитических кривых на ГО Эрмита позволяет создавать NURBS шаблоны аналитических кривых с высокой точностью и с высоким качеством по критериям плавности.

 

 

8.4. Построение  кривой высокого качества путем улучшения сплайновой кривой, нарисованной в CAD-системе

 

Сплайновая кривая любого формата и степени, построенная в CAD-системе,  используется как NURBS-эскиз для моделирования кривой высокого качества в web-приложении.

Постройте сплайновую кривую штатными командами CAD-системы достаточно хорошего качества. Проверьте качество с помощью команды v_test_crv. Рекомендуется, чтобы конфигурация ломаной узловых точек сплайна удовлетворяла требованиям к конфигурации опорной ломаной (см. Требования к конфигурации исходных ГО).  Но это условие не является обязательным. Главное, чтобы форма кривой с точностью до знака кривизны соответствовала форме моделируемой кривой. Прямолинейные участки кривой должны быть совпадать или быть больше одного сегмента сплайна. Они должны задаваться участком s-полигона, вершины которого геометрически точно лежат на прямой. Количество точек прямолинейного участка  должно  быть больше 3.

Построенные сплайновые кривые переносятся в web FairCurveModeler на страницу NURBS3D тем или иным способом (см. п. 7.2. Команды экспорта/импорта ГО кривых и поверхностей в Web FairCurveModeler).

Затем кривая структурируется с помощью команды перепараметризации [ReParametrization] ->[Create]. Можно предварительно задать количество узлов N структурированной кривой в поле Number of Points[   N]. Количество сегментов (spans) структурированной кривой равно  N-1. Узловые точки распределяются по контуру кривой с плотностью пропорциональной кривизне кривой.

Стуктурированная кривая в формате NURBzS кривой 6-ой степени переносится для дальнейшей обработки на страницу  VHermite3D.

После улучшения кривой различными методами рафинирования сплайновая кривая переносится в nanoCAD.

Рассмотрим технологию улучшения на примере StraightSite.dxf сплайновой кривой с прямолинейным участком, подготовленной в nanoCAD (рисунок 8.4.1).

Рисунок 8.4.1 . Ломаная с прямолинейным участком.

Приняв ломаную за s-полигон постройте b-сплайновую кривую командой V_Splgnrb (рисунок 8.4.2).

Рисунок  8.4.2. Кубическая b-сплайновая кривая.

Перенесите кривую в Web FairCurveModeler на страницу NURBS3D и протестируйте (рисунок 8.4.3).

Рисунок 8.4.3. Анализ качества кубической b-сплайновой кривой.

Quality Params of Curve:

Length = 47945.54410258183

Max Curvature = 0.0005734430065738825

Min Curvature = 0

Potential Energy = 0.0021117665378399863

Отработайте команду Reparametrization с тем же количеством вершин (рисунок 8.4.4). Операция перераспределяет точки на кривой с плотностью пропорциональной локальной  кривизне кривой и строит v-кривую (рисунок 8.4.4).

8.4.4. Перепараметризованная кривая в формате NURBzS.

Параметры перепараметризованной кривой:

Quality Params of Curve:

Length = 47994.57355203928

Max Curvature = 0.0005127520812907797

Min Curvature = 0

Potential Energy = 0.0020755346880508866

Перенос и радикальное рафинирование выполните на странице VHermite3D (рисунок 8.4.5).

Рисунок  8.4.5 . Перенос кривой на страницу VHermite3D.

Перестройте v-кривую с опцией перераспределения (посредством b-сплайновой кривой 8-ой степени (рисунок 8.4.6).

Рисунок 8.4.6. Улучшенная кривая с опцией перераспределения.

Параметры кривой:

Quality Params of Curve:

Length = 47994.573552039285

Max Curvature = 0.0005127520812907796

Min Curvature = 0

Potential Energy = 0.002075534688050887

Выводы:

Методы построения v-кривой с опцими благоприятного перераспределения вершин позволяю существенно улучшать качество сплайновых кривых, построенных в CAD-системах традиционными методами.

 

8.5. Приемы построения кривых на критической конфигурации опорной ломаной с использованием эскиза

 

К критическим конфигурациям ломаной относятся  конфигурации ломаных линий с резким изменением кривизны и с участками перегиба. Частным случаем ломаных линий с резким изменением кривизны являются ломаные линии с прямолинейными участками.

 

1) Конфигурация ломаной с резким изменением кривизны

 

Пример демонстрирует ограничения при построении кривой с b-сплайновой аппроксимацией  на критических конфигурациях и технологию повышения точности аппроксимации.

Откройте чертеж 3D Poly Critic.dxf. Чертеж содержит локально выпуклую опорную ломаную с критической конфигурацией. На ломаной линии есть участок с резким изменением кривизны.

Постройте NURBS-эскиз на этой ломаной. Протестируйте сплайн (рисунок 8.5.1).

Рисунок 8.5.1. Сплайн, нарисованный по определяющим точкам.

В крупном масштабе критический участок (рисунок 8.5.2).

Рисунок 8.5.2. Сплайн на критическом участке

Отметим, что разработчики nanoCAD предлагают более устойчивую штатную функцию восстановления кубического сплайна. Штатный сплайн AutoCAD не обеспечивает регламентации формы исходной ломаной данного примера. На участке с критической конфигурацией сплайн осциллирует.

Перенесите сплайн в web-FairCurveModeler на страницу NURBS3D с использованием команды v_getspl.  Протестируйте сплайн (рисунок 8.5.3).

Рисунок 8.5.3. Сплайн в web-приложении.

Количество экстремумов кривизны 12.

 

Конвертируйте сплайн в сплайн Безье (кнопка [Convert to Bezier]).

Перейдите на страницу Polyline3D и улучшите сплайн на странице Polyline3D. Построите v-кривую и аппроксимируйте NURBzS кривой. Протестируйте построенную кривую (рисунок 8.5.4).

Рисунок 8.5.4. Улучшенная кривая, аппроксимированная NURBzS кривой.

Кривая изогеометрична опорной ломаной линии. Кривая имеет плавный график кривизны. Количество экстремумов кривизны 9.

 

Перенесем кривую в nanoCAD (рисунок 8.5.5).

Рисунок 8.5.5. Улучшенная кривая в nanoCAD.

При построении v-кривой на ломаной линии и аппроксимации посредством NURBzS кривой обеспечивается строгая изогеометричность и точность прохождения через опорные точки.

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

Формально кубическая GNURBzS кривая – кривая 2-го порядка гладкости (класса G2). Но уникальный метод аппроксимации сохраняет плавность v-кривой на локально-выпуклых участках и графики NURBzS кривой визуально выглядят плавными. 

 

Аппроксимация v-кривой NURBS-кривой (b-сплайновой кривой)

 

Второй метод аппроксимации v-кривой выполняется посредством b-сплайновой кривой высокой степени m (m = 6,8,10). Уникальный метод сохраняет высокую точность и качество v-кривой в большом диапазоне возможных конфигураций опорной ломаной.

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

Перейдите на страницу Hermite3D. Аппроксимируйте ту же v-кривую b-сплайновой кривой 8-ой степени (рисунок 8.5.6).

 

Рисунок 8.5.6. B-сплайн на опорной ломаной без уплотнения.

При сохранении изогеометричности на критическом участке точность аппроксимации уменьшается. В текстовом поле выводится сообщение:

(warning: 3 2)(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )(warning: 7 2)(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )(warning: 9 2)(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )(warning: 15 2)(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )(warning:  ... Accuracy of approximation on critical sites 15.987425 ...    )(warning:  ... Accuracy of approximation 0.000000 at quantity of iterations 71 ...   )

m_Critic_Accuracy = 15.987424841616

Для повышения точности b-сплайновой аппроксимации рекомендуется использовать одновременно или порознь две опции: рафинирование на точках с благоприятным перераспределением на контуре (Fairings: (*) Redistributing), уплотнения спецификации (Subdivide: (*) on). Можно уплотнять не всю кривую, увеличивая количество сегментов в 2 раза. Можно просто добавлять точки на v-кривой на критическом участке.  Выполните построение кривой с включенными опциями Subdivide: (*) on и (*)on Points (рисунок 8.5.7).

 

Рисунок 8.5.7 . Улучшенная кривая, аппроксимированная b-сплайновой кривой.

(warning:  ... Accuracy of approximation 0.000000 at quantity of iterations 99 ...   )

Погрешность устранена.

Перенесите NURBS модель в nanoCAD и протестируйте качество кривой (рисунок 8.5.8).

Рисунок 8.5.8.  B-сплайновая кривая 8-ой степени с уплотнением.

Протестируйте кривую (рисунок 8.5.9).

Рисунок 8.5.9. Тестирование b-сплайновой кривой

Предельный случай критической конфигурации – переход от прямолинейного участка на участок с ненулевой кривизной.

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

На этапе аппроксимации v-кривой

Погрешность можно уменьшить или устранить при применении нескольких опций, которые можно применить порознь или одновременно:

- опции увеличения степени уплотнения v-кривой или добавления точек на v- кривой. Добавлять нужно так, чтобы смягчать градиент изменения кривизны по контуру ломаной;

- опции благоприятного перераспределения точек по контуру v-кривой. Данная опция не меняет формы кривой при расположении точек на конической кривой. Но в общем случае несколько изменяет форму исходной v-кривой. Допустимо при моделировании с чистого листа. При использовании эскиза кривой (плотного множества точек) можно уточнить положения точек переносом на эскиз;

- корректировкой положений точек опорной ломаной на критическом участке. Допустимо при моделировании с чистого листа.

Исправление редактированием s-полигона

- поскольку b-сплайновая кривая является редактируемой кривой, то после изогеометрического построения можно исправить путем редактирования вершин s-полигона.

Эти рекомендации и методики позволяют геометрически устойчиво и точно строить кривые в любом формате сплайнового представления.

2) Построение кривой с прямолинейным участком

 

Для моделирования кривой с прямолинейными участками необходимо сформировать ГО с прямолинейными участками. Прямолинейный участок ГО задается несколькими  точками (более 3-х), которые должны лежать на прямой линии. Построение v-кривых на локально выпуклых участках и аппроксимация GNURBzS кривой позволяет геометрически устойчиво и точно моделировать кривые с прямолинейными участками класса G2 (см. рисунок  ).

Для моделирования прямолинейных участков на опорной ломаной необходимо задавать такие участки не менее, чем 4-мя точками (рисунок 8.512)

Риунок 8.5.12. Опорная ломаная с прямолинейным участком.

Риунок 8.5.13. Построение NURBzS кривой на опорной ломаной с прямолинейным участком.

Quality Params of Curve:

Length = 8881.00899137817

Max Curvature = 0.002801143868060837

Min Curvature = 0

Potential Energy = 0.007568567532374183

Суть метод построения кривой высокого качества: несколько v-кривых строятся на локально-выпуклых участках ломаной линии. В точках перегиба v-кривые стыкуются с нулевой кривизной. Для всей кривой учитываются фиксированные граничные условия вида касательного вектора и значения кривизны. В общем случае кривая, составленная из участков v-кривых, аппроксимированная GNURBzS кривой, представляет кривую класса G2. Может нарушаться плавность изменения кривизны на концевых участках с фиксированными граничными условиями.

Однако может потребоваться необходимость построения сплайновой кривой класса Cm-1. То есть в любой точке кривой должна быть гладкость порядка m-1.

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

Изогеометрическая аппроксимация v-кривых посредством b-сплайновой кривой  сохраняет качество v-кривых на локально-выпуклых участках и улучшает качество кривой в целом на участках перегиба и концевых участках с фиксированными граничными условиями.

В методе построения сплайна по фиксированным направлениям звеньев s-полигона, совпадающим с направлениями касательных к v-кривым, и условиям инцидентности сплайна точкам опорной ломаной (не обязательно в узловых точках сплайна) обеспечивается строгая изогеометричность. Но на критических участках возможно уменьшение точности (рисунок 8.5.14). 

Рисунок 8.5.14. Построение b-сплайновой кривой 8-ой степени на опорной ломаной с прямолинейным участком.

 

Выдается предупреждение

(warning: 19 2)

(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )

(warning:  ... Accuracy of approximation on critical sites 3.212783 ...    )

(warning:  ... Accuracy of approximation 0.000000 at quantity of iterations 86 ...   )

Quality Params of Curve:

Length = 8881.408438577215

Max Curvature = 0.002785647322603417

Min Curvature = 0

Potential Energy = 0.007564070026243279

Выводы:

В отличие от традиционного метода построения по условиям совпадения узловых точек сплайна с точками опорной ломаной,  метод изогеометрического построения позволяет обеспечить строгую изогеометричность сплайновой кривой и исходной опорной ломаной. На ломаных с резким изменением кривизны (в частности с прямолинейными участками) за строгую изогеометричность приходится расплачиваться уменьшением точности аппроксимации на участках с резким изменением кривизны.

 

3) Улучшение кубической сплайновой кривой, нарисованной в nanoCAD по опорным точкам с точкой перегиба, на странице Hermite3D

 

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

В примере описывается методика редактирования формой кривой с контролем положения точки перегиба и направления касательного вектора в точке перегиба

Считайте пример 3DPoly Inflex.dxf. Чертеж содержит ломаную линию с точкой перегиба и построенный сплайн по определяющим точкам с привязкой к вершинам ломаной. Точка перегиба на ломаной обозначена как точка, лежащая близко прямой, проходящей через смежные точки (рисунок  8.5.15).

 

 

Рисунок 8.5.15. Сплайновая кривая с точкой перегиба.

Выполните анализ качества кривой командой v_test_crv (рисунок 8.5.16).

Рисунок 8.5.16. Анализ качества штатного сплайна.

 

Выполните процедуру переноса NURBS модели кривой на страницу NURBS3D web-приложения (рисунок 8.5.17)

 

Рисунок  8.5.17. Перенос штатного сплайна в web-приложение на страницу NURBS3D.

Рисунок 8.5.17. Анализ качества кривой.

 

 

Количество экстремумов кривизны 11.

Макропараметры:

Quality Params of Curve:

Length = 7426.9811070393935

Max Curvature = 0.003138296745654644

Min Curvature = 0

Potential Energy = 0.009854878064559414

Важно. При подготовке ГО Эрмита на NURBS-эскизе на странице Hermite3D необходима фиксация точек перегиба заданием нулевой кривизны.

 

Перед построением кривой на ГО Эрмита установите в точке 6 нулевое значение кривизны (рисунок 8.5.18)

Рисунок 8.5.18. Обнуление значения кривизны в точке перегиба.

Постройте кривую без опций рафинирования (рисунок  8.5.19)

Рисунок 8.5.19.  Построение без опций рафинирования на ГО Эрмита.

 

На странице Hermite3D можно гибко управлять опциями рафинирования. Можно определять кривую на ГО Эрмита без опций рафинирования. В этом случае фиксированные значения касательных векторов и кривизны не меняются.

Можно использовать опцию рафинирования Fairings: (*) on points. В этом случае строится v-кривая на опорной ломаной. Векторы касательных и векторы кривизны в ГО Эрмита меняются на соответствующие значения v-кривой.

Можно использовать опцию рафинирования Fairings: (*) on tangents. В этом случае строится v-кривая на касательной ломаной. Точки и векторы кривизны в ГО Эрмита меняются на соответствующие значения v-кривой.

Установите опции рафинирования на опорных точках и постройте v-кривую с аппроксимацией NURBzS кривой (рисунок 8.5.20)

Рисунок 8.5.20. Улучшенная кривая.

Протестируйте качество кривой (рисунок 8.5.21).

Рисунок 8.5.21. Анализ качества улучшенной кривой.

Quality Params of Curve:

Length = 7439.641506759089

Max Curvature = 0.002809700132441081

Min Curvature = 0

Potential Energy = 0.009858604025101796

Сравните качество NURBzS кривой с исходным сплайном. График кривизны более плавный у NURBzS кривой. Количество экстремумов кривизны уменьшилось с 11 до 9. Максимальная кривизна уменьшилась с 0.003138296745654644  до 0.002809700132441081. Потенциальная энергия с 0.009854878064559414 до 0.009858604025101796.

 

Перенесите NURBzS модель в nanoCAD и протестируйте качество NURBzS кривой (рисунок 8.5.22).

 

Рисунок 8.5.22. Анализ качества NURBzS кривой.

Таким образом, построение v-кривой на опорной ломаной узловых точек штатного сплайна с граничными условиями типа касательных векторов и кривизны с аппроксимацией посредством NURBzS кривой позволяет существенно улучшить качество штатного сплайна.

Сплайн в формате NURBzS кривой практически не редактируется. Для дальнейшего редактирования кривой в CAD-системе необходимо v-кривую аппроксимировать b-сплайновой кривой.

Аппроксимация v-кривой b-сплайновой кривой

Установите опции рафинирования на опорных точках без уплотнения и постройте b-сплайновую кривую 8-ой степени (рисунок 8.5.23).

 

Рисунок 8.5.23.    B-сплайновая кривая аппроксимирует v-кривую без уплотнения.

Из-за резкого изменения кривизны точность на участках спрямления понижается и программа выдает сообщение:

(warning: 9 2)(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )(warning:  ... Accuracy of approximation on critical sites 102.245170 ...    )(warning:  ... Accuracy of approximation 0.000000 at quantity of iterations 175 ...   )

m_Critic_Accuracy = 102.245169574598

Для повышения точности аппроксимации включите опцию уплотнения. Перестройте кривую (рисунок 8.5.24)

Рисунок 8.5.24. Уплотнение кривой.

Погрешность аппроксимации уменьшится:

(warning: 15 2)(warning:  ... The Critical site. The error is more than set accuracy = 0.000001   )(warning:  ... Accuracy of approximation on critical sites 7.111731 ...    )(warning:  ... Accuracy of approximation 0.000000 at quantity of iterations 213 ...   )

m_Critic_Accuracy = 7.111730753736

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

 

Отредактируйте касательную в точке перегиба.

Рисунок 8.5.25. Редактирование касательной в точке перегиба.

Перестройте кривую (рисунок 8.5.26).

Рисунок 8.5.26. Улучшенная кривая.

Протестируйте кривую (рисунок 8.5.27).

Рисунок 8.5.27. Графики кривизны улучшенной кривой.

 

(warning:  ... Accuracy of approximation 0.000000 at quantity of iterations 202 ...   )

Quality Params of Curve:

Length = 7440.915148576277

Max Curvature = 0.002738081061781494

Min Curvature = 0

Potential Energy = 0.009886852308066858

 

Выполните процедуру переноса NURBS модели кривой в nanCAD (рисунок  8.5.28).

Рисунок 8.5.28. Перенос улучшенной кривой в nanoCAD.

Выводы:

 

 

4) Улучшение сплайновой кривой произвольной степени, с произвольной конфигурацией ломаной узловых точек

 

Конфигурация ломаной узловых точек сплайновой кривой произвольной степени может не удовлетворять требованиям к конфигурации опорной ломаной (см. Требования к конфигурации исходных ГО).

В этом случае нарисуйте опорную ломаную по правилам с привязкой 'ближайшая’ к сплайновой кривой. На опорной ломаной нарисуйте кубический сплайн штатной командой _Spline по определяющим точкам, совпадающим с вершинами опорной ломаной. Касательные в концевых точках отредактируйте так, чтобы они совпадали с касательными исходной сплайновой кривой.

Улучшите нарисованный NURBS-эскиз по методикам п. 1),2),3).

 

 

8.6. Редактирование рациональной b-сплайновой кривой на комплексе

 

 

Откройте пример Spline10.dxf. Пример содержит рациональный b-сплайн 10-ой степени. Проверьте качество сплайна командой v_test_crv. Убедитесь, что сплайн – точная окружность.

Рисунок 8.6.1. NURBS-шаблон окружности.

 

Для переноса NURBS-модели в web-приложение выполните команду V_GetSpl. Укажите в чертеже nanoCAD сплайн.

Команда выведет в протокол DXF-модель сплайна. Выделите и скопируйте в буфер памяти фрагмент протокола, содержащий NURBS модель

((-1 . #<Имя примитива: 06C11688>) (0 . "SPLINE") (5 . "21E") (330 . #<Имя примитива: 06C08E70>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 15) (71 . 10) (72 . 27) (73 . 16) (74 . 0) (42 . 1.0e-009) (43 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.416565) (40 . 0.487255) (40 . 0.652305) (40 . 0.758041) (40 . 0.885703) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (40 . 1.0) (10 -99.999 -0.451006 0.0) (41 . 1.0) (10 -100.089 19.5429 0.0) (41 . 0.833374) (10 -94.8553 45.1436 0.0) (41 . 0.674556) (10 -76.1876 82.0585 0.0) (41 . 0.509619) (10 -32.6275 118.551 0.0) (41 . 0.37797) (10 44.7961 131.471 0.0) (41 . 0.283994) (10 132.414 81.475 0.0) (41 . 0.231975) (10 158.649 -22.317 0.0) (41 . 0.221016) (10 102.534 -112.05 0.0) (41 . 0.245399) (10 7.26388 -132.265 0.0) (41 . 0.318455) (10 -64.0637 -89.1353 0.0) (41 . 0.472562) (10 -86.4268 -59.8257 0.0) (41 . 0.598701) (10 -96.4076 -32.9059 0.0) (41 . 0.744716) (10 -99.3583 -16.1168 0.0) (41 . 0.862414) (10 -99.9774 -5.24189 0.0) (41 . 0.954281) (10 -99.999 -0.451006 0.0) (41 . 1.0))

 

Перейдите в web приложение на страницу NURBS3D

Очистите текстовое поле ‘I&M’ и вставьте текст из буфера. Нажмите последовательно [NURBS from AutoCAD] > Zoom Spl > [Create].

Отобразите график кривизны (кнопка [Draw Curvature as F(x)]. Убедитесь, что NURBS-модель перенесена точно.

 

Выполните подразбиение (subdivision) сплайна (кнопки [Subdivide] > [Create]).

Рисунок 8.6.2. Уплотнение NURBS модели.

Перенесите преобразованную модель в nanoCAD. Кликните [NURBS to nanoCAD] и выпоните процедуру переноса NURBS-модели в nanoCAD.

Рисунок 8.6.3. Уплотненная NURBS  модель в nanoCAD.

Отредактируйте локально уплотненный s-полигон в чертеже nanoCAD перемещением вершин s-полигона (рисунок 8.6.4).

Рисунок 8.6.4. Отредактированный уплотненный сплайн.

 

Вывод. На комплексе nanoCAD + FairCurveModeler можно редактировать рациональные b-сплайновые кривые общего формата представления без потери точности.

 

8.7. Построение и редактирование b-сплайновых кривых с управляющими ломаными в открытом формате

 

1. Приложение v_nano.lsp позволяет непосредственно в графической среде nanoCAD создавать и редактировать с контролем макропараметров и графиков кривизны   b-сплайновые кривые произвольной степени m ( m = 2,...,10),  двух типов формата (float, clamped) , двух типов топологии (замкнутые и назамкнутые).

Нарисуйте в nanoCAD  ломаную s-полигона (рисунок 8.7.1).

Рисунок 8.7.1. S-полигон.

Выполните v_nil и затем v_splnrb. По запросам программы

1) укажите ломаную;

1) установите значения параметров моделируемой b-сплайновой кривой:

- степень,

- топологию,

- формат;

2) установите параметры отображения

- шаг интерполяции,

- масштаб отображения графика кривизны над кривой. Масштаб задает отношение отображаемой максимальной кривизны к длине кривой.

После этого программа отобразит сплайновую кривую и графики кривизны (эволюту и график кривизны над кривой) (рисунок 8.7.2).

Рисунок 8.7.2. Построенная b-сплайновая кривая.

Редактировать удобно следующим образом. Переместите вершину ломаной. Нажмите пробел.

Программа отобразит измененную кривую (рисунок 8.7.3).

Рисунок 8.7.3. Отредактированная кривая.

Для редактирования более мощными средствами перейдите в Web FairCurveModeler на страницу NURBS3D. Перенесите ломаную s-полигона с помощью процедуры V_Spoly.

 

2. Редактирование b-сплайновой кривой, созданной в web FairCurveModeler

Можно перенести сформированную NURBS модель кривой любой степени и любого формата в nanoCAD (см. п. 6.3. NURBS Curve to nanoCAD). Однако стандартная NURBS модель в nanoCAD представляется только в закрытом формате (рисунок 8.7.4).

Рисунок 8.7.4. B-сплайновая кривая в закрытом формате.

Процесс редактирования концевых участков b-сплайновой кривой с использованием s-полигона в закрытом формате является неустойчивым и не позволяет достичь хорошего качества по критериям плавности. Более устойчивым является метод редактирования с применением s-полигона в открытом формате. Для редактирования b-сплайновых кривых любой топологии в открытом формате в графической среде nanoCAD можно перенести s-полигон и параметры NURBS модели в nanoCAD для редактирования программой v_nano.lsp. На странице NURBS3D  переведите формат s-полигона b-сплайновой кривой в открытый тип

Format

(  ) Clamped

(*) Float

и нажмите [Create] (рисунок 8.7.5).

Рисунок 8.7.5. B-сплайновая кривая в открытом формате.

Перенесите  s-полигон с параметрами NURBS модели в nanoCAD по процедуре переноса (см. 6.2. S-Polyline to nanoCAD). Выполните команды v_splgnrb и v_test_crv. Программа v_nano.lsp отобразит кривую и графики кривизны (эволюту и график кривизны над кривой (рисунок 8.7.6).

Рисунок 8.7.6. B-сплайновая кривая в открытом формате в nanoCAD.

Например, Вам нужно обеспечить плавное уменьшение  кривизны до нуля на начальном участке кривой. Для этого перестройте s-полигон. Концевой участок должен имеет s-образную форму. Редактировать удобно следующим образом. Переместите вершины ломаной. Нажмите пробел. Программа отобразит измененную кривую.

Для отображения графиков кривизны выполните команду v_test_crv (рисунок 8.7.7).

Рисунок 8.7.6. Отредактированная b-сплайновая кривая.

Для устранения эффекта ухода концевой точки кривой от исходного положения воспользуйтесь следующим подходом: переместите все m (m – степень кривой) концевых точек на величину отклонения.

Для переноса отредактированного s-полигона в web FairCurveModeler используйте команду v_spoly. Команда используется для реализации процедуры импорта ГО кривой или поверхности из чертежа autoCAD / nanoCAD в web-приложение.

Выводы:

Комплекс web FairCurveModeler + (nanoCAD + v_nano.lsp) позволяет в комфортной граяической среде nanCAD редактироавать b-сплайновые кривые в открытом формате.

 

Выводы к п.8

 

Методы построения v-кривой и методы аппроксимации v-кривой обеспечивают изогеометричность построения кривой на ГО вида опорной или касательной ломаной линии при выполнении требований на конфигурацию.

 

Особенности аппроксимации v-кривой

1) аппроксимация посредством геометрической NURBzS кривой

GNRBzS кривая

- геометрически точно аппроксимирует конические v-кривые;

- геометрически точно аппроксимирует контуры с прямолинейными участками;

Недостатки

- обеспечивает только 2-ой порядок гладкости на участках перегиба и участках перехода на прямолинейность;

- не обеспечивает плавности кручения пространственной кривой;

2) аппроксимация посредством B-сплайновой кривой высокой степени m (m = 6,8,10)

B-сплайновая кривая

- аппроксимирует v-кривую с высокой точностью и с сохранением качества v-кривой;

- улучшает качество плоской v-кривой на участках перегиба (повышает порядок гладкости до m-1);

- улучшает качество пространственной v-кривой (повышает плавность кручения пространственной кривой);

Недостатки:

- при резком изменении дискретной аппроксимации кривизны (в частности, при переходе на прямолинейность) точность аппроксимации понижается.