Программа
тестирования методов построения, редактирования и модификации плавных кривых
1.
Построение V-кривой и
аппроксимация NURBzS кривой
1.1. Построение на точках окружности
1.2. Построение на касательной к окружности
1.3. Построение на опорной ломаной с участком перегиба
1.4. Построение на касательной ломаной с участком
перегиба.
1.5. Построение на ломаной
с прямолинейными участками
1.6. Построение на
пространственной ломаной
1.7. Построение кривых с
учетом граничных условий
1.7.1. Построение произвольных
кривых с граничными условиями
1.7.1.1.
Построение на опорной ломаной
1.7.1.2.
Построение на касательной ломаной
1.7.2.
Построение кривых сопряжения
1.7.2.1.
Построение сопряжения на опорной ломаной
1.7.2.2.
Построение сопряжение на касательной ломаной
1.7.3.
Построение кривой сопряжения с монотонной кривизной
1.8. Рекомендации по
формированию опорных ломаных при построении плавной кривой
1.8.1.
Ломаные регулярной формы
1.8.2.
Ломаные гармоничной формы
1.8.3.
Ломаные нерегулярной формы
1.9. Рекомендации по
формированию касательных ломаных при построении плавной кривой
2.
Построение V-кривой и
аппроксимация B-сплайновой кривой
2.1. Построение на точках
окружности
2.2. Построение на точках
окружности с гармонизацией распределения точек
2.3. Построение на опорной
ломаной с участком перегиба
2.5. Анализ точности
построения кривой на опорной ломаной
2.4. Критические участки
ломаной
2.6. Особенности
аппроксимации посредством B-сплайновой
кривой нечетной степени
2.7. Построение на
замкнутой касательной ломаной
2.8. На касательной ломаной
с перегибом
2.9. Построение B-кривой на
нерегулярной ломаной
2.10. Построение сопряжения высокого порядка
гладкости
2.11. Построение на
пространственной ломаной
3.
Построение и редактирование кривых на ГО
Эрмита второго порядка фиксации
3.1. Редактирование кривой
на ГО Эрмита
3.2. Создание ГО Эрмита
второго порядка фиксации
3.3. Редактирование кривой
на ГО Эрмита
3.3.1.
Редактирование кривой на дуальных ГО
3.3.2.
Редактирование касательных в точках перегиба при построении глобального сплайна
3.4.1.
Построение NURBzS-шаблона
Клотоиды
3.4.2. Построение NURBS шаблона Клотоиды
3.4.3.
Построение NURBzS
шаблона Секрисы Маклорена
3.4.4.
Построение NURBS
шаблона Сектрисы Маклорена
3.5.1.
Опция фиксации касательной при построении V-кривой на опорной ломаной ГО Эрмита
3.5.2.
Опция фиксации точки при построении V-кривой на касательных ГО Эрмита
3.5.3.
Опция фиксации касательных при построении на ГО Эрмита B-сплайновой кривой
4.
Преобразования NURBS
кривых
4.1. Повышение степени
NURBzS кривой
4.4. Усечение / конвертирование
формата NURBS кривой
4.5. NURBzS в конический сплайн
4.6. Обмен с Геометрическим
Буфером
5.
Построение кривой на односегментной и двухсегментной ломаной
5.1. Построение кривых на
отрезке с граничными условиями
5.2. Построение кривой на
двухзвенной ломаной
6.
Перспективные направления разработок.
6.1. Модификация алгоритма
построения B-сплайновой кривой с прямолинейным участком ломаной.
Приложение
А. Файлы с тестовыми моделями
Программа предназначена для отладки, тестирования и демонстрации
функциональных возможностей комплекса программ FairCurveModeler изогеометрического моделирования кривых высокого качества по критериям
плавности в C3D. Программа может быть использована
для обучения приемам моделирования в комплексе FairCurveModeler & C3D.
Разработаны
процедуры моделирования, которые содержат последовательность методов, для
решения укрупненных задач моделирования. Эти процедуры могут быть использованы
как прототипы процедур моделирования в САПР и приложениях.
Функции
программы можно вызвать из меню C3D. Функции
разбиты на две группы:
- функции
моделирования;
- функции
преобразований.
Группа
функций моделирования в C3D вызывается следующим образом:
Создать
> Кривую в пространстве > Плавную кривую (рис. 1).
Рис. 0.1. Вызов функции из группы моделирования.
Группу
функций преобразований можно вызвать следующим образом:
Модифицировать
> Кривую в пространстве > Плавную кривую (рис.2).
Рис.
0.2. Вызов функции из группы
преобразований.
Для
анализа качества кривых в системе
используются функции C3D:
-
вывода графика кривизны в виде эпюры кривизны;
-
вывода графика кривизны в виде функции кривизны по длине;
- вывода
значений кривизны в заданных точках кривой.
Для
анализа биения кривизны и определения максимального и минимального значений кривизны используются функции анализа
приложения FairCurveModeler в nanoCAD.
Для
тестирования подготовлены тестовые примеры в папке ‘Файлы с тестами’.
Разделы,
обозначенные звездочками, описывают перспективные методы моделирования, которые
необходимо реализовать программно.
1.1. Построение на точках окружности
Прочитайте
файл 'Ломаная на окружности.c3d' (рис. 1).
Рис.
1.1.1.Замкнутая опорная ломаная. Вершины ломаной принадлежат окружности.
Выполните команду: ‘Bezier-Spline on base polyline’.
Укажите
кривую. В ответ на запрос (рис. 2 ) укажите 0.
Рис.
1.1.2. Запрос ввода значения степени уплотнения.
На
запрос гармонизации распределения точек укажите 0.
Рис.
1.1.3. Запрос значения флага перераспределения точек.
Программа
построит V-кривую и аппроксимирует геометрической
рациональной кубической кривой Безье (NURBzS
кривой) (рис. 4.)
Рис.
1.1.4. NURBzS кривая, аппроксимирующая V-кривую без уплотнения.
Постройте
эпюру кривизны (рис. 5) .
Рис.
1.1.5. Эпюра кривизны.
V-кривая
геометрически точно моделирует окружность на точках окружности, а NURBzS
геометрически точно аппроксимирует V-кривую.
Прочитайте
файл ‘Касательная к окружности.c3d’ (рис.1).
Рис.
1.2.1. Замкнутая касательная ломаная. Звенья ломаной касаются окружности.
Постройте
V-кривую на касательной ломаной по команде ‘Bezier-Spline on tagent polyline'.
Установите степень уплотнения 0 и флаг перераспределения 0.
Протестируйте
качество кривой построением эпюры кривизны (рис. 2).
Рис.
1.2.2. Построенная кривая. Эпюра кривизны.
V-кривая
геометрически точно моделирует окружность на касательной ломаной к окружности и
NURBzS кривая геометрически точно аппроксимирует V-кривую.
1.3. Построение на опорной ломаной с участком перегиба
Прочитайте
файл ‘Опорная с перегибом и острыми углами.c3d’ (рис.1).
Рис.
1.3.1. Опорная ломаная с точкой
перегиба.
Выполните команду ‘Bezier-Spline on base polyline’.
Укажите
кривую.
Рис.
1.3.2. Запросы программы.
Ответьте
на запросы (рис. 2). Коэффициент уплотнения установите 1. Флаг перераспределения
0.
Ответьте
на запрос ввода опции о форме перегиба (рис. 3).
0
– кривая сохраняет заданное направление касательной и точку перегиба (в данной команде эти параметры
определяются по умолчанию в алгоритме структуризации кривой на опорной
ломаной);
1
– участок перегиба формируется в виде сегмента кубической кривой после первого
уплотнения V-кривой;
2
- участок перегиба формируется в виде сегмента кубической кривой до уплотнения
V-кривой.
На
рис. 4 показано построение кривой с параметрами по умолчанию.
Рис.
1.3.4. Построение по параметрам
умолчания. Опция формирования участка перегиба с фиксированной точкой и с
фиксированным направлением касательной (0). Отображение эпюры кривизны.
При
значении опции формирования участка перегиба,
равном 1, формируется сегмент
кубической кривой, соединяющий смежные
точки после однократного уплотнения (рис. 5).
Рис.
1.3.5. Построение с опцией, равной 1.
Формирование участка в виде сегмента кубической кривой, соединяющего
смежные точки после однократного уплотнения. Отображение эпюры кривизны.
При
значении опции формирования участка перегиба,
равном 2, формируется сегмент
кубической кривой, соединяющий смежные
точки до однократного уплотнения (рис. 6).
Рис.
1.3.6. Плавная сплайновая кривая Безье, построенная с опцией формирования участка
перегиба, равной 2.
Откройте
файл 'Касательная с перегибом.c3d’ (рис.
1).
Рис.
1.4.1. Касательная ломаная с участком перегиба.
Выполните команду ‘Bezier-Spline on tangent polyline’.
Ответьте
на запросы (рис. 2).
Рис.
1.4.2. Запросы программы построения на касательной ломаной.
Ответьте
на запрос ввода опции о форме перегиба (рис. 3).
Рис.
1.4.3. Опция формирования участка перегиба.
0
– кривая сохраняет заданное направление касательной и точку перегиба (в данной
команде эти параметры определяются по умолчанию в алгоритме структуризации
кривой на опорной ломаной);
1
– участок перегиба формируется в виде сегмента кубической кривой после первого
уплотнения V-кривой;
2
- участок перегиба формируется в виде сегмента кубической кривой до уплотнения
V-кривой.
На
рис. 4 показано построение кривой с параметрами по умолчанию.
Рис.
1.3.4. Построение по параметрам
умолчания. Опция формирования участка перегиба с фиксированной точкой и с
фиксированным направлением касательной (0). Отображение эпюры кривизны.
Рис.
1.3.5. График кривизны на участке перегиба. Разрыв третьей производной.
При
значении опции формирования участка перегиба,
равном 1, формируется сегмент
кубической кривой, соединяющий смежные
точки после однократного уплотнения (рис. 6).
Рис.
1.3.6. Построение с опцией, равной 1.
Формирование участка в виде сегмента кубической кривой, соединяющего
смежные точки после однократного уплотнения. Отображение эпюры кривизны.
При
значении опции формирования участка перегиба,
равном 2, формируется сегмент
кубической кривой, соединяющий смежные
точки до однократного уплотнения (рис. 7).
Рис.
1.3.7. Сплайновая кривая Безье, построенная с опцией формирования участка перегиба,
равной 2.
Ограничения
При
некоторых конфигурациях кубическая кривая участка перегиба может иметь нежелательные
особенности формы. Например, при резком изменении
углов при вершинах касательной ломаной (файл ‘Опорная с перегибом и острыми
углами 2.c3d’, рис. 8).
Рис.
1.3.8. Критическая конфигурация касательной
ломаной.
При
опции = 0 конфигурация вполне 'съедобная ' (рис. 9).
Рис. 1.3.9. Кривая с опцией по умолчанию = 0.
Однако
при ненулевых опциях форма участка перегиба имеет нежелательные особенности (рис.
10, 11).
Рис.
1.3.10. Построение с опцией, равной 1.
Формирование участка в виде сегмента кубической кривой, соединяющего
смежные точки после однократного уплотнения. Отображение эпюры кривизны.
Рис.
1.3.11. Сплайновая кривая Безье, построенная с опцией формирования участка перегиба,
равной 2.
Из-за
резкого изменения углов касательной ломаной возникает нежелательная особенность построения
участка перегиба. Действительно, для построения сегмента кубической кривой
конфигурация концевых касательных не самая благоприятная (рис. 12).
Рис.
1.3.12. Сегмент кубической кривой.
Данный
дефект легко устраняется следующей техникой. Усечем острой угол прямой, направление
которой примерно совпадает с направлением стороны тупого угла (файл
'Касательная с перегибом 2.c3d’). Такое построение можно выполнить всегда без
нарушения исходной структуры кривой.
Перестройте
кривую с теми же опциями (рис. 13, 14).
Рис.
1.4.13. Построение на исправленной касательной ломаной. Опция = 1.
Рис.
1.4.14. Построение на исправленной
касательной ломаной. Опция = 2.
Откройте файл 'Straight_Site_2.c3d’ (рис. 1)
Рис. 1.5.1. Ломаная с прямолинейным участком.
Выполните команду 'Bezier-Spline on base polyline'. Укажите ломаную.
Рис.
1.5.2. NURBzS кривая на ломаной с прямолинейным участком. Показана эпюра кривизны.
Программа
построит кривую с геометрически точным прямолинейным участком.
Ограничение
Кривая
геометрически точно моделирует кривую второго порядка гладкости с прямолинейным
участком. Но на участках перехода на прямолинейный участок не обеспечивается
плавность кривизны.
Можно
сказать, что построение V-кривой
выполняется на плоской развертке пространственной
ломаной на плоскость. Плоская развертка сохраняет пространственные треугольники,
составленные из смежных звеньев ломаной. После определения плоской V-кривой и
ее аппроксимации NURBzS кривой сегменты NURBzS-кривой отображаются в
треугольники пространственной ломаной.
Пространственная
NURBzS-кривая составлена из плоских сегментов кубических рациональных кривых
Безье. Поскольку плоские сегменты лежат разных плоскостях, то пространственная
NURBzS-кривая имеет разрывы функции кручения
(рис. 1, файл ‘Spatial.c3d’).
Рис.
1.6.1. NURBzS кривая на пространственной
ломаной.
Для
сглаживания функции кручения (до ее непрерывности) в функцию повышения степени
(с 3-ей до 6-ой) включена опция коррекции формы GB-полигона NURBzS кривой 6-ой
степени.
В
местах стыка смежных сегментов смежные треугольники локальных B-полигонов переносятся
вращением вокруг общей касательной на общую соприкасающуюся плоскость,
представляющую биссекторную плоскость между плоскостями смежных сегментов.
Опция обеспечивает непрерывность кручения пространственной NURBzS кривой 6-ой
степени (рис. 2, ‘файл Spatial.c3d’).
Рис.
1.6.2. Сглаженная NURBzS кривая 6-ой степени.
При
построении кривых можно использовать граничные условия вида касательной и
кривизны. Эти параметры снимаются с геометрических объектов вида NURBS кривых.
Построение
кривых выполняется с учетом граничных
условий (граничных параметров) вида касательных и значений кривизны. В качестве
граничных объектов используются фиксированные NURBS кривые.
Например,
необходимо построить кривую на опорной ломаной с граничными условиями. Зададим граничные
объекты в виде окружностей. Окружности можно построить функциями построения
плавной кривой на точках окружности (см. п. 1.1). Концевые точки ломаной должны
быть инцидентны граничным объектам (рис. 1, файл End_Objects.c3d).
Рис.
1.7.1.1.1. Исходная опорная ломаная с
граничными объектами.
Построим кривую командой: Create > Curve in space
> Fair > Bezier – Spline fillet on polyline.
Укажем
на чертеже ломаную.
На
запрос типа ломаной (рис. 2) введем значение 0 (опорная ломаная).
Рис.
1.7.1.2 Запрос на тип исходной ломаной.
На
запросы 'Specify a first curve’ и 'Specify a second curve’ укажем
на чертеже первый граничный объект (первую окружность) и затем второй граничный
объект (вторую окружность).
На
запрос (рис. 3) учета кривизны ответим 1 (да, учитывать)
Рис.
1.7.1.3 Запрос на учет кривизны.
На
запрос (рис. 4) ответим 1 (однократное уплотнение).
Рис.
1.7.1.4 Запрос на уплотнение (subdivision) кривой сопряжения.
На
запрос (рис. 5 ) гармонизации ответим 0.
Рис.
1.7.1.5 Запрос гармонизации.
Команда
построит кривую (рис. 6).
Рис. 1.7.1.6. Кривая с заданными граничными параметрами.
Проверим
качество построения по графикам кривизны (рис. 7).
Рис.
1.7.1.7 Графики кривизны.
Построим
кривую на касательной ломаной с граничными условиями. Зададим граничные объекты
в виде окружности и отрезка прямой (в формате NURBS) (рис. 1, файл End_Objects.c3d).
Рис.
1.7.1.2.1. Исходная касательная ломаная с граничными объектами.
Построим кривую командой: Create > Curve in space > Fair >
Bezier – Spline on Polyline with end Objects.
Укажем
на чертеже ломаную.
На
запрос типа ломаной (рис. 2) введем значение 1 (касательная ломаная).
Рис.
1.7.1.2.2. Запрос типа исходной ломаной.
На
запросы 'Specify a first curve’ и 'Specify a second curve’ укажем
на чертеже первый граничный объект (первую окружность) и затем второй граничный
объект (отрезок).
На
запрос (рис. 3) учета кривизны ответим 1 (да, учитывать)
Рис.
1.7.1.2.3 Запрос на учет кривизны.
На
запрос (рис. 4) ответим 1 (однократное уплотнение).
Рис.
1.7.1.2.4. Запрос на уплотнение (subdivision) кривой сопряжения.
На
запрос (рис. 5 ) гармонизации ответим 0.
Рис.
1.7.1.2.5 Запрос гармонизации.
Команда
построит кривую (рис. 6).
Рис. 1.7.1.2.6. Кривая с заданными граничными параметрами.
Проверим
качество построения по графикам кривизны (рис. 7).
Рис.
1.7.1.2.7. Графики кривизны.
Благодаря
тому, что граничные условия можно брать с произвольных NURBS кривых, функцию
построения кривых с граничными условиями можно использовать для построения
кривых сопряжения. В этом случае мы берем граничные условия с сопрягаемых
кривых.
Кривая
сопряжения строится так же, как и предыдущие кривые, на опорной ломаной или
касательной ломаной.
При
построении используются граничные параметры вида касательных и значений кривизны,
которые снимаются с фиксированных сопрягаемых кривых.
Построим
ломаную сопряжения с минимальным числом точек (рис. 1, Fillet_a.c3d).
Рис.
1.7.1.1 Опорная ломаная сопряжения с минимальным числом вершин.
Построим кривую командой: Create > Curve in space > Fair >
Bezier – Spline fillet on polyline.
Укажем
на чертеже ломаную сопряжения.
На
запрос типа ломаной (рис. 2) введем значение 0 (опорная ломаная).
Рис.
1.7.1.2 Запрос на тип исходной ломаной.
Далее
на запрос ' Specify a first curve' укажем на чертеже первую кривую и затем на запрос
' Specify a second curve' укажем вторую кривую.
На
запрос (рис. 3) учета кривизны ответим 1 (да, учитывать)
Рис.
1.7.1.3 Запрос на учет кривизны.
На
запрос (рис. 4) ответим 1 (однократное уплотнение).
Рис.
1.7.1.4 Запрос на уплотнение (subdivision) кривой сопряжения.
На
запрос (рис. 5 ) гармонизации ответим 0.
Рис.
1.7.1.5 Запрос гармонизации.
Команда
построит кривую сопряжения (рис. 6).
Рис. 1.7.1.6. Кривая сопряжения.
Проверим
качество построения по графикам кривизны (рис. 7).
Рис.
1.7.1.7 Графики кривизны.
Можно
управлять формой кривой сопряжения введением дополнительных точек ломаной (рис.
8, файл ‘Fillet_b.c3d’).
Рис.
1.7.1.8. Ломаная сопряжения с 4-мя
вершинами.
Графики
кривизны (рис. 9).
Рис. 1.7.1.9. Ломаная сопряжения с 4-мя вершинами.
Применение
касательной ломаной для построения кривой (и кривой сопряжения) позволяет более
определенно структурировать кривую.
Построим
касательную ломаную сопряжения с минимальным числом звеньев (рис. 1, ‘Fillet_c.c3d’).
_Рис. 1.7.2.10 Касательная ломаная сопряжения.
Вызываем
ту же команду и отвечаем на запросы так же, как при построении кривой на
опорной ломаной. Кроме ответа на запрос выбора ломаной сопряжения (рис. 2).
Рис.
1.7.2.2. Запрос на тип ломаной сопряжения.
Указываем тип = 1.
Команда
построит кривую сопряжения (рис. 3).
Рис.
1.7.2.3 Кривая сопряжения на касательной ломаной.
Проверим распределение кривизны на кривых
(рис. 4, файл ‘Fillet_d.c3d’).
Рис.
1.7.2.4. Графики кривизны на кривых.
Можно
строить кривые сопряжения с помощью уникальной команды построения кривой с
монотонной кривизной, Это команда ‘Sectrix of Maclaurin’. Кривая, сектриса Маклорена, строится на
двухзвенной касательной ломаной. Необходимо соблюдать единственное ограничение
на форму двухзвенника: угол между звеном
и основанием треугольника, образованного двухзвенником, не должен быть тупым.
Строится
двухзвенник. Звенья двухзвенника касательны к исходным кривым (рис. 15, Fillet_f.c3d).
Рис.
1.7.15 Касательный двузвенник сопряжения.
Затем
на двухзвеннике строится сектриса Маклорена (рис. 16).
Рис.
1.7.16 Сопряжение в виде сектрисы
Маклорена. Показан график кривизны в виде эпюры.
Это
сопряжение 1-го гладкости.
Для
обеспечения 2-го порядка гладкости перестройте исходные сопрягаемые кривые с
командой построения кривой с граничными условиями, используя граничные условия,
снятые с концевых точек сектрисы Маклорена.
Качество
функциональных кривых непосредственно влияют на проектные характеристики изделия. С другой стороны, качество кривых
зависит от качества подготовленных исходных данных (геометрических
определителей).
Для
устойчивого и качественного построения плавных кривых исходные ломаные должны
удовлетворять определенным ограничениям. Такие ломаные названы ломаными регулярной
формы. Регулярная ломаная обладает следующими свойствами:
1)
Локально-выпуклые участки содержат не менее 3-х звеньев;
2)
Разница длин смежных звеньев не превышает 90% от длины большего звена;
3)
Углы между звеньями ломаной на локально-выпуклом участке больше 90 градусов;
4)
Прямолинейные участки определяются вершинами, геометрически точно лежащими на
прямой;
5)
Точки перегиба опорной ломаной определяются центральной точкой прямолинейного
или близкого к прямолинейности двузвенника ломаной;
6)
Кручение ломаной (изменение угла между нормалями к плоскостям смежных двузвенников)
не превышает 45 градусов.
7)
Ломаные являются выразительными. Форму ломаной можно оценить визуально.
1)
Являются ломаными регулярной формы;
2)
Участки кривой с предполагаемой монотонной кривизной задаются участками ломаной
с монотонным изменением длины звеньев и с монотонным изменением угла или с постоянством
угла между звеньями;
3)
Другое определение гармоничной ломаной связано с определением гармоничного
распределения точек на кривой. Точки гармонично распределены на кривой, если
касательная к кривой в данной точке параллельна
хорде (отрезку из точек, смежных к данной точке). Ломаная, составленная из
точек гармоничного распределения на кривой, будет иметь гармоничную форму.
Нерегулярные
ломаные не обладают свойствами регулярных ломаных. Нерегулярными ломаными могут
быть ломаные с участками пилообразной формы и кручением больше 45 градусов.
Пилообраные ломаные
Пилообразную
форму ломаной не рекомендуется использовать при моделировании кривой высокого
качества. Поскольку на участках “пилы” невозможно построить множество конических
кривых двойного соприкосновения для генерации точек V-кривой, то кривая на таких
участках представляет последовательность сегментов локального сплайна G2.
Откройте
файл с пилообразными ломаными (рис. 1, файл ‘sawtooth3.c3d’).
Рис.
1.6.1. Пилообразные ломаные
Постройте
на них плавные сплайновые рациональные кривые Безье как на опорных ломаных
(рис. 2).
Рис. 1.6.2. Сплайновые рациональные кривые Безье
на опорных ломаных.
Проверьте
качество кривых (рис. 3).
Рис.
1.6.3. Графики кривизны кривых.
Постройте
плавные рациональные кривые Безье на пилообразных ломаных (рис. 1) как на
касательных (рис. 4)
Рис.
1.6.4. Рациональные кривые Безье на пилообразных касательных ломаных
Проверьте
качество кривых (рис. 5).
Рис.
1.6.5. Графики кривизны кривых.
На
симметричной конфигурации опорной ломаной определяется симметричная кривая
(рис. 6, файл ‘Star.c3d’)
Рис.
1.6.6. Построение на ломаной “Звезда”.
Рис.
1.6.7. Графики кривизны кривой.
На
симметричной касательной ломаной также определяется симметричная кривая (рис.
8, файл Star.c3d)
Рис.
1.6.8. Построение на касательной ломаной “Звезда”.
Рис.
1.6.9. Графики кривизны кривой.
Коэффициент уплотнения
При
0-ом значении коэффициента уплотнения V-кривая
создается с однократным уплотнением. Но аппроксимация V-кривой посредством
NURBzS кривой выполняется по точкам V-кривой, совпадающим с вершинами исходной
ломаной. Количество сегментов NURBzS кривой равно
количеству сегментов исходной ломаной.
0-ое
значение можно давать только при определенных конфигурациях исходной опорной ломаной:
- опорная
ломаная полностью локально выпуклая;
-
точки перегиба опорной ломаной фиксированы.
При
других конфигурациях программа принудительно однократно уплотняет. Количество
сегментов NURBzS кривой будет в 2 раза
больше, чем у исходной ломаной.
Запрещенные конфигурации ломаных
1.
Угол между смежными сегментами ломаной не должен быть меньше 30 градусов. В
противном случае выводится сообщение об ошибке (рис. 1)
2.
Замыкание трехзвенника, составленного из смежных сегментов ломаной, должно быть
выпуклым. При нарушении этого случае выводится сообщение об ошибке (рис. 2,
файл ‘nonConvex.c3d’)
Рис.
2. Запрещенные конфигурации ломаной.
3.
Замкнутая ломаная должна иметь не менее 5 сегментов. 5-сегментная ломаная
должна быть выпуклой. При малом количестве точек выводится сообщение об ошибке
(рис. 3)
Рис.
3. Количество вершин замкнутой ломаной меньше 5.
4.
Конфигурация ломаной не должна приводить к вырождению V-кривой.
V-кривая
строится на основе множества конических кривых двойного соприкосновения. Коническая
кривая строится на 5 точках / касательных. Некоторые конфигурации ломаных могут
приводить к неоднозначности при определении конической кривой (например, вершины
всей / участка ломаной циклично проходят по вершинам треугольника,
четырехугольника). На таких участках ломаной конические кривые могут выродиться
в пару прямых. Такие ситуации
фиксируются программой и программа выводит сообщение об ошибке (рис.
4, файл ‘reDegenerate.c3d’).
Рис. 1.8.4.1. Конфигурации ломаных, приводящие к
вырождению V-кривой.
Алгоритм
построения V-кривой на касательной начинается с построения опорной ломаной
начального приближения на касательной ломаной.
Опорная
ломаная начального приближения начинается и заканчивается концевыми точками
касательной ломаной.
Остальные
вершины опорной ломаной принадлежат серединам сегментов касательной ломаной.
В
случае замкнутой касательной ломаной вершины замкнутой опорной ломаной начального
приближения все вершины лежат на серединах сегментов касательной ломаной.
Ограничения
на форму касательной ломаной - это ограничения на форму опорной ломаной
начального приближения. И эти ограничения полностью совпадают с ограничениями
на форму опорной ломаной, которые были сформулированы выше в п.1.8.
То
есть, конструктор должен представить или нарисовать опорную ломаную начального
приближения. И форма опорной ломаной
начального приближения должна отвечать требованиям на форму опорной ломаной для
построения V-кривой (см. п. 1.8).
Откройте
файл ‘Ломаная на окружности.c3d’.
Выполните
команду ‘В-Spline on base polyline’. Укажите ломаную.
Установите параметры по умолчанию (степень уплотнения – 1, гармонизация – 0)
(рис. 1)
Рис. 2.1.1. Построение V-кривой с однократным уплотнением без гармонизации
распределения и аппроксимация B-сплайновой
кривой. Отображение эпюры кривизны.
Выполните
анализ в nanoCAD с использованием приложения FireCurveModeler. Экспортируйте созданную
кривую в Геометрический Буфер. Выполните команду ‘Обмен с Геометрическим Буфером’. В меню выберите п. 4
– ‘записать NURBS’
Рис.
2.1.2. Меню обмена с Геометрическим Буфером.
Укажите
кривую.
В nanoCAD прочитайте кривую из геометрического буфера командой V_RD_NURBS_GB (рис. 3)
Рис. 2.1.3. NURBS-кривая в nanoCAD.
Выполните
тестирование командой V_TEST_CRV (рис. 4).
Рис. 2.1.4. Эпюра кривизны и график эволюты в
nanoCAD.
Биение кривизны
"Min Curvature = "
0.00959699
"Max Curvature = "
0.0104081
Постройте
V-кривую и аппроксимируйте B-сплайновой кривой с включенным флагом гармонизации
(рис. 1). Выполните команду ‘B-Spline on
base polyline’. Задайте параметры по умолчанию. На запрос
Рис.
2.2.1. Запрос гармонизации.
Ответьте
1-Да.
Программа
построит V-кривую с гармоничным
распределением и аппроксимирует B-сплайновой кривой (рис. 2). Проверьте качество
(рис. 3).
Рис.
2.2.2. Аппроксимация с гармонизацией
распределения точек по контуру V-кривой.
Рис.
2.2.3. Эпюра кривизны.
Проверьте
качество в nanoCAD (рис. 4).
Рис.
2.2.4. Эпюра кривизны и эволюта в nanoCAD.
Биение кривизны:
"Min Curvature = "
0.0099997
"Max Curvature = "
0.0100003
Для
инженерных расчетов получены приемлемые качество и точность аппроксимации
окружности. Гармонизация распределения точек по контуру V-кривой позволяет существенно повысить качество аппроксимации
посредством B-сплайновой кривой.
Прочитайте
файл ‘Опорная с перегибом и острыми углами.c3d’.
Рис. 2.3.1. Опорная ломаная с точкой перегиба.
Выполните команду ‘B-Spline on base polyline’.
Установите параметры по умолчанию:
Степень 8. Уплотнение 1. Степень = 8. Опция формы участка
перегиба = 0 (фиксированное направление касательной).
Рис. 2.3.2. Аппроксимация
B-сплайновой кривой.
Рис. 2.3.3. Эпюра кривизны.
Метод обеспечивает высокий порядок гладкости во всех точках.
В том числе в точке перегиба. B-сплайновая кривая улучшает качество V-кривой на
участках перегиба кривой. При этом B-сплайновая кривая сохраняет заданное
направление касательной в точке перегиба. Благодаря данному свойству метода, в глобальнм сплайне можно управлять
направлением касательной в точке перегиба. Эта возможность реализуется в
методах редактирования кривой на ГО Эрмита (см. п. 3. Построение и редактирование кривых на ГО Эрмита второго порядка фиксации).
С помощью команды ‘Estimate the accuracy of approximation’ можно
оценить фактическую точность построения B-сплайновой кривой на опорной ломаной
(рис. 2).
Рис. 2.4.2. Вызов команды анализа точности псотроения
кривой на опорной ломаной.
После вызова команды на первый запрос ‘Specify a curve’ укажите опорную ломаную, на второй
запрос ‘Specify a curve’ укажите построенную кривую.
В файле отчета ‘C:\FairCurveModeler_TEMP\Temp\$fair_curve_report.txt’ команда выведет значения
погрешностей приближения:
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Distance = 0.000000
Данный отчет показываетпогрешности построения кривой на
ломаной с прямолинейным участком из примера п.2.1.
Критические
конфигурации
На некоторых участках ломаной (участках с резким изменением кривизны, прямолинейных
участках) погрешность приближения B-сплайновой кривой может превышать
заданную точность. В этом случае команда
построения выводит предупреждение 'Accuracy
of approximation rectilinear / critical sites’.
Для того, чтобы не возникали такие ситуации
- используйте конфигурации ломаной регулярной или гармоничной
формы;
- используйте пространственные ломаные с небольшим и плавным
кручением;
- используйте всегда однократное уплотнение;
- используйте не слишком высокие степени B-сплайновой кривой
(m <= 8).
Техника работы с
прямолинейными участками
На ломаных с прямолинейными участками при изогеометрическом
построении неизбежно точность аппроксимации концеых точек прямолинейного
участка будет ниже заданной точности.
Выполните
команду построения B-сплайновой кривой на опорной ломаной с прямолинейным участком
(рис. 1, файл ‘Straight_Site_2.c3d’).
В этом случае программа выдает предупреждение
Рис. 2.4.1. Предупреждение о погрешности приближения.
Отчет о погрешности приближения:
Distance = 0.000000
Distance =
0.000000
Distance =
0.000003
Distance =
0.811505
Distance =
0.000063
Distance =
0.000044
Distance = 0.297650
Distance = 0.000000
Distance = 0.000000
Distance = 0.000000
Предлагатся следующая простая техника построения B-сплайновой
кривой с прямолинейным участком. В технике учитывается своебразие алгоритма
изогеометрического построения B-сплайновой кривой на прямолинейных участках
ломаной. Прямолинейные участки задаются 3-мя и более вершинами, лежащими
геометрически точно на прямой. При построении B-сплайновой кривой эти вершины
принимаются за вершины S-полигона.
Предварительно выполним построения в CAD-системе.
Рассмотрим прямолинейный S-полигон четной степени m с количеством вершин n с равномерным расположением вершин
(рис. 2) V[i], i = 0,1…, n - 1.
Рис. 2.4.2. S-полигон.
Прямолинейный участок кривой начинается на середине между
вершинами m/2 - 1 и m/2. И заканчивается на середине между вершинами с номерами n – m/2 - 1
и n – m/2. В примере m = 4 (рис. 3).
Рис. 2.4.3. В-сплайн
прямолинейный.
Предполжим, что у нас следуюшая конфигурация исходной ломаной
(рис. 4)
Рис. 2.4.4. Опорная ломаная.
Необходимо, чтобы сегмент между точками с номерами 4 и 5 был
прямолинейным.
Отметим, что мы построили эту ломаную таким образом, что
отрезок 4-5 точно совпадает с кривой из рис. 3.
Модифицируем нашу ломаную заменой сегмента 4-5 S-полигоном из
рис. 2 . Получим следующую модифицированную конфигурацию ломаной (рис. 5).
Рис. 2.4.5. Модифицированная
опорная ломаная с прямолинейным участком.
Перенесем геометрические объекты в C3D и построим B-сплайновую
кривую степени 4 с нулевым уплотнением (рис. 6).
Рис. 2.4.6. B-сплайновая кривая степени 4 с нулевым
уплотнением.
Проверим качество кривой по эпюрам кривизны. B-сплайновая
кривая 4-ой степени 3-го порядка гладкости (рис. 7).
Рис. 2.4.7. B-сплайновая
кривая степени 4 с прямолинейным участком.
Прямолинейный сегмент исходной ломаной содержится в
прямолинейном участке кривой.
Проверим точность построения сплайна на исходной ломаной
(синего цвета) (рис. 8) командой 'Estimate the accuracy of approximation'.
Рис. 2.4.8. Исходная опорная ломаная и вершины выделены.
В отчет выводится следующая таблица отклонений вершин исходной
опорной ломаной от построенной кривой:
Distance =
0.000000
Distance =
0.000000
Distance =
0.000001
Distance = 0.000000
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Distance =
0.000000
Таким образом, метод обеспечивает гарантированную
прямолинейность заданного сегмента исходной опорной ломаной.
Отметим, что если вы используете однократное уплотнение, то
необходимо учитывать то, что количество сегментов прямолинейного S-полигона
будет в 2 раза больше. И длина прямолинейного участка также увеличится.
Если вы хотите, чтобы заданный прямолинейны сегмент, и только
этот сегмент, точно содержал прямолинейный участок кривой, то в построениях
необходимо учитывать положения вершин S-полигона кривой до и после концевых
вершин прямолинейного участка модифицированной ломаной. Эти вершины лежат на
той же прямой, содержащей прямолинейный участок ломаной (см. рис. 6).
Для аппроксимации используется 1) метод
изогеометрической аппроксимации с сохранением направлений звеньев S-полигона и 2)
традиционный метод.
1) Изогеометрический метод построения B-сплайновой кривой
При
изогеометрической аппроксимации посредством B-сплайновой кривой четной степени учитывается расстояния от опорных точек,
близких к узловым точкам, до сплайновой
кривой. Концевые точки опорной ломаной точно совпадают с концевыми узловыми
точками сплайна четной степени. При аппроксимации сплайнами нечетной степени
учитываются расстояния до сплайна от опорных точек, близких к точкам сплайна со
значениями параметра 0.5, 1.5, ... . Концевые точки опорной ломаной точно
совпадают со сплайном со значением параметра 0.5 и k-0.5, где k –номер последней точки. Результирующая сплайновая кривая имеет лишние
"хвосты" в виде участков сплайна с отрезками параметров [0, 0.5] и
[k-0.5, k]. Эти хвосты удаляются путем однократного равномерного
уплотнения и удаления концевых
сегментов.
Результирующая
B-сплайновая кривая будет иметь в 2 раза больше
сегментов, но сохранит равномерную параметризацию. Равномерная параметризация
необходима при построении B-сплайновых поверхностей на каркасе B-сплайновых
кривых.
Откройте
файл ‘Ellipse_Points.c3d’. Укажите
кривую. Введите параметры на запросы программы (рис. 2.6.1).
Рис.
2.6.2. Запросы параметров на построение.
Программа
построит B-сплайновую кривую 9-ой степени по точкам эллипса (рис. 2.6.3).
Рис.
2.6.3. В-сплайновая кривая 9-ой степени.
Эпюра кривизны и график кривизны.
2) Традиционный метод
При
традиционном методе B-сплайновая кривая строится таким
образом, что узловые точки сплайна совпадают с вершинами исходной опорной ломаной.
При
построении необходимо задать нечетную степень и на запрос вида аппроксимации задать
значение 0 (построение по условиям совпадения узловых точек сплайна с вершинами
опорной ломаной).
В
качестве показательного примера построим B-сплайновую кривую степени 7 на ломаной,
вершины которой принадлежат окружности (рис. 4, файл ' Ломаная на окружности.c3d').
Рис.
2.6.4. Построенный интерполяционный
сплайн степени 7.
Проверим,
действительно ли узловые точки сплайна инцидентны вершинам исходной ломаной.
Для этого изменим формат NURBS кривой от B-сплайнового представления с
S-полигоном на представление сплайновой кривой Безье с GB-полигоном. Для этого
выполним команду ‘Extract / Change format the NURBS’.
На
запрос (рис. 5)
Рис. 2.6.4.
Запрос типа выходного управляющего сплайнового полигона.
введем значение 3 (формат
сплайновой кривой Безье). Команда преобразует формат представления кривой.
Кривая геометрически не меняется (рис. 6).
Рис.
2.6.6. Сплайновая кривая Безье с GB-полигоном.
Как
видим по конфигурации GB-полигона, узловые точки сплайна совпадают с вершинами
исходной ломаной.
Для
построения V-кривой на касательной ломаной и
аппроксимации посредством B-сплайновой кривой
используется команда ‘B-Spline on tangent polyline’. На рис. 1. показан
результат выполнения команды на касательной к окружности (файл ‘Касательная к
окружности.c3d’. Степень сплайна – 8.
Рис.
2.7.1.B-сплайновая кривая 8-ой степени, построенная на
замкнутой касательной ломаной.
Постройте
касательную со звеном перегиба. Звено перегиба делит ломаную на участки разной
формы (рис. 1, файл 'Касательная с перегибом.c3d’).
Рис.
2.8.1. Касательная ломаная с перегибом.
Выполните команду ‘Bezier-Spline on tangent polyline’.
Ответьте на запрос (рис.2):
Рис.
2.8.2.Запросы параметров построения.
Команда
построит кривую на касательной ломаной (рис. 3)
Рис.
2.8.3. Построенная кривая с отображение эпюры кривизны.
При
построении B-кривых рекомендуется
использовать ломаные регулярной и гармоничной формы (см. п. 1.6.1).
Однако
пилообразная ломаная может возникнуть при построении B-сплайновой поверхности.
Столбцы каркаса S-полигонов B-сплайновых кривых могут иметь пилообразную форму.
Поэтому алгоритмы построения B-кривых были модифицированы для построения на
нерегулярных ломаных.
Откройте
файл ‘sawtooth3.c3d’ с пилообразными ломаными (рис. 1.6.1).
Постройте
на них плавные сплайновые B-сплайновые кривые 8-ой степени как на опорных
ломаных (рис. 1).
Рис. 2.9.1. B-сплайновые кривые 8-ой степени на опорных ломаных.
Проверьте
качество кривых (рис. 2).
Рис.
2.9.2. Графики кривизны кривых.
Постройте
плавные B-сплайновые кривые 8-ой степени на пилообразных ломаных (рис. 1.6.1), как на
касательных (рис. 3)
Рис.
2.9.3. B-сплайновые кривые на пилообразных касательных ломаных
Проверьте
качество кривых (рис. 4).
Рис.
2.9.4. Графики кривизны кривых
Ломаная
управляющих точек B-сплайновой кривой называется S-полигоном. S-полигон может быть представлен в закрытом (clamped) и
открытом, плавающем, формате (float). Не
путать с замкнутой (closed) кривой и незамкнутой (unclosed, open) кривой.
Промежуточное
положение занимает полуоткрытый S-полигон. Один конец совпадает с закрытым
S-полигоном, другой конец с открытым S-полигоном.
Если
вы объедините два открытых S-полигона в один, то получите интегральную кривую,
которая будет плавно объединять исходные кривые. Также можно объединит два полуоткрытых
S-полигона открытыми частями S-полигонов. Между исходными S-полигонами можно ввести
дополнительный участок S-полигона. Интегральная кривая, построенная на первом
S-полигоне + дополнительный участок S-полигона + на втором S-полигоне, также
будет плавно объединять исходные кривые. Степени исходных кривых должны
совпадать.
Именно
на этом свойстве открытых S-полигонов реализован
алгоритм построения плавного сопряжения кривых. Исходные кривые могут иметь
различный формат представления NURBS кривых. На сопрягаемой кривой указывается
точка сопряжения и выделяется сегмент для сопряжения, формат которого приводится к полуоткрытому S-полигону нужной
конфигурации последовательным увеличением степени и изменением размера
сегмента.
Затем
строится дополнительный S-полигон сопряжения. Первая вершина S-полигона сопряжения совпадает с некоторой вершиной
первого полуоткрытого S-полигона. Последняя
вершина S-полигона сопряжения совпадает
с некоторой вершиной второго полуоткрытого S-полигона. Порядок гладкости сопряжения
равен номеру вершины (0,1,2, …) исходного полуоткрытого S-полигона при отсчете от точки сопряжения. То есть
результирующая кривая может иметь произвольно высокий порядок гладкости (до
степени кривых минус единица) сопряжения с исходными кривыми. При этом порядок
гладкости сопряжения с исходными кривыми может быть разным.
Постройте
две кривые или откройте чертеж с двумя кривыми (рис. 1, файл ‘Fillet_SPoly_a.c3d’)
Рис.
2.10.1 Две кривые для построения сопряжения.
Выполните команду 'Extract / extrapolate curve segment with S-polygon'
(рис. 2).
Рис.
2.10.2 Вызов команды построения сегмента для сопряжения.
Команда
предназначена для выделения участка первой кривой в виде сегмента для сопряжения
и построения полуоткрытого S-полигона сегменте
в виде отдельной ломаной. Указывается кривая
и на кривой указывается точка сопряжения, задается степень (рис. 3)
Рис.
2.10.3 Степень.
Указывается
направление S-полигона (рис. 4).
Рис. 2.10.4 Направление сегмента.
Задается
вид S-полигона (рис. 5).
Рис.
2.10.5 Задается формат S-полигона.
Команда
формирует начальный вариант S-полигона (рис. 6)
Рис.
2.10.6 Начальная конфигурация
S-полигона.
Далее
команда запрашивает коэффициент изменения размера S-полигона для сопряжения
Можно
изменить величину S-полигона (рис. 7).
Рис.
2.10.7 Опция изменения размера
S-полигона для сопряжения.
Можно
увеличивать (t > 1) и можно уменьшать размер
(t < 1).
Например,
после ввода величины 0.5 в данном примере S-полигон уменьшится (рис. 8)
Рис.
2.10.8 Уменьшение размера S-полигона.
Аналогично
строится S-полигон для сопряжения на второй кривой (рис. 9).
Рис.
2.10.10 S-полигон для сопряжения на второй кривой.
Затем
строится дополнительный S-полигон сопряжения в виде ломаной (рис. 11).
Рис. 2.10.11 Дополнительный S-полигон сопряжения.
После
построения дополнительного S-полигона S-полигоны для сопряжения можно удалить. Остаются только, выделенные из кривых, сегменты
для сопряжения (рис. 12, 13).
Рис.
2.10.12 Сегмент для сопряжения на первой
кривой.
Рис.
2.10.13 Сегмент для сопряжения на второй кривой.
Для
построения собственно сопряжения вызывается команда ‘B-Spline
fillet on S-polygon’ (рис. 14) .
Рис. 2.10.14 Команда построения сопряжения на S-полигонах.
Последовательно
указываются ломаная сопряжения, первый сегмент для сопряжения, второй сегмент
для сопряжения и S-полигон сопряжения.
Команда строит B-сплайновую кривую
сопряжения (рис. 15).
Рис. 2.10.15 Кривая сопряжения.
Отобразите
графики кривизны исходных кривых и кривой сопряжения (рис. 16).
Рис.
2.10.16 Графики кривизны.
Далее
можно редактировать кривую сопряжения, как обыкновенную B-сплайновую кривую. У
кривой сопряжения можно редактировать только вершины, которые принадлежат дополнительному
S-полигону сопряжения кроме его концевых точек (рис. 17). В этом случае
сохранится порядок гладкости сопряжения с исходными кривыми.
Рис. 2.10.17 Редактирование S-полигона кривой
сопряжения.
Графики
кривизны исходных кривых и отредактированной кривой сопряжения (рис. 18, файл ‘Fillet_SPoly_b.c3d’).+
Рис.
2.10.18 Редактирование кривой сопряжения.
После построения сопряжения вспомогательные
сегменты и их полуоткрытые S-полигоны можно удалить.
B-сплайновая кривая степени m обеспечивает порядок гладкости m – 1 и непрерывность функции кручения порядка m – 2.
Построим
B-сплайновую кривую степени 8 на пространственной ломаной из примера п. 1.6. (рис. 1, файл
'Spatial.c3d').
Рис.
2.11.1. B-сплайновая кривая 8-ой степеени на пространственной
ломаной.
Метод
аппроксимации обеспечивает высокое качество построения пространственной B-сплайновой кривой. Идеальный пространственный график
кривизны. Сравните с пространственной NURBzS кривой, построенной на той же пространственной
ломаной (рис. 2)
Рис. 2.11.1. NURBzS кривая и B-сплайновая кривая,
построенные на одной и той же пространственной ломаной.
Предлагается
технология построения и редактирования на ГО Эрмита первого и второго порядков
фиксации.
Благодаря
дуальности (двойственности) представления V-кривой можно переходить от ГО вида опорной ломаной к
ГО вида касательной ломаной (или множеству касательных прямых). При этом
геометрически кривая не меняется. Это
расширяет возможности дизайнера. Можно более качественно определять структуру
кривой на касательной ломаной и затем уточнять положения точек построением
кривой на опорной ломаной.
ГО
Эрмита первого и второго порядков фиксации используются для высококачественной
аппроксимации аналитических кривых. В данном релизе – это клотоида и сектриса
Маклорена.
В C3D ГО Эрмита
представляется ломаной линией, вершины которой обегают опорные точки, векторы
касательных, векторы кривизны (рис. 1)
Рис.
3.1.1. ГО Эрмита - это одна ломаная.
Все
параметры ГО Эрмита второго порядка фиксации (опорные точки, векторы касательных,
векторы кривизны и значения кривизны) содержатся в одной ломаной ГО Эрмита.
Прямое построение кривой на ГО Эрмита
Две
команды реализуют непосредственно аппроксимацию ГО Эрмита без построения V-кривой:
- Bezier-Spline on Hermite GD,
- В-Spline on Hermite GD.
Эти
две команды в системе используются для приближения аналитических кривых: клотоиды
и сектрисы Маклорена.
Построение и редактирование V-кривой на
ГО Эрмита
ГО Эрмита дает возможность строить и
редактировать V-кривую непосредственно на двух видах дуальных ГО – на опорной
ломаной ГО Эрмита и на касательных ГО Эрмита.
Для
построения V-кривой на ГО Эрмита адаптированы
методы построения V-кривой опорной ломаной и
касательной ломаной и аппроксимации посредством кривой Безье или B-сплайновой кривой. Эти адаптированные под ГО Эрмита
методы реализуются командами:
- Bezier-Spline on base polyline of Hermite GD,
- Bezier-Spline
on tangents of Hermite GD,
- В-Spline on base polyline of Hermite GD,
- В-Spline on tangents of Hermite GD.
Ручное
построение ГО Эрмита второго порядка фиксации - неблагодарное дело. Вручную
невозможно задать параметры ГО так, чтобы созданная кривая была близка к желаемому
виду и имела высокое качество интегральной плавности. Поэтому в качестве
первого приближения к желаемой кривой постройте NURBzS кривую на опорной ломаной или касательной ломаной и
создайте на NURBzS кривой ГО Эрмита.
Откройте
файл ‘Опорная с перегибом и острыми углами.c3d’. Выполните
построение кривой Безье на опорной ломаной без уплотнения (рис. 1).
Рис.
3.2.1. Построенная кривая Безье.
Постройте
V-кривую на опорной ломаной и аппроксимируйте сплайновой кривой Безье.
Определите на сплайне ГО Эрмита. Вы
можете в графическом режиме отредактировать ГО Эрмита. Например, можно изменить
направления касательных в нескольких точках и изменить значения кривизны в концевых точках. Затем перейти в
режим построения на касательных и построить V- кривую с аппроксимацией посредством кривой Безье или
B-сплайновой кривой.
Выполните
команду ‘NURBzS to Hermite GD’.
Рис.
3.3.1.1. Выполнение команды ‘NURBzS
to Hermite GD’.
Укажите
построенную кривую. Программа сформирует ГО Эрмита (рис. 2, файл ‘Опорная с
перегибом и острыми углами.c3d’).
Рис.
3.3.1.2. ГО Эрмита на NURBzS кривой.
Поскольку
ГО Эрмита - это по определенным правилам построенная ломаная, то некоторые
операции редактирования можно выполнять непосредственно в графической системе C3D. Например, можно
менять направления векторов касательных (рис. 3).
Рис.
3.3.1.3. Измененные векторы касательных на ГО Эрмита.
Измените
направления касательных и постройте кривую по команде ‘Bezier-Spline on
tangents of Hermite GD’ (рис. 4).
Рис.
3.3.1.4. Вызов команды построения на касательных ГО Эрмита.
Рис.
3.3.1.5. Кривая построена на касательных. В первой и второй точке касательные были
изменены.
В
формате ГО Эрмита можно редактировать направление и положение точки перегиба.
После построения B-сплайновой кривой вы получаете кривую, которая обладает
высоким порядком гладкости и сохраняет заданное направление касательной в точке
перегиба.
Преобразуем
кривую (см. рис. 1.3.4) в формат ГО Эрмита (рис. 1).
Рис.
3.3.2.1. ГО Эрмита.
Удалим
старую кривую. Кривизна старой кривой имела концентрацию кривизны на участке
перегиба. Изменим направление касательной в точке перегиба (рис. 2).
Рис.
3.3.2.2. B-сплайновая кривая.
Построим
B-сплайновую кривую с параметрами по умолчанию и проверим качество по графикам
кривизны (рис. 3).
Рис.
3.3.2.3. Отредактированная кривая.
Подредактируем
еще (рис. 4).
Рис.
3.3.2.4. Отредактированное направление касательной в точке перегиба.
Построим
B-сплайновую кривую (рис. 5).
Рис.
3.3.2.5. Отредактированная кривая.
Итак,
мы получили кривую 7-го порядка гладкости с плавным изменением кривизны на
участке перегиба.
Можно
вручную строить произвольные ГО Эрмита второго или первого порядков фиксации и
напрямую определять кривую путем аппроксимации ГО Эрмита посредством сплайновой
кривой Безье или B-кривой. Ручное построение ГО Эрмита второго порядка фиксации
возможно, но качество построенной кривой, скорее всего, будет
неудовлетворительным. Поэтом в системе
FairCurveModeler для построения ГО Эрмита используются сплайновые кривые Безье,
построенные на V-кривой.
Аналитические кривые также являются эталоном
плавной кривой. Их не нужно улучшать посредством V-кривой.
Имеется
обширный арсенал замечательных аналитических кривых, которые нашли применение в
проектировании изделий с функциональными кривыми и поверхностями.
Для
построения ГО Эрмита на дискретном множестве точек аналитической кривой используются
первые и вторые производные.
При
аппроксимации аналитических кривых применяются методы изогеометрической аппроксимации
посредством NURBzS кривых и B-сплайновых кривых. Эти методы разработаны на основе методов аппроксимации
V-кривой.
NURBS-шаблоны аналитических кривых сохраняют высокий
порядок плавности аналитических кривых и их специфические свойства.
Для
вычисления и аппроксимации клотоиды используется команда ‘Clothoid’.
Клотоида
однозначно определяется двумя динамическими параметрами: длиной и значением
радиуса кривизны в конце начального участка.
После
вызова команды необходимо ввести динамические параметры: длину начального
участка и радиус кривизны в конце участка (рис. 1, 2).
Рис.
3.4.1. Запрос ввода радиуса в конечной точке начального участка клотоиды.
Рис.
3.4.2. Запрос ввода длины начального участка клотоиды.
Определите
количество сегментов NURBzS-шаблона
клотоиды или ГО Эрмита, поостренной на клотоиде (рис. 3).
Рис.
3.4.2. Запрос на количество сегментов NURBzS-шаблона
или ГО Эрмита.
NURBzS-шаблон клотоиды – кубическая рациональная
геометрическая сплайновая кривая Безье (рис.
4).
Рис.
3.4.4. Клотоида, аппроксимированная NURBzS
с 10 сегментами.
Далее
можно перейти к ГО Эрмита и использовать для редактирования и аппроксимации
клотоиды посредством B-сплайновой
кривой.
Исследуем
качество NURBzS-шаблона клотоиды. Построим
эпюру и график кривизны (рис. 5).
Рис. 3.4.5. Эпюра кривизны и график кривизны
NURBzS-шаблона клотоиды.
Визуально
– идеально линейный график кривизны.
Благодаря
высокому качеству аппроксимации клотоиды посредством NURBzS кривой в САПР
можно использовать NURBzS-шаблон клотоиды.
Постройте
клотоиду командой Create > Curve in Space > Fair Cuve >
Clothoid с параметрами
по умолчанию (RMin = 50, LMax = 200, количество сегментов NURBzS кривой = 10) (рис. 1).
Рис.
3.4.2.1. Клотоида, представленная NURBzS кривой.
Постройте
на NURBzS кривой клотоиды ГО Эрмита. Команда: Modify > Curve in Space
> Fair Curve > Clothoid (рис. 2). Удалите
NURBzS кривую.
ГО
Эрмита сохраните в файл ‘HGD 10 of
Clothoid.c3d’.
Рис.
3.4.2.2. ГО Эрмита на клотоиде.
На
параметрах клотоиды с помощью команды Create > Curve in Space > Fair Curve
> B-Spline
on Hermite GD постройте B-сплайновую кривую. На запросы программы укажите степень
= 8, учет кривизны в концевых точках = 1
(рис. 3).
Рис.
3.4.2.3. B-сплайновая кривая 8-ой, построенная на параметрах
клотоиды.
Проверьте
график кривизны командой Perfom > Constuction > Plot > Curve curvature
(рис. 4).
Рис.
3.4.2.4. B-сплайновая кривая 8-ой степени. График кривизны.
Проверьте
возможность построения B-сплайновой кривой нечетной степени на ГО Эрмита от
клотоиды. Установите степень 7 (рис. 5).
Рис.
3.4.2.5. B-сплайновая кривая нечетной степени (7-ой) степени.
График кривизны.
Обеспечивается
строгая монотонность кривизны.
Проверим
на более высоких степенях (рис. 6, 7).
Рис.
3.4.2.6. B-сплайновая кривая 10-ой
степени. График кривизны.
Рис.
3.4.2.7. B-сплайновая кривая 9-ой степени.
Отметим
более качественную аппроксимацию клотоиды B-сплайновыми кривыми четных
степеней. Обеспечивается строгая монотонность кривизны и практически линейный график.
В
команде построения NURBzS шаблона Секрисы Маклорена используется алгоритм
построения плавной кривой Безье на ломаной из 6 точек Сектрисы Маклорена с
фиксированными касательными в концевых точках. V-кривая хорошо аппроксимирует сектрису Маклорена на 5 сегментах. Постройте ломаную в виде
двузвенника и выполните команду 'Create > Curve in space > Fair curve
> Sectrix of Maclourin'. Программа построит
NURBzS шаблон сектрисы Маклорена (рис. 1).
Рис.
3.4.3.1. Сектриса Маклорена, представленная NURBzS кривой с графиком кривизны.
Для
дальнейшего редактирования кривой можно перейти к ГО Эрмита. Выполните команду 'Modify > Curve in space > Fair curve >
NURBzS to Hermite GD' (рис. 2).
Рис.
Переход к ГО Эрмита.
Удалите
NURBzS кривую с графиком кривизны. Сохраните ГО Эрмита в файле ‘HGD 5 of Sectrix.c3d’.
Для
редактирования кривой посредством управляющего S-полигона или для построения
B-сплайновой поверхности необходимо кривую строить в B-сплайновом формате.
Четная степень
Откройте
файл ‘HGD 5 of Sectrix.c3d’. Создайте NURBS шаблон в виде B-сплайновой кривой
8-ой степени. Выполните команду ‘Create >
Curve in space > Fair curve > Fair B-Spline on base polyline of Hermite
GD’. Установите коэффициент
уплотнения 1 (это обязательно). При задании фиксированных кривизн количество
сегментов сплайна должно быть равно или больше степени сплайна во избежание
интерференции концевых участков S-полигона при построении B-сплайновой кривой.
Установите учет кривизны в начальной точке = 1, учет кривизны в конечной точке
= 1. Программа построит NURBS шаблон с плавной монотонной кривизной (рис. 1).
Рис.
3.4.4.1. NURBS шаблон в виде B-сплайновой
кривой 8-ой степени. График кривизны.
Нечетная степень
Выполните
тот же пример с нечетной степенью. Установите степень 7. Остальные параметры
задайте как в предыдущем примере (рис. 2).
Рис.
3.4.4.2. NURBS шаблон в виде B-сплайновой
кривой 7-ой степени. График кривизны.
Для
геометрического моделирования кривых можно использовать локальные сплайны
или глобальные сплайны.
Локальные сплайны
Построение
локальных сплайнов производится локально на сегментах опорной ломаной ГО Эрмита
1-го или 2-го порядка фиксации.
Используются
параметры ГО Эрмита для построения локального сегмента кривой. Такие кривые называются
локальными сплайнами / геометрическими сплайновыми кривыми. Локальные сплайны
на ГО Эрмита позволяют обеспечить определенный порядок гладкости (обычно не
выше 2-го).
Параметры
сегмента сплайна зависят только от параметров ГО Эрмита. Параметры ГО Эрмита задаются произвольно
дизайнером.
Именно
эта возможность конструирования кривой на ГО Эрмита дает чрезвычайную гибкость
методу. Но именно из-за этого локальные сплайны не обеспечивают интегральной
плавности кривой.
Глобальные сплайны
Глобальный
сплайн строится с одновременным учетом параметров ГО и параметров всех
сегментов кривой.
Глобальные
сплайны обеспечивают интегральную плавность кривой. Считается, что интегральная
плавность обеспечивается минимизацией некоторого функционала, связанного с
потенциальной энергией кривой.
В
некоторых простых случаях этот функционал определяется явно. Отметим, что глобальный
сплайн того же порядка гладкости, что и локальный сплайн, обеспечивается базовыми
кривыми с меньшим параметрическим числом.
Есть
возможность перехода от глобального сплайна к локальному сплайну с дальнейшим уточнением
условий стыковки смежных сегментов, но ценой нарушения общей плавности кривой.
Высокий
порядок гладкости (не ниже 4-го), интегральная плавность и минимизация
энергетического функционала глобального сплайна являются необходимыми условиями
для геометрического моделирования изделий с функциональными кривыми и
поверхностями.
Идеальная
кривая, в этом смысле, это осевая линия гибкой рейки с консольными закреплениями
двух концов без деформации в промежуточных точках. При деформации рейки в
промежуточных точках мы получаем физический сплайн.
Наши
исследования показывают, что глобальный сплайн вида V-кривой, построенный на
тех точках, что и физический сплайн, в случаях существенной деформации
физического сплайна, имеет меньшую потенциальную энергию. К тому же, глобальный
сплайн вида V-кривой является аффинно инвариантной. То есть глобальный сплайн
вида V-кривой является хорошей альтернативой физическому сплайну в САПР.
Метод
построения глобального сплайна вида V-кривой в FairCurveModeler доработан в
следующих направлениях:
1)
введена опция фиксации направлений касательных в заданных точках опорной ломаной при построении
V-кривой на опорной ломаной. При этом сохраняется интегральная плавность;
2)
введена опция фиксации положений точек на касательных при построении V-кривой на касательной ломаной.
При этом сохраняется интегральная плавность.
3)
введена опция фиксации направлений касательных в заданных точках опорной ломаной при аппроксимации
V-кривой посредством B-кривой. При этом сохраняется интегральная плавность;
Эти опции дают возможность гибкого
редактирования глобального сплайна при сохранении высокого порядка гладкости и
общей плавности кривой.
Алгоритм
Алгоритм
построения глобального сплайна (V-кривой) на опорной ломаной с заданными
направлениями касательных в некоторых фиксированных вершинах ломаной
реализуется следующим образом.
Определяется
V- кривая на опорной ломаной.
Затем
выполняется итерационный алгоритм корректировки направлений касательных в
фиксированных вершинах. Определяется
угол рассогласования между фактическим направлением и заданным. Затем выполняется вращение смежных вершин вокруг
фиксированной вершины в направлении уменьшения рассогласования на угол равный
или меньший, чем угол рассогласования.
Далее
определяется V-кривая и повторяется корректировка направлений касательных.
Процесс
корректировки прекращается после достижения заданных направлений касательных.
В алгоритме построения положения вершин,
смежных к фиксированным вершинам с заданными касательными, изменяются. Если требуется, чтобы все исходные вершины опорной
ломаной были инциденты построенной кривой, V-кривая должна строится с
уплотнением.
Ограничения
Заданные
направления касательных не должны противоречить форме исходной ломаной.
Изменение
положения вершин, смежных к фиксированным вершинам, выполняется в пределах сохранения
локальной формы ломаной.
Возможные области применения
Применение
опций необходимо
-
при построении батоксных линий и ватерлиний корабля с обеспечением точного направления
касательной в точке мидельного шпангоута.
-
при построении сечения фюзеляжа самолета с обеспечением точного положения габаритных
точек с ортогональными направлениями
касательных.
-
при построении аэродинамического профиля с обеспечением точного горизонтального направления касательной в
фиксированной точке наибольшего утолщения профиля.
Предварительно
постройте V-кривую (с уплотнением или без) на исходной опорной ломаной. Затем
преобразуйте в ГО Эрмита. Процедура фиксации направлений касательных
реализуется на ГО Эрмита. Установите на ГО Эрмита в фиксированных вершинах
заданные направления касательных.
Вершины
с заданными направлениями касательных должны на ломаной чередоваться вершинами
без заданных касательных. Ломаная между фиксированными вершинами с заданными
касательными должна содержать, по крайней мере, одну вершину без заданного
направления касательной.
Пример
В
качестве теста используем ГО Эрмита (рис.
1), у которого касательные фиксированных точках направлены точно под
углом 45 градусов. ГО Эрмита был подготовлен в CAD-системе. Для указания фиксированных
вершин точек построен параллелограмм
(вершины параллелограмма совпадают с фиксированными вершинами опорной ломаной
ГО Эрмита). Результирующий файл перенесен в файл C3D ‘Test_tng_fix.c3d’.
Рис.
3.5.1.1. ГО Эрмита.
Построим
V-кривую на опорной ломаной полученного ГО
Эрмита с фиксацией касательных в точках с номерами 2, 4, 6 опорной
ломаной ГО Эрмита.
Вызовем команду ‘Bezier-Spline on base polyline of
Hermite GD’ (рис. 2)
Рис. 3.5.1.2. Команда ‘Bezier-Spline
on base polyline of Hermite GD’.
На
запросы (рис. 3)
Рис.
3.5.1.3. Запрос на ввод номеров точек с
фиксацией.
задайте номера точек 2, 4, 6.
После задания этих номеров на следующий запрос номера нажмите [Cancel].
Рис. 3.5.1.4.
Построенная V-кривая с
фиксированными касательными в точках 2, 4, 6 опорной ломаной. V-кривая аппроксимирована сплайновой кривой Безье.
Промежуточные
точки с номерами 1, 3, 5, 7 используются в алгоритме для формирования
глобальной кривой с фиксацией касательных в исходных опорных точках с номерами
2, 4, 6.
Проверим
качество кривой (рис. 5).
Рис.
3.5.1.5. График кривизны над кривой.
Хорошая
интегральная плавность кривой.
Используем
данные предыдущего примера (см. рис. 3.5.1.1). Оставим на чертеже созданную
кривую (рис. 1).
Рис.
3.5.2.1. Исходные данные для тестирования.
Выполним команду 'Bezier-Spline on tangents of
Hermite GD' (рис. 2).
Рис. 3.5.2.2. Команда ‘Bezier-Spline on tangents of
Hermite GD’.
На
запросы (рис. 3)
Рис.
3.5.2.3. Запрос на ввод номеров точек с
фиксацией.
также задайте номера точек 2,
4, 6. После задания этих номеров на следующий запрос номера нажмите [Cancel].
Программа
построит кривую (рис. 4).
Рис.
3.5.2.4. Построенная кривая (синего цвета).
Удалим
кривую предыдущего примера. Выделим GB-полигон Безье-Сплайна (рис. 5).
Рис.
3.5.2.5. Выделенный GB-полигона Безье-Сплайна.
Узловые
точки сплайна совпадают с точками опорной ломаной с заданными номерами.
Проверим
качество кривой (рис. 6).
Рис.
3.5.2.6. График кривизны кривой.
График
кривизны показывает хорошую интегральную плавность кривой.
Используем
данные примера п. 3.5.1. (см. рис.
3.5.1.1). Оставим на чертеже созданную кривую (рис. 1).
Рис.
3.5.3.1. Безье-Сплайн с фиксированными касательными.
Дважды
уплотним сплайн (рис. 2). Между точками с фиксацией касательных должно быть не
менее (degree + 1) / 2 + 1 точек.
Рис.
3.5.3.2. Дважды уплотненный Безье-Сплайн.
Постройте
ГО Эрмита на Безье-Сплайне (рис. 3).
Рис.
3.5.3.3. ГО Эрмита на уплотненном Безье-Сплайне.
Выполните
команду прямого построения B-Сплайна на ГО Эрмита (рис. 4)
Рис. 3.5.3.4. Команда ‘B-Spline on
Hermite GD’.
Укажите
ГО Эрмита.
Задайте
степень сплайна 8.
На
запросы ввода номеров точек задайте номера 8, 16, 24.
Программа
построит B-кривую 8-ой степени с фиксированными касательными в точках опорной
ломаной ГО Эрмита с заданными номерами (рис.
5).
Рис.
3.5.3.5. B-кривая 8-ой степени с
фиксированными касательными в точках 8, 16, 24.
Программа
выдает предупреждение. Заданная точность построения не достигнута.
В
файл отчета C:\FairCurveModeler_TEMP\Temp\ $fair_curve_report.txt
выводится следующая информация:
Фактическая
точность аппроксимации = 0.000781155217
Количество
итераций = 10000
При
задании единичной точки с фиксацией вычисление выполняется с заданной точностью
и за меньшее число итераций. Отклонение векторов касательных < METRIC_EPSILON, погрешность построения < METRIC_ACCURACY.
Например,
при фиксации касательной в единичной точке с номером 16 программа строит
B-кривую 8-ой степени со следующими параметрами:
Фактическая
точность аппроксимации = 0.000000378356
Количество итераций = 301
Качество
кривой (рис. 6) также высокое по критериям плавности.
Рис.
3.5.3.1. Качество кривой с единичной точкой с фиксацией касательной.
Программы
преобразований реализуют следующие функции
-
повышение степени NURBzS кривой;
-
уплотнение (подразбиение) произвольной NURBS кривой;
-
вставка дополнительного узла в NURBS кривую;
-
выделение участка и конвертирование формата кривой;
-
конвертирование конической NURBzS кривой в
рациональную B-сплайновую кривую;
-
редактировать кривую на ГО Эрмита;
-
обмен с Геометрическим Буфером.
Откройте
файл с кубической NURBzS кривой. Например, после построения кривой на окружности
в п. 1.1 (рис. 1)
Рис. 4.1.1. Кубическая NURBzS кривая.
Выполните
команду ‘Повысить степень NURBzS’ (рис. 2).
Рис.
4.1.2. NURBzS кривая
6-ой степени.
Кубическая
NURBzS кривая повышается сразу до 6-ой степени. От 6-ой степени NURBzS кривая повышается только на единицу.
Команда
выполняет однократное равномерное уплотнение сплайновой кривой. Количество
сегментов увеличивается в два раза.
Используйте
выполненный пример из п. 4.1. Для уплотнения NURBzS кривой 6-ой степени выполните команду ‘Subdivide the NURBS’ (рис. 1).
Рис. 4.2.1. Уплотненная кривая.
Используем
результат преобразования NURBzS конической кривой в рациональную B-сплайновую
кривую 6-ой степени (п. 4.5. NURBzS в конический сплайн) (рис. 1)
Рис.
4.3.1. Рациональная B-сплайновая кривая 6-ой степени,
геометрически точно моделирующая эллипс.
Данный
формат NURBS кривой является самым общим видом NURBS кривых. Вставим в рациональную B-сплайновую кривую на неравномерной сетке (рис. 2 ) новый узел на
сегменте 4 по значению внутреннего параметра 0.6.
Выполним команду ‘Insert the unit into the NURBS’
Рис.
4.3.2. Номер сегмента.
Рис.
4.3.3. Значение параметра.
Кривая
успешно преобразована (рис. 4).
Рис.
4.3.4. Преобразованная кривая. Количество вершин S-полигона увеличилось на 1.
Сохраните
результат в файл ‘Insert_Unit.c3d’.
Конвертирование формата
Можно
конвертировать рациональную B-сплайновую кривую в рациональную сплайновую
кривую Безье. Можно и обратно,
рациональную сплайновую кривую Безье в B-сплайновую кривую. NURBzS кривая, которая получается при выполнении команд
'Безье-сплайн на опорной ломаной' и 'Безье-сплайн на касательной ломаной' – это
геометрическая составная кривая Безье. Она точно не конвертируется в рациональную
B-сплайновую кривую.
При
выполнении команды ‘NURBzS в конический сплайн’ NURBzS кривая сначала преобразуется действительно в
сплайновую кривую Безье и только после этого конвертируется в рациональную B-сплайновую кривую.
Точно
в B-сплайн конвертируются кривые NURBzS, которые были получены уплотнением односегментной NURBzS кривой.
Постройте
произвольную ломаную и постройте B-сплайновую
кривую произвольной степени (рис. 1).
Рис. 4.4.1. Исходная B-сплайновая кривая.
Выполните
команду ‘Выделить / изменить формат NURBS’.
Установите опции преобразования в NURBzS
всей кривой. Выходной формат 3 (NURBzS).
Начальный и конечный сегмент по умолчанию. B-сплайновая кривая преобразуется в NURBzS кривую той же степени.
Рис.4.4.2.
Преобразованная кривая в формате NURBzS.
Перенесите
конвертированную кривую и выполните обратное конвертирование (рис. 3).
Установите значение формата = 2.
Рис. 4.4.3. Обратное конвертирование.
Кривые
тождественны.
Постройте
NURBzS кривую. Поднимите степень до 6-ой.
Рис. 4.4.4. NURBzS кривая 6-ой степени.
Конвертируйте
в B-сплайновую кривую (рис. 5).
Рис.
4.4.5. B-сплайновая
кривая 6-ой степени.
Кривые
не тождественны. Конвертирование геометрической NURBzS в B-сплайновую
кривую не дает тождественной кривой.
Усечение
сплайновой кривой произвольного формата и в произвольной точке по значению
параметра выполняется в два этапа:
1)
вставляется дополнительная узловая точка по номеру сегмента и значению внутреннего
параметра сегмента;
2)
выполняется усечение сплайна по номеру начального сегмента и количеству сегментов
на усеченной кривой.
Выполните
усечение кривой по команде ‘Изменить формат’.
Используйте кривую из примера п. ‘4.3. Вставка узловой точки’ (файл ‘Insert_Unit.c3d’). Выделите из
кривой начальный участок до вставленного узла.
Укажите
кривую.
Установите
выходной формат NURBzS. На запрос (рис. 6) укажите
3.
Рис.
4.4.6.Установка выходного формата.
Установите
участок от начала кривой до вставленного узла (рис.7). Нумерация начинается с
0. Участок номер 4 принадлежит 5-му сегменту.
Рис. 4.4.7. Установка участка выделения.
Рис.
4.4.8. Преобразованная кривая.
Пример
с выполнением функции усечения приводится в п. ‘2.6. Особенности аппроксимации
посредством B-сплайновой кривой нечетной степени’.
В
качестве параметров указывается выходной формат кривой, начало выделяемого участка в виде номера
начального сегмента и количество сегментов
выделяемого участка.
Откройте
файл ‘Ellipse_Points.c3d’ с опорной
ломаной на эллипсе.
Командой
‘Безье сплайн на опорной ломаной’ постройте V-кривую и аппроксимируйте NURBzS кривой без уплотнения. Это эллипс (рис. 1 ) в формате NURBzS кривой.
Рис.
4.5.1. Эллипс в формате NURBzS кривой.
Выполните
команду ‘NURBzS в конический сплайн’.
Укажите NURBzS кривую. Это тоже эллипс (рис. 2), но в формате рациональной B-сплайновой кривой 6-ой степени.
Рис.
4.5.2. Эллипс в формате рациональной B-сплайновой
кривой 6-ой степени.
При
работе с комплексом необходимо создать на диске C: папку C:\FairCurveModeler_TEMP\Temp. При работе с
программами там размещается файл отчета $fair_curve_report.txt. В файл отчета можно выводить информацию об исходных
параметрах и параметрах созданных кривых (методы PrintCurveParams2, printGDHParams2). В файл отчета можно выводить информацию
о реальной погрешности приближения при аппроксимации B-сплайновыми кривыми
(метод printPostCreation).
Папка
используется также как Геометрический Буфер для обмена моделями между FairCurveModeler & C3D и CAD-системами
КОМПАС 3D и nanoCAD.
Команда
‘Обмен с Геометрическим Буфером’ позволяет выполнить экспорт и импорт моделей
ломаных и NURBzS кривых из C3D в КОМПАС 3D и nanoCAD, а также
обмениваться примитивами между чертежами C3D.
В
КОМПАС и в nanoCAD были подготовлены модели
некоторые ломаных (ломаная, точки которой принадлежат окружности, ломаная,
касательная к окружности и некоторые другие).
В
свою очередь из C3D были экспортированы модели для тестирования в nanoCAD. В nanoCAD
и КОМПАС в приложении FairCurveModeler можно исследовать качество кривых по эпюрам кривизны
и графикам эволюты, по значениям максимальной и минимальной кривизны, по
значению потенциальной энергии кривой.
Доступны
следующие опции (рис. 1)
Рис.
4.6.1. Опции обмена с Геометрическим Буфером.
1
– читать ГО. Импортирует из Геометрического Буфера 3D ломаную или сеть точек.
Предварительно надо создать новый файл или открыть существующий.
Подменю
'1- читать ГО’:
1.1
– читать ломаную из текстовой таблицы координат, экспортированной из облачного WEB приложения,
приложения nanoCAD / AutoCAD. Файл pnt_name.pnt.
1.2.
– читать ломаную из текстовой таблицы координат, экспортированной из КОМПАС. Файл pllne_cmps.txt.
1.3.
– читать сеть точек из текстовой таблицы координат, экспортированной из КОМПАС. Файл 3DMesh_cmps.txt.
2-
читать NURBS. Импортирует из Геометрического Буфера NURBzS кривую произвольной степени неполного формата (без
вектора узлов) или произвольную NURBS кривую в полном формате (с весами и
вектором узлов).
3-
записать ГО. Экспортирует в Геометрический Буфер 3D ломаную или 3D сеть.
Записывает ломаную или сеть в файл pnt_name.pnt для приложений FairCurveModeler
в WEB / nanoCAD / AutoCAD и одновременно в файлы pllne_cmps.txt и 3DMesh_cmps.txt для КОМПАС 3D.
4-
записать NURBS. Экспортирует в
Геометрический Буфер NURBS кривую
произвольного формата. Модель доступна для приложений FairCurveModeler в Web, nanoCAD / AutoCAD.
Выполните команду:
Create > Curve in space
> Fair > Bezier-Spline on base polyline (рис. 1).
Рис.
5.0.1. Вызов команды.
И
укажите односегментную или двухсегментную ломаную. Можно задавать в концевых
точках ломаной векторы касательных и значений кривизны.
Вначале
программа потребует ввод граничных параметров вида касательных векторов (рис. 2).
Рис.
5.0.2.Форма для ввода касательного
вектора.
Векторы
касательных можно определять координатами вектора, конечной точкой касательного
вектора, можно снимать касательную с объекта вида NURBS кривой. Снимаются
параметры касательной в точке кривой, ближайшей к концевой точке ломаной.
Затем
программа запрашивает ввод значений кривизны (рис. 3).
Рис.
5.0.3. Форма для ввода значений кривизны.
Кривизну
можно определить вводом значения, указанием точки конца вектора кривизны,
указанием точки конца вектора радиуса кривизны. Можно снять значение кривизны с
объекта вида NURBS кривой.
Направления
касательных не должны совпадать с направлениями сегментов исходной ломаной и с
направлением отрезка (хорды), соединяющего концевые точки двухзвенной ломаной.
После
ввода или отказа от ввода граничных
параметров программа запросит вид результат
построения (рис. 4).
Рис.
5.0.4. Форма для ввода вида результата построения.
Можно
построить кривую или вывести в чертеж ГО
Эрмита.
ГО
Эрмита позволяет строить кривую с более широким набором опций.
Если
не вводить граничные параметры (отказаться от ввода кнопкой [Cancel]), программа
сформирует параметры по умолчанию.
При
формировании кривой на отрезке необходимо ввести хотя бы один параметр вида
касательной.
При
формировании кривой на отрезке необходимо ввести хотя бы один параметр вида
касательной.
5.1.1.
Отрезок с касательным вектором в первой точке или второй точке. Кривизны
не задаются.
Формируется
дуга окружности (рис. 1)
Рис. 5.1.1. Дуга окружности в виде сегмента NURBzS
кривой.
5.1.2.
Отрезок с двумя касательными векторами. Кривизны не задаются.
Направления
касательных могут определить локально
выпуклую кривую (рис. 2).
Рис. 5.1.2. Локально-выпуклая форма кривой.
При определении локально-выпуклой формы
кривой на отрезке касательные должны
обязательно пересекаться и должны пересекаться над отрезком. То есть точка
пересечения касательных должна лежать в направлении первого вектора касательной
(рис.3).
Рис.
5.1.3. Локально-выпуклая форма кривой. Параметры соответствуют условиям построения.
Направления
касательных могут определить S-образную
кривую (рис. 4).
Рис.
5.1.4. S-образная форма кривой на отрезке.
S-образная
форма кривой определяется направлениями касательных векторов. Угол между первым
вектором и отрезком и угол между отрезком и вторым вектором должны иметь разные
знаки.
5.1.5. Отрезок со значениями кривизны.
Возможность
задавать касательные и кривизны с фиксированных кривых позволяет строить
участки сопряжений 1-го и 2-го порядка гладкости.
На
рис. 5. 6 построена кривая сопряжения к двум
фиксированным кривым.
Рис.
5.1.5. Сопряжение двух фиксированных кривых.
Рис.
5.1.6. Сопряжение 2-го порядка
гладкости.
После
задания (или игнорирования задания кнопкой [Cancel]) граничных условий можно
выбрать три варианта построения кривой (рис. 1).
Рис.
5.2.1.
5.2.1. Окружность.
Строится
дуга окружности по трем точкам, аппроксимированная NURBzS. Введенные граничные параметры игнорируются (рис. 2).
Рис.
5.2.2. Дуга окружности.
5.2.2. Коника (метод Юрия Лопаткина).
Строится
коническая кривая. Введенные граничные параметры игнорируются, но дополнительно
задается инженерный дискриминант (рис. 3).
Рис.
5.2.3. Форма для ввода инженерного дискриминанта конической кривой.
Коническая
кривая со значением инженерного дискриминанта 0.7 (гипербола) проходит через
исходные вершины ломаной (рис. 4).
Рис.
5.2.4. Коническая кривая в формате сегмента NURBzS.
5.2.3. V-кривая, аппроксимированная
NURBzS.
Направления
касательных определяют локально-выпуклую форму кривой (рис. 5).
Рис. 5.2.5. Выпуклая форма кривой.
S-образная
форма кривой определяется направлениями касательных векторов. Угол между первым
вектором и отрезком-хордой и угол между отрезком-хордой и вторым вектором должны
иметь разные знаки.
При
определении S-образной формы кривой на двухзвенной
ломаной вторая точка принимается за точку перегиба. Ее положение должно быть
достаточно близко к прямой, проходящей через концевые точки (рис. 6).
Рис.
5.2.6. S-образная форма кривой.
Построение сопряжений
Возможность
задавать касательные и кривизны с фиксированных кривых позволяет строить
участки сопряжений 1-го и 2-го порядка гладкости (рис. 7, 8 ).
Рис.
5.2.7. Построение сопряжения.
Рис.
5.2.8. Сопряжение 2-го порядка гладкости.
Ограничения
1.
Направления касательных не должны совпадать с направлениями сегментов исходной
ломаной и с направлением хорды, соединяющей концевые точки двухзвенной ломаной.
2.
Для определения локально-выпуклой формы кривой
на отрезке касательные должны обязательно пересекаться и должны
пересекаться над отрезком. То есть точка пересечения касательных должна лежать
в направлении первого вектора касательной.
3.
При определении S-образной формы кривой на двухзвенной
ломаной вторая точка принимается за точку перегиба. Ее положение должно быть
достаточно близко к прямой, проходящей через концевые точки. Чтобы поставить
вторую точку корректно, предварительно постройте кривую на отрезке-хорде с
такими же граничными условиями. Точка перегиба кривой покажет самое удачное
место для второй точки двухзвенника.
4.
При формировании кривой на отрезке необходимо ввести хотя бы один параметр вида
касательной.
Построенная
кривая должна геометрически точно содержать заданный прямолинейный участок исходной
ломаной.
Теория
разработана см. п. 2.4., раздел 'Техника работы с прямолинейными участками’.
Надо
реализовать программно.
'Ломаная
на окружности.c3d' - замкнутая ломаная
инцидентная окружности.
‘Касательная
к окружности.c3d’ - замкнутая ломаная касательная к окружности.
‘Опорная
с перегибом и острыми углами.c3d’ - опорная с перегибом и острыми углами. Точка
перегиба указана явно.
'Касательная
с перегибом.c3d’ - касательная с перегибом.
'Касательная
с перегибом 2.c3d’ - касательная с перегибом с критической конфигурацией..
'Straight_Site_2.c3d’
- ломаная с прямолинейным участком.
‘Spatial.c3d’
- пространственная ломаная.
'End_Objects.c3d'
- заготовки для построения кривой с граничными объектами.
'Fillet_a.c3d'
- заготовка для построения сопряжения на опорной ломаной.
‘Fillet_b.c3d’
- ввод доп точек для управления формой сопряжения.
‘Fillet_c.c3d’
- заготовка для построения сопряжения на касательной ломаной.
‘Fillet_d.c3d’
- результат построения с эпюрами кривизны.
'Fillet_f.c3d'
- заготовка для построения кривой сопряжения командой Sectrix.
‘sawtooth3.c3d’
- набор ломаных с пилообразной формой.
‘Star.c3d’
- замкнутая ломаная 'пятиконечная звезда'.
‘nonConvex.c3d’
- ломаные с запрещенной формой.
‘reDegenerate.c3d’
- конфигурации ломаных, приводящие к вырождению V-кривой.
‘Straight_Site_2.c3d’
- ломаная с прямолинейным участком.
'Ellipse_Points.c3d'
- ломаная с вершинами на эллипсе.
‘Fillet_SPoly_a.c3d’
- заготовка для построения сопряжения
B-сплайновой кривой.
‘Fillet_SPoly_b.c3d’-
результат построения сопряжения с эпюрами кривизны.
‘HGD 10 of Clothoid.c3d’ - ГО Эрмита на
NURBzS-шаблоне клотоиды.
‘HGD
5 of Sectrix.c3d’ - ГО Эрмита на Сектрисе Маклорена.
‘Test_tng_fix.c3d’
- ГО Эрмита для фиксации касательных.
‘Insert_Unit.c3d’
- конический B-сплайн со вставленным узлом.