Алгоритм разрезания сплайна в виде романа? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть сплайн катмулла с 6 CV, и я хочу отрезать его в произвольной точке вдоль сплайна.

Как рассчитать конечные точки двух новых сплайнов, чтобы они сохраняли форму, которая была до того, как они были разрезаны на две части?

Итак, представьте, что это сплайн с 6 точками:

p0      p2      p4
 \     / \     / \
  \   /   \C  /   \
   \ /     \ /     \
    p1      p3      p5

Если я хочу вырезать этот сплайн в точке C, тогда у меня будет два новых сплайна с 5 CV каждый?

Spline #1: p0, p1, p2, X, C
Spline #2: C, X, p3, p4, p5

Где X - это резюме, которое мне нужно добавить, чтобы сохранить форму сплайна.Но как мне вычислить позицию, в которой Х должен быть?

Или моя логика вообще неверна и существует совершенно иное решение проблемы?

Спасибо!

1 Ответ

0 голосов
/ 20 сентября 2018

Сплайн Катмулла-Рома по сути является сплайном, составленным из нескольких кубических кривых Безье.Итак, если вы хотите разделить его при любом параметре t, вам просто нужно выяснить, на какой кривой Безье находится этот параметр, а затем разделить эту кривую Безье, используя известный алгоритм де Кастельжау.Разделенные результаты все еще являются кубическими кривыми Безье.Однако, если вы хотите найти новый набор CV, из которых полученный сплайн Catmull-Rom будет иметь точно такую ​​же форму, что и сплит сплит от исходного сплайна, я бы сказал, что это невозможно.Я объясню более подробно ниже.

Исходя из определения сплайна Катмулла-Рома, исходный сплайн, определенный 6 CV: p0, p1, ..., p5 будет иметь касательную в точке p2 в направлении вектора (p1,p3).Для нового сплайна Катмулла-Рома, определяемого 5 CV: p0, p1, p2, X и C, где C - любая точка на исходном сплайне CR, тангенс в точке p2 будет в направлении вектора (p1, X).

Если мы хотим, чтобы новый сплайн CR точно представлял сплит сплит № 1 исходного сплайна, то тангенс в точке p2 от этих двух сплайнов должен быть по крайней мере в одном направлении, что означает, что точка X должна лежатьна линии, определенной р1 и р3.Этот критерий делает невозможным, чтобы новый сплайн Catmull-Rom точно представлял форму разделенного сплайна № 1 от исходного сплайна.

...