пипец, я думал, что только я на мехмате учился)))<br><br><div class="gmail_quote">12 декабря 2008 г. 22:58 пользователь Ruslan Zakirov <span dir="ltr">&lt;<a href="mailto:ruslan.zakirov@gmail.com">ruslan.zakirov@gmail.com</a>&gt;</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 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# известно<br>
y1 = y(x1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1)<br>
<br>
два уравнения - 4 неизвестных. Вычисляем первую производную:<br>
y&#39;(x) = 3a(x-x0)^2+2b(x-x0)+c<br>
<br>
y0&#39; = y&#39;(x0) = c &nbsp; &nbsp; &nbsp; &nbsp;# апроксимируем<br>
y1&#39; = y&#39;(x1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(2)<br>
<br>
Чтобы гарфик выглядел визульно плавным небходима C1 непрерывность<br>
кривой. То есть прозводная на конце одного куска равно производной в<br>
начале другого куска.<br>
<br>
Для начала и конца направляем производную по линии к последующей точке, то есть:<br>
tg(a) = (y1-y0)/(x1-x0) = y0&#39;<br>
<br>
Для промежуточных узлов берем за производную направление от<br>
предыдущего узла к последющему, то eсть:<br>
y&#39;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&#39;(x-x0) = 3a(x1-x0)^3+2b(x1-x0)^2+c(x1-x0)<br>
<br>
вычитаем:<br>
<br>
y1&#39;(x1-x0) - 2*y1 = a(x1-x0)^3 - c(x1-x0) - 2d<br>
<br>
a = ( y1&#39;(x1-x0) - 2*y1 + c(x1-x0) + 2d )/(x1-x0)<br>
<br>
посчитать b не сложно.<br>
<br>
2008/12/12 Orlovsky Alexander &lt;<a href="mailto:nordicdyno@yandex.ru">nordicdyno@yandex.ru</a>&gt;:<br>
<div class="Ih2E3d">&gt; А вот есть на Perl либа, которая мне по массиву точек (координат x,y), расчитала бы опорные точки для кубических кривых Безье - по которым я бы нарисовал &quot;кубический сплайн&quot; (функцию для рисования кубических курв Безье я ужо нашел, нужны опорные точки :).<br>

&gt;<br>
&gt; --<br>
&gt; Moscow.pm mailing list<br>
&gt; <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>
&gt;<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>