PDA

View Full Version : langrange curve interpolation points



chronophile
04-06-2010, 11:49 PM
Hi there. I'm working on a assignment for evaluating lagrange curves. I have a small error in my lagrange function that I can't seem to notice. The t value is the number of divisions from a range [0,1] used to draw the curve. The error is creating long straight lines with big values at the last few partitions. I may be confused with the meanings of t, t_i, t_j or its an iteration error, either way I don't think it would be hard to spot...

heres the formula

http://graphics.ucmerced.edu/~mkallmann/cse170/lectures/L18-lagrange.pdf (in the 5th page)




heres my function and my main loop in the main source file:



Vec eval_lagrange ( float t, float partitions, std::vector<Vec>&amp; pnts ){

Vec *V = new Vec(0,0,0);
float n = (float)pnts.size();
float t_i = 0;
float t_j = 0;
float result = 1;

for(float i = 0; i < n; i++){
result = 1;
for(float j = 0; j < n; j++ ){
if(i != j){
t_i = i*partitions;
t_j = j*partitions;
result *= (t - t_j)/(t_i - t_j);
}
}

V->x += pnts[i].x*result;
V->y += pnts[i].y*result;
}


return *V;
}






POLYEDAPP.CPP


float delta = 1.0/10;

std::vector<Vec> curve_points;


for(int i = 0; i <= 10; i++){
float t = (float)i*delta;
// curve_points.push_back(eval_bezier (t, p));
curve_points.push_back(eval_lagrange (t, delta, p));
}





Any ideas?

thanks,

Will