пипец, я думал, что только я на мехмате учился)))<br><br><div class="gmail_quote">12 декабря 2008 г. 22:58 пользователь Ruslan Zakirov <span dir="ltr"><<a href="mailto:ruslan.zakirov@gmail.com">ruslan.zakirov@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">без опорных точек никак, но можно упростить.<br>
<br>
Берем кубический сплайн в непараметризованом виде:<br>
y(x) = a(x-x0)^3+b(x-x0)^2+c(x-x0)+d<br>
<br>
Составляем систему<br>
y0 = y(x0) = d # известно<br>
y1 = y(x1) (1)<br>
<br>
два уравнения - 4 неизвестных. Вычисляем первую производную:<br>
y'(x) = 3a(x-x0)^2+2b(x-x0)+c<br>
<br>
y0' = y'(x0) = c # апроксимируем<br>
y1' = y'(x1) (2)<br>
<br>
Чтобы гарфик выглядел визульно плавным небходима C1 непрерывность<br>
кривой. То есть прозводная на конце одного куска равно производной в<br>
начале другого куска.<br>
<br>
Для начала и конца направляем производную по линии к последующей точке, то есть:<br>
tg(a) = (y1-y0)/(x1-x0) = y0'<br>
<br>
Для промежуточных узлов берем за производную направление от<br>
предыдущего узла к последющему, то eсть:<br>
y'0|i = (y1|i - y0|i-1)/(x1|i - x0|i-1)<br>
<br>
Вычислили производные и автоматом получаем с - равно производной.<br>
<br>
Далее умножаем (1) на 2, а (2) на (x-x0) и получаем:<br>
2*y1 = 2a(x1-x0)^3+2b(x1-x0)^2+2c(x1-x0)+2d<br>
y1'(x-x0) = 3a(x1-x0)^3+2b(x1-x0)^2+c(x1-x0)<br>
<br>
вычитаем:<br>
<br>
y1'(x1-x0) - 2*y1 = a(x1-x0)^3 - c(x1-x0) - 2d<br>
<br>
a = ( y1'(x1-x0) - 2*y1 + c(x1-x0) + 2d )/(x1-x0)<br>
<br>
посчитать b не сложно.<br>
<br>
2008/12/12 Orlovsky Alexander <<a href="mailto:nordicdyno@yandex.ru">nordicdyno@yandex.ru</a>>:<br>
<div class="Ih2E3d">> А вот есть на Perl либа, которая мне по массиву точек (координат x,y), расчитала бы опорные точки для кубических кривых Безье - по которым я бы нарисовал "кубический сплайн" (функцию для рисования кубических курв Безье я ужо нашел, нужны опорные точки :).<br>
><br>
> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
<br>
<br>
<br>
</div><font color="#888888">--<br>
Best regards, Ruslan.<br>
</font><div><div></div><div class="Wj3C7c">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>С уважением,<br> Анатолий Шарифулин.<br>