[Moscow.pm] B-spline (было: графики)

Анатолий Шарифулин sharifulin на gmail.com
Пт Дек 12 12:37:32 PST 2008


пипец, я думал, что только я на мехмате учился)))

12 декабря 2008 г. 22:58 пользователь Ruslan Zakirov <
ruslan.zakirov на gmail.com> написал:

> без опорных точек никак, но можно упростить.
>
> Берем кубический сплайн в непараметризованом виде:
> y(x) = a(x-x0)^3+b(x-x0)^2+c(x-x0)+d
>
> Составляем систему
> y0 = y(x0) = d          # известно
> y1 = y(x1)               (1)
>
> два уравнения - 4 неизвестных. Вычисляем первую производную:
> y'(x) = 3a(x-x0)^2+2b(x-x0)+c
>
> y0' = y'(x0) = c        # апроксимируем
> y1' = y'(x1)              (2)
>
> Чтобы гарфик выглядел визульно плавным небходима C1 непрерывность
> кривой. То есть прозводная на конце одного куска равно производной в
> начале другого куска.
>
> Для начала и конца направляем производную по линии к последующей точке, то
> есть:
> tg(a) = (y1-y0)/(x1-x0) = y0'
>
> Для промежуточных узлов берем за производную направление от
> предыдущего узла к последющему, то eсть:
> y'0|i = (y1|i - y0|i-1)/(x1|i - x0|i-1)
>
> Вычислили производные и автоматом получаем с - равно производной.
>
> Далее умножаем (1) на 2, а (2) на (x-x0) и получаем:
> 2*y1 = 2a(x1-x0)^3+2b(x1-x0)^2+2c(x1-x0)+2d
> y1'(x-x0) = 3a(x1-x0)^3+2b(x1-x0)^2+c(x1-x0)
>
> вычитаем:
>
> y1'(x1-x0) - 2*y1 = a(x1-x0)^3 - c(x1-x0) - 2d
>
> a = ( y1'(x1-x0) - 2*y1 + c(x1-x0) + 2d )/(x1-x0)
>
> посчитать b не сложно.
>
> 2008/12/12 Orlovsky Alexander <nordicdyno на yandex.ru>:
> > А вот есть на Perl либа, которая мне по массиву точек (координат x,y),
> расчитала бы опорные точки для кубических кривых Безье - по которым я бы
> нарисовал "кубический сплайн" (функцию для рисования кубических курв Безье я
> ужо нашел, нужны опорные точки :).
> >
> > --
> > Moscow.pm mailing list
> > moscow-pm на pm.org | http://moscow.pm.org
> >
>
>
>
> --
> Best regards, Ruslan.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением,
Анатолий Шарифулин.
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081212/6ef4ea87/attachment.html>


Подробная информация о списке рассылки Moscow-pm