
//NURBS 曲面
double NURBSS(int k,double su[],int l,double sv[],double **d,double
**w,int m,double u,int n,double v)
{
int i,j,tu=k,tv=l;
double s1=0.0,s2=0.0,wN;
for(i=0;i <m+1;i++)
{
if(u <=su[i])
{
tu=i-1;
break;
}
}
for(j=0;j <n+1;j++)
{
if(v <=sv[j])
{
tv=j-1;
break;
}
}
if(tu <k)tu=k;
if(tv <l)tv=l;
for(i=tu-k;i <=tu;i++)
{
for(j=tv-l;j <=tv;j++)
{
wN=w[i][j]*sp::N(i,k,su,u)*N(j,l,sv,v);
s1=s1+d[i][j]*wN;
s2=s2+wN;
}
}
if(s2> eps||s2 <-eps) return s1/s2;
else return 0.0;
}
//均匀 B 样条曲线