码迷,mamicode.com
首页 > 其他好文 > 详细

样条之EHMT插值函数

时间:2014-10-18 13:52:05      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   for   sp   div   2014   

 核心代码:

 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         else
54         {
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 }

切图:

 bubuko.com,布布扣

相关软件的下载地址为:http://files.cnblogs.com/WhyEngine/TestSpline.zip

样条之EHMT插值函数

标签:style   blog   http   color   ar   for   sp   div   2014   

原文地址:http://www.cnblogs.com/WhyEngine/p/4020424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!