Дублирующиеся точки вдоль кривой NURBS
В моем текущем проекте я реализовал NURBS-кривые, и в начале кривой у меня есть несколько трехмерных точек, которые все расположены в нормальной плоскости точки (u = 0.0). Теперь я хочу скопировать эти точки в другие места кривой (например, u = 0,5), чтобы создать какой-то механизм выдавливания / развертки. Мой теоретический подход состоит в том, чтобы создать локальную систему координат в точке 0.0 и рассчитать координаты каждой точки относительно этой системы. Затем я могу создавать локальные системы координат в нужных точках и размещать их там. Моя проблема в том, что при первом выводе кривой NURBS я могу получить касательную и, следовательно, нормальную плоскость точки / системы (локальное направление X), но я не знаю, как ориентировать систему. Моя первая идея состояла в том, чтобы взять вторую производную кривой NURBS и использовать ее для вычисления локальной оси Y и Z системы, но результаты вторых производных, похоже, не подходят для этого подхода.
Есть ли общий подход к решению этой проблемы?
В качестве дополнительного вопроса мне интересно, как диктовать касательный вектор данной контрольной точки, например тангенс первой контрольной точки. В настоящее время я решаю эту проблему, диктуя положение второй контрольной точки, которая выглядит не очень элегантно.
2 ответа
Похоже, вы хотели бы найти локальную систему координат в любой точке кривой NURBS. Если это так, то типичный выбор - рамка Frenet. Смотрите эту ссылку для более подробной информации.
Что касается вопроса "касательного вектора данной контрольной точки", поскольку контрольные точки в общем случае не лежат на кривой NURBS, у нее нет касательного вектора. Если он вам действительно нужен по какой-то особой причине, вы можете использовать касательный вектор в точке на кривой, ближайшей к контрольной точке.
Мы решили ту же проблему, используя этот подход: