【发布时间】:2015-03-17 22:48:14
【问题描述】:
我想在 javascript 中实现三次插值以使用画布绘制曲线。这个想法是在画布中单击以添加点,并且每次更改都会调用一个重绘函数,该函数会为给定的单击点计算要在画布中绘制的点。
我找到了一些例子,例如:
http://snipplr.com/view/727/cubic-interpolation/
http://www.paulinternet.nl/?page=bicubic
http://dzone.com/snippets/cubic-interpolation
但我不知道如何使用此代码:/
根据这个简单的例子4分:
float cubic_interpolate( float y0, float y1, float y2, float y3, float mu ) {
float a0, a1, a2, a3, mu2;
mu2 = mu*mu;
a0 = y3 - y2 - y0 + y1; //p
a1 = y0 - y1 - a0;
a2 = y2 - y0;
a3 = y1;
return ( a0*mu*mu2 + a1*mu2 + a2*mu + a3 );
}
我没有得到的第一个是参数。我有 4 个点和一个介于 0 和 1 之间的值。那么我的返回值是多少?或者更好的是什么是mu? y0 ... y3 是否只是点或点的 y 值,例如 y0[0] 是 x 并且 y0[1] 是 y?我需要的是一种算法,它有一些点和一个 x 值作为参数,返回值应该是 y 值。
类似的东西:
function calculateCubic( points ){
var pointsToDraw = [];
getValue(p1,p2,p3,p4,xCoordinate){
var yCoordinate;
yCoordinate = ...
...
return yCoordinate;
}
for(var i = 0; i<p.length-3;i++){
var stepLen = ( p[i+1][0] - p[i][0] ) / 100;
for( var s = p[i][0]; s <= p[i+1][0] ;s += stepLen ){
pointsToDraw[pointsToDraw.length] = getValue(p[i],p[i+1],p[i+2],p[i+3],p[i][0]);
}
}
return pointsToDraw;
}
谁能帮我理解代码片段并将它们用于我的问题?
感谢您的建议!
【问题讨论】:
标签: javascript algorithm math interpolation