简介

Hermit插值是拉格朗日(Lagrange)插值的推广。其不仅要插值于节点,而且要插值于节点的斜率。给定n+1个点x0,x1,…,xn的函数值f(x),及其斜率f'(x),其Hermit插值公式为:

实现代码

//   xmin            控制点x方向最小值
//  xmax            控制点x方向最大值
//  origin_pts      所有控制点
//  origin_slopes   其中y值表示控制点的斜率
//  generate_pts    生成的Hermit曲线
//  N               生成Hermit曲线点数量int N = 100;
for (int n = 0; n <= N; n++)
{float x = (xmax - xmin)*n / N + xmin;float y = 0;for (int i = 0; i < origin_pts.size(); i++){float yi = 1 * origin_pts.at(i).y;float lkn1 = 1, lkr1 = 1;float lkn = 1, lkr = 1;for (int j = 0; j < origin_pts.size(); j++){vec3 pt = origin_pts.at(j);vec3 slope = origin_slopes.at(j);if (i != j){lkn *= ((x - pt.x) / (origin_pts.at(i).x - origin_pts.at(j).x));lkr *= ((x - pt.x) / (origin_pts.at(i).x - origin_pts.at(j).x));lkn1 /= (origin_pts.at(i).x - origin_pts.at(j).x);lkr1 /= (origin_pts.at(i).x - origin_pts.at(j).x);}}y = y + ((1 - (x - origin_pts.at(i).x)*(lkn1 + lkr1))*lkn*lkr)*yi;yi = 1 * origin_slopes.at(i).y;yi *= (x - origin_pts.at(i).x);for (int j = 0; j < origin_pts.size(); j++){if (i != j){//yi = yi*(x - origin_pts.at(j).x) / (origin_pts.at(i).x - origin_pts.at(j).x);vec3 pt = origin_pts.at(j);vec3 slope = origin_slopes.at(j);//yi = pt.y + (x - pt.x)*(slope.y - 2 * pt.y);//yi *= yi;yi *= ((x - pt.x) / (origin_pts.at(i).x - origin_pts.at(j).x));yi *= ((x - pt.x) / (origin_pts.at(i).x - origin_pts.at(j).x));}}y += yi;}generate_pts.push_back(vec3(x, y, 0.0f));
}

演示效果

输入控制点及其斜率

(-3,-3), 0

(-1,1), 1

(0,3), -1

(3,4), 2

(5,5), 0

显示效果

Hermit插值曲线代码与显示效果相关推荐

  1. hermit插值 matlab,分段线性插值和分段Hermit插值课程设计

    一.前言 本文建立在数值分析的理论基础上,能够在Matlab 环境中运行,给出了理论分析.具体实例.程序清单以及程序运行结果,对设计任务中的函数进行了分段线性插值和分段三次Hermit 插值,分别画出 ...

  2. canvas-js贝塞尔曲线代码在线生成工具

    详细内容请点击 canvas贝塞尔曲线代码在线生成工具 可以快速生成二次.三次贝塞尔曲线的源码生成器,方便经常使用到canvas画图的同学使用,可以直接预览效果随意画出自己想要的图像. 生成源码效果预 ...

  3. 使用Python画出ROC曲线后,如何在ROC曲线代码中增加95%CI?

    使用Python画出ROC曲线后,如何在ROC曲线代码中增加95%CI? 计算AUC之后,大部文献都会给出95%CI,如何在代码中增加这一功能呢?希望有大神给出代码!!!! 代码如下: import ...

  4. 常用测井曲线代码及名称

    测井符号 英文名称 中文名称 Rt true formation resistivity. 地层真电阻率 Rxo flushed zone formation resistivity 冲洗带地层电阻率 ...

  5. 为duilib的MenuDemo增加消息响应,优化代码和显示效果

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/38253297 第一部分 我在前一段时间研究了怎么制作duilib的菜单, ...

  6. aitken插值方法的c++代码_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...

    自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...

  7. 滑动轨迹 曲线 python_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...

    自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...

  8. 径向基神经网络(rbfn)进行函数插值,代码实现

    1.例题:(第一个式子里的cos2.4π掉了一个π) 求解问题:使用精确插值方法,并确定 RBFN 的权重.假设 RBF 是标准差为 0.1 的高斯函数.使用测试集评估得到的 RBFN 的近似性能 2 ...

  9. python绘制繁花曲线代码_使用python和pygame绘制繁花曲线的方法

    前段时间看了一期<最强大脑>,里面各种繁花曲线组合成了非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合. 真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制, ...

最新文章

  1. 手把手教你使用 Python 制作贪吃蛇游戏
  2. java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法
  3. powerbi visualization
  4. 沦为一个教师——地震余震篇
  5. WeihanLi.Npoi 1.18.0 Released
  6. linux网络编程之地址结构sockaddr和sockaddr_in的区别
  7. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​
  8. XP硬盘分区软件测试面试,怎样让WinXP系统自检并修复硬盘?
  9. 深入研究java.lang.Runtime类,Process类
  10. 数据库学习----JDBC
  11. 伪分布式Hbase安装和配置
  12. 非理性因素引导下的营销策略分析
  13. 分布式数据库DBLE
  14. 浪潮服务器SSD盘咋查看信息,浪潮存储为你揭秘:保障SSD数据可靠性的“黑科技”...
  15. 【树莓派】基于树莓派,实现无线路由功能
  16. 小博老师解析Java核心技术 ——JDBC普通增删改操作
  17. 应广单片机开发调试应注意的问题
  18. 小车红外线自主充电方案-2
  19. c语言画笔的使用方法,新手必看:Photoshop笔刷画笔工具基本使用教程
  20. javaweb基于SSM流浪动物收养平台

热门文章

  1. linux firefox 显示PDF,修正Ubuntu下Firefox对未知文件的默认打开方式
  2. 贪心算法之个人心得体会
  3. 树莓派(Ubuntu20.04)安装b站录播姬
  4. 2019 到目前为止的深度学习研究进展汇总
  5. 反馈结果: 【综合所得个人所得税预扣预缴申报表】为累计申报,系统检测到您税款所属期为【1】月的申报数据发生了变动,请同步更正【1】月后的申报数据。
  6. 手把手写深度学习(5)——Pytorch+RNN自动生成邓紫棋风格歌词
  7. 不用找,你想要的家具灯饰类的犀牛rhino模型素材都在这里!
  8. 整理任正非思想:我们要向市场、开发、创造性工作倾斜-1996
  9. R语言安装ggplot2出现错误,解决方案
  10. 比较著名的国外科技网站