Код: Выделить всё
#include
...
std::vector points(4);
points[0] = { 0, 0 };
points[1] = { 1, 3 };
points[2] = { 3, -3 };
points[3] = { 7, 4 };
boost::math::catmull_rom cr(std::move(points));
auto max_s = cr.max_parameter();
auto val = cr(2);
Очевидно, что я не понимаю, как работает этот класс, и как его использовать. Хотите? Я не ожидаю линейного поведения от его вывода.
ahmed: я попробовал интерполятор Boost barycentric_rational, используя пример из документации Boost (набор данных Walter Kohn). Когда я планирую полученные интерполированные данные, это выглядит следующим образом:
Средние части ранней части изгиба выглядят хорошо, но на более поздние оска. Я предполагаю, что изменение в расстоянии между данными X является причиной проблемы, но это означает, что этот интерполятор не подходит для моей цели.
Для сравнения я наложил те же данные, используя код библиотеки Boost Makima (Modified Akima), и он выглядит так:
это, безусловно, больше, чем я ожидаю от интерполятора. Теперь я хотел бы попробовать интерполятор Catmull-Rom для сравнения.
Подробнее здесь: https://stackoverflow.com/questions/796 ... erpolation
Мобильная версия