Поиск участков кривой NURBS, кривизна которых превышает предопределенное значение

Я пытаюсь найти острые углы кривой NURBS. Для этой задачи я определяю предельную кривизну. Я пытаюсь найти участки кривой с кривизной выше этого значения. Одним из вариантов является интерполяция по кривой и вычисление кривизны для всех значений, но это может занять время, и некоторые острые точки могут быть упущены. Любые идеи о том, как найти эти разделы эффективным способом?


person Hakan Kapson    schedule 26.01.2016    source источник


Ответы (1)


Вычисляя производную кривизны аналитически, я думаю, вы найдете (ужасное) выражение с полиномом в числителе. Хороший полиномиальный решатель позволит вам найти корни, а значит, и экстремумы, разбить кривую на участки с монотонной кривизной и оттуда найти точные решения k=c с помощью regula falsi или подобного.

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

Преимущество выравнивания по сравнению с равномерной выборкой состоит в том, что оно автоматически регулирует плотность точек.

Другая идея состоит в том, чтобы прибегнуть к методу аппроксимации кривых дугами окружности (это можно сравнить с операцией уплощения второго порядка). Вы найдете несколько статей по теме (не путайте с аппроксимацией окружности кривыми), но обычно эти методы сложны.

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

person Yves Daoust    schedule 26.01.2016