埃尔米特(Charles Hermite,1822—1901) 法国数学家。巴黎综合工科学校毕业。曾任法兰西学院、巴黎高等师范学校、巴黎大学教授。法兰西科学院院士。在函数论、高等代数、微分方程等方面都有重要发现。1858年利用椭圆函数首先得出五次方程的解。1873年证明了自然对数的底e的超越性。在现代数学各分支中以他姓氏命名的概念(表示某种对称性)很多,如“埃尔米特二次型”、“埃尔米特算子”等。

  这种算法是由上一节讲的CatmullRom演变而成。

关于插值与样条的介绍请看:http://www.cnblogs.com/WhyEngine/p/4020294.html

核心代码:

 1 void    YcHermiteSpline::BuildWeights()
 2 {
 3     ClearWeights();
 4
 5     for (Yuint i = 0; i < 4; i++)
 6     {
 7         m_splineWeights[i] = (Yreal*)malloc((m_subD)*sizeof(Yreal));
 8     }
 9
10     Yreal u, u_2, u_3;
11     for (Yuint i = 0; i < m_subD; i++)
12     {
13         u = (float)i / m_subD;
14         u_2 = u * u;
15         u_3 = u_2 * u;
16
17         // 参见"游戏编程精粹1"P420
18         /*
19         m0 = ((1 - alpha) / 2.0f) * ((v2 - v1) + v3 - v2);
20         m1 = ((1 - alpha) / 2.0f) * ((v3 - v2) + v4 - v3);
21
22         dest = (((2 * t3) - (3 * t2) + 1) * v2) +
23                 ((t3 - (2 * t2) + t) * m0) +
24                 ((t3 - t2) * m1) +
25                 (((-2 * t3) + (3 * t2)) * v3);
26
27         ====================
28
29         m0 = ((1 - alpha) / 2.0f) * (v3 - v1);
30         m1 = ((1 - alpha) / 2.0f) * (v4 - v2);
31
32         m0 = ((1 - alpha) / 2.0f) * v3 - ((1 - alpha) / 2.0f) * v1;
33         m1 = ((1 - alpha) / 2.0f) * v4 - ((1 - alpha) / 2.0f) * v2;
34
35         ====================
36
37         dest = (((2 * t3) - (3 * t2) + 1) * v2) +
38                 ((t3 - (2 * t2) + t) * ((1 - alpha) / 2.0f) * v3)
39                -((t3 - (2 * t2) + t) * ((1 - alpha) / 2.0f) * v1)
40                 ((t3 - t2) * ((1 - alpha) / 2.0f) * v4)
41                -((t3 - t2) * ((1 - alpha) / 2.0f) * v2)
42                 (((-2 * t3) + (3 * t2)) * v3);
43
44         ====================
45
46         v1: -((t3 - (2 * t2) + t) * ((1 - alpha) / 2.0f)
47         v2: ((2 * t3) - (3 * t2) + 1) - (t3 - t2) * ((1 - alpha) / 2.0f)
48         v3: (t3 - (2 * t2) + t) * ((1 - alpha) / 2.0f) + ((-2 * t3) + (3 * t2))
49         v4: (t3 - t2) * ((1 - alpha) / 2.0f)
50         */
51
52         // CatmullRom
53         // 貌似m_alpha==0时,Hermite就是CatmullRom
54         //m_splineWeights[0][i] = (-1.0f*u_3 + 2.0f*u_2 - 1.0f*u + 0.0f)*0.5f;
55         //m_splineWeights[1][i] = ( 3.0f*u_3 - 5.0f*u_2 + 0.0f*u + 2.0f)*0.5f;
56         //m_splineWeights[2][i] = (-3.0f*u_3 + 4.0f*u_2 + 1.0f*u + 0.0f)*0.5f;
57         //m_splineWeights[3][i] = ( 1.0f*u_3 - 1.0f*u_2 + 0.0f*u + 0.0f)*0.5f;
58
59         m_splineWeights[0][i] = -(u_3 - (2 * u_2) + u) * (1 - m_alpha) / 2.0f;
60         m_splineWeights[1][i] = (2 * u_3) - (3 * u_2) + 1 - (u_3 - u_2) * (1 - m_alpha) / 2.0f;
61         m_splineWeights[2][i] = (-2 * u_3) + (3 * u_2) + (u_3 - (2 * u_2) + u) * (1 - m_alpha) / 2.0f;
62         m_splineWeights[3][i] = (u_3 - u_2) * (1 - m_alpha) / 2.0f;
63     }
64 }

切图:

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

