Интерполяция сплайнами Акимы.
May. 20th, 2013 02:33 pmИногда втемяшишь себе что-то в голову, и уже ночью снятся формулы и идеи.
Озадачился тут масштабированием поверхности по одной оси. Точнее, масштабное увеличение одной оси, для сохранения пропорций объекта. Пока решил топорно, в результате выглядит ужасной лесенкой.

Страшная лесенка, при масштабировании в 200 раз
В результате мой взгляд упал в интерполяцию. Сейчас с удовольствием (лучше всякой худ. лит-ры) читаю книжку о вычислительной математике, которую я собирался прочитать на новогодние праздники. О кубической интерполяции все мы знаем. Начал гуглить готовые алгоритмы, и наткнулся на отличный пост http://habrahabr.ru/post/130873/ с разбором полётов разных алгоритмов. А от туда на сайтец с программой Akima spline interpolation program.
Берём исходные точки
1
1.5
1.7
2
2.1
2.2
7
7.1
3.2
2
2
2
7
2
2
Без интерполяции, только с линейной интерполяцией (гнуплот сам строит такой) получается следующий график.

График, построенный линейной интерполяцийей
Скармливает точки программе (без переделок), и на выходе получаем

Те же данные, но интерполированные сплайнами Акимы
Алгоритму быть. Теперь осталось выкорчевать процедуры из исходной программы и вставить в свою.
P.S. Любой пост всегда украсит красивый график :))
Озадачился тут масштабированием поверхности по одной оси. Точнее, масштабное увеличение одной оси, для сохранения пропорций объекта. Пока решил топорно, в результате выглядит ужасной лесенкой.

Страшная лесенка, при масштабировании в 200 раз
В результате мой взгляд упал в интерполяцию. Сейчас с удовольствием (лучше всякой худ. лит-ры) читаю книжку о вычислительной математике, которую я собирался прочитать на новогодние праздники. О кубической интерполяции все мы знаем. Начал гуглить готовые алгоритмы, и наткнулся на отличный пост http://habrahabr.ru/post/130873/ с разбором полётов разных алгоритмов. А от туда на сайтец с программой Akima spline interpolation program.
Берём исходные точки
1
1.5
1.7
2
2.1
2.2
7
7.1
3.2
2
2
2
7
2
2
Без интерполяции, только с линейной интерполяцией (гнуплот сам строит такой) получается следующий график.

График, построенный линейной интерполяцийей
Скармливает точки программе (без переделок), и на выходе получаем

Те же данные, но интерполированные сплайнами Акимы
Алгоритму быть. Теперь осталось выкорчевать процедуры из исходной программы и вставить в свою.
P.S. Любой пост всегда украсит красивый график :))
no subject
Date: 2016-03-09 06:21 am (UTC)