Как стать автором
Обновить

Комментарии 23

P.S. Я знаю, что реализации C-spline уже есть для PHP, например в pChart, но сплайна Акимы и кривой Безье я нигде не нашел. С антиалиасингом в PHP тоже весьма тухло. Так что библиотекаа может быть весьма полезной.
Если сделать imageantialias ( resource $image, bool $enabled ) — линии будут с антиалиасингом.
Только линии, и только толщиной в один пиксель. Я лично, когда хочу антиалиаснг, использую pChart wiki.pchart.net
> например в pChart, но сплайна Акимы и кривой Безье я нигде не нашел
В чистом виде там есть и Безье. Но, чтобы им рисовались графики — неа.
wiki.pchart.net/doc.draw.bezier.html

> Так что библиотекаа может быть весьма полезной.
Если собирайтесь выкладывать код под GPL, то не плохо было бы запилить это все в pDraw.class, а затем опубликовать патч на форуме pChart'a.
Тем временем ChartDirector продолжает «продаваться» и рисовать графики быстрее и красивее :-)
a) он платный
б) он поддерживает только интерполяцию сплайнами (видимо, кубическими)
Зато он на С. Он быстрый. У него есть API и модули практически под все распространенные языки.
ОДин минус — цена
Иногда проще купить и использовать. Когда присутсвует разнообразие графиков или непредсказуемость требований, то 99 у.е за лицензию дешевле, чем оплата труда программиста, день работы которого меньше 50у.е. не стоит. Купив готовое проверенное решение платишь за подключение и настройку (пара дней максимум при готовых данных). Разрабатывая на основе своих наработок платишь за создание, подключение, настройку, оптимизацию. Труд программера в любом случае дороже выходит.
Под какой лиценизией вы выпускаете данный код?
Планируете ли выложить его на какой-нибудь github?
Думаю, что GPL всех устроит. А вы что посоветуете?
Библиотеку перенесу с хоумпаги, как только выполню todo list. С GitHub не работал, надо разобраться,
> GPL всех устроит

Очень смелое заявление.

Советую посмотреть, почему стоит выбрать более свободную BSD-like, а не GPL -> lionet.livejournal.com/31952.html
В «экселе» (вообще-то OOCalc и google docs) часто строю скользящее среднее и по ней кусочно-линейная.
А почему координаты в массиве array(x1 => y1)? Это не позволяет построить две точки с одинаковой X, что в свою очередь ограничивает исключительно графиками (а можно было бы рисовать произвольные кривые)
Насколько я понял, произвольные кривые может рисовать только метод Безье.
Кубические многочлены, на которых строятся сплайны, не могут иметь 2 разных значения в одной точке X.
Возможно, но хотя бы Безье — ведь уже хорошо.
Ок — исправим :)
Я бы предложил взамен вот это. У него есть несоколько преимуществ и один недостаток:
+ не зависит от серверного языка
+ совершенно не нагружает сервер
+ на много больше возможностей
— это не картинка, и соответственно теряет те свойства что имеют изображения
Если вам не надо кешировать картинки и есть определённая нагрузка то да, лучше JavaScript (Flash) решения.
Эх, помню, как реализовывал все это на Паскале более 10 лет назад :) Даже собрал потом все, что нашел, в архичвчик и выложил на своем сайтике на nador.ru.
Спасибо! Как раз искал что-то вроде сплайна Акимы. Теперь знаю, как это называется.
Для реализации сглаживания я рисовал кривую в отдельной картинке, затем применял размытие по Гауссу с помощью функции imageconvolution и уже потом накладывал картинку на оси.
Отличная библиотека, спасибо!

Только вот в сплайне Акимы я разобрался, только разбив функцию на полдюжины других :-)
Если интересует, могу скинуть переделанный код (правда, он на С++)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.