Новая функциональность C3D Toolkit, как и исправление уже существующих алгоритмов, зачастую появляется по запросам наших заказчиков. Сегодня показываем как раз такой пример: в продукт на базе ядра C3D потребовалось добавить инструменты для визуального анализа и контроля качества кривых по гладкости и кривизне. Для их реализации в C3D Modeler были разработаны методы, отвечающие как за построение самого графика кривизны, так и за последующий анализ кривых.
График кривизны является визуальным представлением, иллюстрирующим значения кривизны в каждой точке кривой. Эти значения показаны отрезками, перпендикулярными к самой кривой. Такие графики обычно используют для анализа гладкости кривой, то есть контроля плавности изменения значения кривизны. Чем длиннее отрезок, тем больше величина кривизны в данной точке.
Для построения такого графика можно воспользоваться методом расчета кривизны кривой Curvature(double t) или использовать для этого тестовое приложение, выполнив команду «Выполнить-Построение-Графика-Кривизны кривой». В результате на экране получится изображение как на рисунке.
Подробнее о методах для вычисления параметров кривых можно прочитать на страницах онлайн-документации:
https://c3d.ascon.ru/doc/math/class_mb_curve.html
https://c3d.ascon.ru/doc/math/class_mb_curve3_d.html
Для визуального анализа и контроля качества кривой мы добавили метод поиска всех особых точек функции кривизны кривой (экстремумов, точек разрыва и точек перегиба) GetCurvatureSpecialPoints().
В данный метод на вход подается массив, который заполняется самим алгоритмом, а также точность вычисления. Поля массива содержат параметры найденных точек и значения кривизны в них. В тестовом приложении добавлена возможность строить особенные точки кривизны через меню «Создать-Точку в пространстве-На базе кривой-Перегибы и экстремумы кривизны кривой», а также возможность визуализации эпюры кривизны через меню «Выполнить-Построение-Графика-Эпюра кривизны кривой».
В качестве примеров рассмотрим знакомые всем кривые: окружность и эллипс. На окружности нет особенных точек, а эллипс содержит два минимума и два максимума кривизны. Эти точки видны на построенных графиках.
В некоторых случаях анализ кривой выполняется не с целью обнаружения экстремумов кривизны, а с целью определения, например, ее максимального значения, то есть минимального радиуса, величина которого может являться технологическим ограничением. Проверка может быть сделана на наборе объектов постоянной кривизны. Для нахождения точек на кривой, в которых кривизна принимает наибольшее и наименьшее значения, добавлен метод CurveMinMaxCurvature(). Его подробное описание можно найти на странице онлайн-документации: https://c3d.ascon.ru/doc/math/group___algorithms__3_d.html.
Автор:
Сергей Бирюков
Продакт-менеджер C3D Toolkit