样条之埃尔米特(Hermite)相关推荐

  1. 样条之埃尔米特(Hermite)插值函数

    核心代码: // // 埃尔米特等距插值 // static float GetValueHermite(const void* valuesPtr, int stride, int n, float ...

  2. c语言埃尔米特插值思路,【数学建模算法】(26)插值和拟合:埃尔米特(Hermite)插值和样条插值...

    1.埃尔米特(Hermite)插值 1.1.Hermite插值多项式 如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶.二阶甚至更高阶的导数值,这就是 Hermite 插值问 ...

  3. 改进埃尔米特(Hermite)分段三次插值——(可在pchip函数中自定义导数值)

    文章目录 前言 一.三次样条插值 & Hermite插值 二.pchip_pro函数 1.pchip_pro函数说明 2.pchip_pro函数代码 3.pchip_pro使用 总结 前言 提 ...

  4. 埃尔米特插值c语言编程,131张艳-埃尔米特(Hermite)插值逼近的C语言程序.doc

    PAGE PAGE 1 论文题目:埃尔米特(Hermite) 插值逼近的C语言程序 院 系: 数学科学学院 专 业: 数学与应用数学 姓 名: 张 艳 学 号: 指导教师: 侯 存 贵 完成时间: 2 ...

  5. (矩阵分析基础(第二版)第三章 矩阵的分解 3.3埃尔米特(hermite)矩阵及其分解)

    (矩阵分析基础(第二版)第三章 矩阵的分解 3.3埃尔米特(hermite)矩阵及其分解) 文章目录 (矩阵分析基础(第二版)第三章 矩阵的分解 3.3埃尔米特(hermite)矩阵及其分解) 1.埃 ...

  6. 学成绩不佳的数学大师─埃尔米特 (Hermite)

    学成绩不佳的数学大师─埃尔米特 (Hermite) 他是十九世纪最伟大的代数几何学家,但是他大学入学考试重考了五次,每次失败的原因都是数学考不好.他的大学读到几乎毕不了业,每次考不好都是为了数学那一科 ...

  7. 埃尔米特(Hermite)插值及其MATLAB程序

    %hermite.m %求埃尔米特多项式和误差估计的MATLAB主程序 %输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量,Y是纵坐标向量, %以f'(x ...

  8. hermit插值 matlab,埃尔米特(Hermite)插值及其MATLAB程序

    %hermite.m %求埃尔米特多项式和误差估计的MATLAB主程序 %输入的量:X是n+1个节点(x_i,y_i)(i = 1,2, ... , n+1)横坐标向量,Y是纵坐标向量, %以f'(x ...

  9. 埃尔米特(Hermite)插值

    Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值.对于高阶导数的情况,Hermite插值多项式比较复杂,在实际情况中,常常遇到的是函数值与一阶导数给定的情况.在此情 ...

最新文章

  1. 什么是静态UItableView
  2. 修复思维导图mindmanager移动文件位置后打开崩溃
  3. KeilKill.bat删除keil编译生成的过程文件
  4. 使用 AppFuse 的七个理由
  5. skb详细解析【转】
  6. 双击背面截图_ios14怎么轻点双击背面截屏 敲击苹果手机背部截图设置教程
  7. mysql的groupby原理是啥_mysql数据库groupby报错原理是什么?
  8. Windows下编译配置Caffe的GPU版本
  9. markdown备忘
  10. angularJS表达式详解!
  11. CrazyWing:Python自动化运维开发实战 十八、Python面向对象
  12. 【三电平SVPWM学习
  13. 用php表示掷骰子两次比大小,php实现的中秋博饼游戏之掷骰子并输出结果功能详解...
  14. 如何解决CPU过热100度自动关机
  15. 学生每日计划表_小学生假期每天计划表 每日作息安排
  16. 【02】制作第一个zblog模板第二期,熟悉模板所有的开发运行和调试机制·提前做好所有纯html页面
  17. openBravo数据库结构分析
  18. Windows系统下在Git Bash中把文件内容复制到剪贴板的命令
  19. Spring 中 配置文件 加入 aspectj-autoproxy 项目报错
  20. 空间换时间小例子(2)

热门文章

  1. matlab灰度图上色代码改进
  2. 如何设计一个“好的”测试用例
  3. 会python的人多吗_为什么很多人喜欢 Python?
  4. 本科广东省计算机学校排名,2018计算机类专业大学排名 大学本科专业排行榜
  5. 第七讲 入侵检测技术
  6. 果然是暖男,太有爱了
  7. matlab绘制用颜色表示模值大小的箭头图
  8. 数组是否包含某个元素
  9. Vibrator的使用,实现震动反馈
  10. 要不,和机器聊聊?-- 小谈Bot系统