//递归实现Bspline函数的基函数 //t:参数值 //k:基函数的起始节点编号 //m:基函数的阶数 //nodes:节点矢量 float CFreeform_CurveView::BKM(float t, int k, int m, float nodes[]) { float value; //存储基函数的值 if(m == 1) //递归结束条件:阶数为1 { if (t >= nodes[k] && t < nodes[k + 1]) //参数值在节点区间内 value = 1; else { value = 0; //参数值不在节点区间内 }

}
else if (m > 1) //递归过程
{	
	//使用递归公式计算基函数的值
	value = (Divide((t - nodes[k]), (nodes[k + m - 1] - nodes[k])) * BKM(t, k, m - 1, nodes) +
		Divide((nodes[k + m] - t), (nodes[k + m] - nodes[k + 1])) * BKM(t, k + 1, m - 1, nodes));
}
return value;

}

Bspline 基函数递归实现 C++ 代码详解

原文地址: https://www.cveoy.top/t/topic/nex6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录