b-сплайны для рисования, не прогнозирования, основанные на контрольном пути

Я попытался подойти к моей общей проблеме с помощью двух отдельных вопросов здесь, касающихся SO: укажите вектор фиксированного узла в bs-call и установите сплайн B в контрольном пути. Ответы на них привели меня к переформулированию более крупной проблемы, которую я сейчас публикую.

Я пытаюсь выполнить (в R), учитывая набор (немонотонных) контрольных точек, как мне нарисовать b-сплайн вдоль пути, заданного контрольными точками. B-сплайн должен быть зажат с обоих концов. Это чисто для графических целей.

ПРИМЕЧАНИЕ. Я не пытаюсь прогнозировать значения на основе контрольных точек. Используя комбинацию predict, lm а также bs как предложено в разделе "Приспособление сплайна B к траектории управления" приводит к сплайну ab, который пытается пройти через контрольные точки (что не является точкой) - особенно если настройка df или же knots так что сплайн зажат, такой подход приводит к переоснащению, и сплайн будет проходить через каждую контрольную точку.

В конце концов, подход будет применен к 100 или 1000 отдельным наборам контрольных точек, поэтому эффективность алгоритма является фактором, хотя в настоящее время я просто ищу способ сделать это.

данные игрушки (такие же, как в связанных вопросах):

path <- data.frame(
    x = c(3, 3.5, 4.6875, 9.625, 5.5625, 19.62109375, 33.6796875, 40.546875, 36.59375, 34.5, 33.5, 33),
    y = c(0, 1, 4, 5, 6, 8, 7, 6, 5, 2, 1, 0)
)

Все это с целью вычисления иерархических ребер в R

РЕДАКТИРОВАТЬ:

Итак, кажется, что я не могу получить доступ к базовой реализации b-сплайна, которая используется под капотом (или, может быть, я не слишком старался). Как бы то ни было, в итоге я создал собственную реализацию на основе Rcpp, основанную на алгоритме де Боора Джейсона Ю-Цех Чи. Плюсом этого было то, что я мог сделать его векторизованным, чтобы можно было построить несколько путей за один раз. Это будет частью предстоящего пакета CRAN (ierarchicalSets), но я буду рад поделиться им со всеми, кто проявит интерес к этому времени (слишком долго, чтобы размещать здесь)...

ОБНОВИТЬ:

Для тех, кто заинтересован в этом, рисование сплайнов будет реализовано как расширение geom/stat для ggplot2 в пакете расширения ggforce

0 ответов

Другие вопросы по тегам