首页 > 代码库 > 样条之EHMT插值函数
样条之EHMT插值函数
核心代码:
1 ////////////////////////////////////////////////////////////////////// 2 // 埃特金插值 3 ////////////////////////////////////////////////////////////////////// 4 static float GetValueEhmt(const void* valuesPtr, int stride, int n, float t, float dc) 5 { 6 int i,j; 7 float z,s,p,q,v,d; 8 9 // 初值10 z = 0.0f;11 12 // 特例处理13 if (n < 1) 14 {15 return(z);16 }17 if (n == 1) 18 { 19 z = YfGetFloatValue(valuesPtr, stride, 0); 20 return(z);21 }22 23 float h = 1.0f/(n - 1);24 25 for (i = 1; i <= n; i++)26 { 27 s = 1.0; 28 q = (i-1)*h;29 for (j = 1; j <= n; j++)30 { 31 p = (j-1)*h;32 if (j != i) 33 {34 s = s*(t-p)/(q-p);35 }36 }37 38 s = s*s;39 p = 0.0f;40 for (j = 1; j <= n; j++)41 {42 if (j != i) 43 {44 p = p+1.0f/(q-(j-1)*h);45 }46 }47 48 v = YfGetFloatValue(valuesPtr, stride, i - 1); 49 if (i < n)50 {51 d = YfGetFloatValue(valuesPtr, stride, i) - v;52 }53 else54 {55 d = v - YfGetFloatValue(valuesPtr, stride, i - 2); 56 }57 58 q = v + (t-q)*(d*dc-2.0f*v*p);59 z = z + q*s;60 }61 62 return(z);63 }
切图:
相关软件的下载地址为:http://files.cnblogs.com/WhyEngine/TestSpline.zip
样条之EHMT插值函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。