Подтвердить что ты не робот

Найти контрольные точки безье для кривой, проходящей через N точек

Учитывая следующее красивое решение для нахождения кубических точек управления Безье для кривой, проходящей через 4 точки:

Как найти контрольные точки для BezierSegment с учетом Start, End и 2 Intersection Pts в С# - AKA Cubic Безье 4-точечная интерполяция

Интересно, если для этого существует простое расширение для того, чтобы кривая Безье проходила через N точек, для N > 2 и, возможно, N ≤ 20?

4b9b3361

Ответ 1

Это действительно старый вопрос, но я оставляю это здесь для людей, у которых есть тот же вопрос в будущем.

@divanov упомянул, что нет никакой кривой Безье, проходящей через N произвольных точек при N > 4.

Я думаю, что OP спрашивал, как вычислить контрольные точки для объединения нескольких кривых Безье, чтобы создать гладкую гладкую кривую.

В этом документе будет показано, как вычислить контрольные точки: http://www.math.ucla.edu/~baker/149.1.02w/handouts/dd_splines.pdf

который я нашел на этой записи http://corner.squareup.com/2012/07/smoother-signatures.html от Square о том, как они отображают плавную кривую, проходящую через все выбранные точки мыши нарисованная подпись.

Ответ 2

В целом, нет никакой кривой Безье, проходящей через N произвольных точек, где N > 4. Нужно рассмотреть аппроксимацию кривой, чтобы минимизировать наименьшую квадратную ошибку между вычисленной кривой Безье и данными N точек данных. Это обсуждается, например, здесь.