这篇博客介绍了如何使用高斯勒让得求积(Legendre-Gauss quadrature)来获得样条函数的长度的方法。
背景
在我构建海飞丝插件(Hair Strand Plugin)时,由于每一根发束的构建都是使用了Hermit spline,在某些约束运算的时候需要获得样条的长度。因此查找了一些资料,最终发现在数值方法中,高斯勒让得求积的方法的表现比较好。
总体来讲,只需要5次采样就能够获得一个合理的结果。
高斯勒让得求积
当我们想要求解函数 ∫1−1f(x)dx 的积分值时,往往可以使用 ∑ni=1wif(xi) 来进行近似运算,其中 wi,i=1...n 为权重值。高斯求积仅仅当函数 f(x) 可以由在区间[-1, 1]的多项式近似时才能获得准确的近似解,这种方法并不适合函数具有奇异点的情况。
于是乎,我们可以把函数 f(x) 写作 f(x)=W(x)g(x) ,其中 g(x) 是近似