P.S. Я знаю, что реализации C-spline уже есть для PHP, например в pChart, но сплайна Акимы и кривой Безье я нигде не нашел. С антиалиасингом в PHP тоже весьма тухло. Так что библиотекаа может быть весьма полезной.
> например в pChart, но сплайна Акимы и кривой Безье я нигде не нашел
В чистом виде там есть и Безье. Но, чтобы им рисовались графики — неа. wiki.pchart.net/doc.draw.bezier.html
> Так что библиотекаа может быть весьма полезной.
Если собирайтесь выкладывать код под GPL, то не плохо было бы запилить это все в pDraw.class, а затем опубликовать патч на форуме pChart'a.
Иногда проще купить и использовать. Когда присутсвует разнообразие графиков или непредсказуемость требований, то 99 у.е за лицензию дешевле, чем оплата труда программиста, день работы которого меньше 50у.е. не стоит. Купив готовое проверенное решение платишь за подключение и настройку (пара дней максимум при готовых данных). Разрабатывая на основе своих наработок платишь за создание, подключение, настройку, оптимизацию. Труд программера в любом случае дороже выходит.
Думаю, что GPL всех устроит. А вы что посоветуете?
Библиотеку перенесу с хоумпаги, как только выполню todo list. С GitHub не работал, надо разобраться,
А почему координаты в массиве array(x1 => y1)? Это не позволяет построить две точки с одинаковой X, что в свою очередь ограничивает исключительно графиками (а можно было бы рисовать произвольные кривые)
Насколько я понял, произвольные кривые может рисовать только метод Безье.
Кубические многочлены, на которых строятся сплайны, не могут иметь 2 разных значения в одной точке X.
Я бы предложил взамен вот это. У него есть несоколько преимуществ и один недостаток:
+ не зависит от серверного языка
+ совершенно не нагружает сервер
+ на много больше возможностей
— это не картинка, и соответственно теряет те свойства что имеют изображения
Эх, помню, как реализовывал все это на Паскале более 10 лет назад :) Даже собрал потом все, что нашел, в архичвчик и выложил на своем сайтике на nador.ru.
Для реализации сглаживания я рисовал кривую в отдельной картинке, затем применял размытие по Гауссу с помощью функции imageconvolution и уже потом накладывал картинку на оси.
Только вот в сплайне Акимы я разобрался, только разбив функцию на полдюжины других :-)
Если интересует, могу скинуть переделанный код (правда, он на С++)
Интерполяция: рисуем гладкие графики средствами PHP и GD