Аппроксимирующие кривые Безье степени N - PullRequest
4 голосов
/ 19 апреля 2009

Я знаю, что есть методы для аппроксимации кубических кривых Безье ( эта страница также была хорошей ссылкой), но есть ли более быстрый метод для аппроксимации кривой Безье степени N? Или вы можете использовать только обобщение ниже?

Из википедии:

Кривая Безье степени n может быть обобщена следующим образом. Для заданных точек P0, P1, ..., Pn кривая Безье имеет вид:

alt text

Ответы [ 2 ]

2 голосов
/ 21 апреля 2009

Типичным (общим) способом ускорения оценки выражений, подобных этому, является «прямое дифференцирование». Я быстро взглянул на показанное это , что выглядит правильным подходом, но я могу не ручайтесь за его точность, поскольку я не прочитал его должным образом. Надеюсь, это поможет (будьте осторожны, я тоже не полностью прочитал ваши ссылки, так что в этом нет ничего нового ...)

0 голосов
/ 13 мая 2009

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

По моему опыту, стоимость настройки прямого дифференцирования стоит только для более чем 2 * (N + 1) оценок; так что для (скажем) кубической кривой, если вам нужно меньше восьми точек на кривой, вам лучше просто оценить кривую непосредственно восемь раз, используя формулу в исходном посте.

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

...