B-スプライン曲線



double baseN(int i,int k,double t,int nv[]){
double w1=0.0,w2=0.0;
if(k==1){
if(t >=nv[i] && t<nv[i+1]) return 1.0;
else return 0.0;
}
else {
if((nv[i+k]-nv[i+1])!=0){
w1=((nv[i+k]-t)/(nv[i+k]-nv[i+1])) * baseN(i+1,k-1,t,nv);
}
if((nv[i+k-1]-nv[i]) !=0 ){
w2=((t-nv[i])/(nv[i+k-1]-nv[i])) * baseN(i,k-1,t,nv);
}
return (w1+w2);
}
}