Hermit插值曲线代码与显示效果
简介
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插值曲线代码与显示效果相关推荐
- hermit插值 matlab,分段线性插值和分段Hermit插值课程设计
一.前言 本文建立在数值分析的理论基础上,能够在Matlab 环境中运行,给出了理论分析.具体实例.程序清单以及程序运行结果,对设计任务中的函数进行了分段线性插值和分段三次Hermit 插值,分别画出 ...
- canvas-js贝塞尔曲线代码在线生成工具
详细内容请点击 canvas贝塞尔曲线代码在线生成工具 可以快速生成二次.三次贝塞尔曲线的源码生成器,方便经常使用到canvas画图的同学使用,可以直接预览效果随意画出自己想要的图像. 生成源码效果预 ...
- 使用Python画出ROC曲线后,如何在ROC曲线代码中增加95%CI?
使用Python画出ROC曲线后,如何在ROC曲线代码中增加95%CI? 计算AUC之后,大部文献都会给出95%CI,如何在代码中增加这一功能呢?希望有大神给出代码!!!! 代码如下: import ...
- 常用测井曲线代码及名称
测井符号 英文名称 中文名称 Rt true formation resistivity. 地层真电阻率 Rxo flushed zone formation resistivity 冲洗带地层电阻率 ...
- 为duilib的MenuDemo增加消息响应,优化代码和显示效果
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/38253297 第一部分 我在前一段时间研究了怎么制作duilib的菜单, ...
- aitken插值方法的c++代码_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...
自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...
- 滑动轨迹 曲线 python_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...
自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...
- 径向基神经网络(rbfn)进行函数插值,代码实现
1.例题:(第一个式子里的cos2.4π掉了一个π) 求解问题:使用精确插值方法,并确定 RBFN 的权重.假设 RBF 是标准差为 0.1 的高斯函数.使用测试集评估得到的 RBFN 的近似性能 2 ...
- python绘制繁花曲线代码_使用python和pygame绘制繁花曲线的方法
前段时间看了一期<最强大脑>,里面各种繁花曲线组合成了非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合. 真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制, ...
最新文章
- 手把手教你使用 Python 制作贪吃蛇游戏
- java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法
- powerbi visualization
- 沦为一个教师——地震余震篇
- WeihanLi.Npoi 1.18.0 Released
- linux网络编程之地址结构sockaddr和sockaddr_in的区别
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​
- XP硬盘分区软件测试面试,怎样让WinXP系统自检并修复硬盘?
- 深入研究java.lang.Runtime类,Process类
- 数据库学习----JDBC
- 伪分布式Hbase安装和配置
- 非理性因素引导下的营销策略分析
- 分布式数据库DBLE
- 浪潮服务器SSD盘咋查看信息,浪潮存储为你揭秘:保障SSD数据可靠性的“黑科技”...
- 【树莓派】基于树莓派,实现无线路由功能
- 小博老师解析Java核心技术 ——JDBC普通增删改操作
- 应广单片机开发调试应注意的问题
- 小车红外线自主充电方案-2
- c语言画笔的使用方法,新手必看:Photoshop笔刷画笔工具基本使用教程
- javaweb基于SSM流浪动物收养平台
热门文章
- linux firefox 显示PDF,修正Ubuntu下Firefox对未知文件的默认打开方式
- 贪心算法之个人心得体会
- 树莓派(Ubuntu20.04)安装b站录播姬
- 2019 到目前为止的深度学习研究进展汇总
- 反馈结果: 【综合所得个人所得税预扣预缴申报表】为累计申报,系统检测到您税款所属期为【1】月的申报数据发生了变动,请同步更正【1】月后的申报数据。
- 手把手写深度学习(5)——Pytorch+RNN自动生成邓紫棋风格歌词
- 不用找,你想要的家具灯饰类的犀牛rhino模型素材都在这里!
- 整理任正非思想:我们要向市场、开发、创造性工作倾斜-1996
- R语言安装ggplot2出现错误,解决方案
- 比较著名的国外科技网站