Как применить сплайн-матрицу? - PullRequest
0 голосов
/ 26 февраля 2011

1) У меня есть куча контрольных точек сплайна в диапазоне от P0 до PN.
2) У меня есть матрица сплайн-базисов.

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

Теперь я продолжаю видеть следующую форму:

                [b00, b01, b02, b03] [p0]
                [b04, b05, b06, b07] [p1]
[t^3, t^2, t, 1][b08, b09, b10, b11].[p2]
                [b12, b13, b14, b15] [p3]

Так что я предполагаю, что p0 и т.д. - мои контрольные точки.Я также предполагаю, что это на компонент (то есть x, y, z).Однако я совершенно не уверен, что именно я делаю со значениями t.

Может кто-нибудь объяснить это для меня?Скорее всего, я просто идиот :)

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

1 Ответ

1 голос
/ 26 февраля 2011

Да, это для каждого компонента, поэтому каждый p - одно число.Они являются, скажем, x-координатами четырех последовательных контрольных точек.

Ваша матричная вещь - просто произведение трех матриц: обычное умножение матриц.Так что это сумма: t ^ 3. (B00.p0 + b01.p1 + ...) + t ^ 2. (B04.p0 + b05.p1 + ...) + и т. Д. И это ваше значение координаты при данном значениит.(t ^ 3 означает t * t * t, а не t XOR 3, как в C, конечно.)

Диапазон значений t обычно составляет от 0 до 1 на каждом сегменте сплайна.Значения b будут тогда такими, что значение при t = 1 для одного сегмента будет равно значению при t = 0 для следующего (и, следовательно, не зависит от первой контрольной точки первого сегмента или последней контрольной точкиследующего).

...