当前位置: 首页 > news >正文

参数化曲线:Hermite Catmull-Rom Bezier

参数化曲线:Hermite Catmull-Rom Bezier

https://blog.csdn.net/q_upup/article/details/107049040

本来来自于翻译摘录自
CMSC427 Parametric curves: Hermite, Catmull-Rom,Bezier
CMU课程pdf https://www.cs.cmu.edu/afs/cs/academic/class/15462-s09/www/lec/10/lec10.pdf

概述

piecewise polynomials:分段多项式。
在这里插入图片描述
在这里插入图片描述

插值多项式和拟合多项式的差别:

在这里插入图片描述
在这里插入图片描述

描述曲线连续性的两种方式

:Ck:连接点的k阶导数连续; Gk:k阶导数是成比例的。
在这里插入图片描述

Hermite曲线

给点两点P0 P1以及这两点的导数数值,求取得唯一一个三次多项式。
在这里插入图片描述
根据已知的点,可以对abcd efgh参数进行求取,
下面对abcd的计算进行举例:对t=0 t=1的x(t) x’(t)进行求取
在这里插入图片描述
就能够得到abcd的数值解。
在这里插入图片描述
转化为矩阵的形式可以表示为:
在这里插入图片描述
得到参数abcd的矩阵形式解
在这里插入图片描述
同样的也可以求取y的数值,据此将以上矩阵转化为向量形式如下,即表示多维度下的hermite曲线解。其中P0 P1为点向量,T0 T1为点的切线向量。
在这里插入图片描述
除了以上的矩阵表达形式,还有如下两种表达形式:
在这里插入图片描述
在这里插入图片描述
其基函数的曲线画图如下,也就是说选择不同的x0 x1 dx0 dx1就是对以下四个函数的线性组合。
在这里插入图片描述

Catmull-Rom曲线

简称C-R曲线,由发明者的名字catmull rom取名。该曲线能够保证连接点处的朝向相同,但是不能保证曲率相同。即C1连续性。同时能够保证所有原始点组成的凸包都在插值后的曲线范围内部。
首先可看简要介绍https://blog.csdn.net/i_dovelemon/article/details/47984241
原文内容来自http://graphics.cs.cmu.edu/nsp/course/15-462/Fall04/assts/catmullRom.pdf
Catmull, E., and Rom, R的原文:A class of local interpolating splines(经典原文)
在这里插入图片描述
在这里插入图片描述
其矩阵表达式可表示为如下形式:
在这里插入图片描述

cubic Bezier曲线

和catmull-rom曲线相比,三阶贝塞尔曲线也是保证C1连续,但是不能够经过所有控制点。但是其能够保证起点的朝向。
在这里插入图片描述

在这里插入图片描述
矩阵形式如下:
在这里插入图片描述
按照catmull-rom曲线相同的转换方式,可以提取其基函数如下:
在这里插入图片描述

各个三阶曲线性能对比

在这里插入图片描述

在这里插入图片描述
可参考博客

 

 

 

 

 

相关文章:

  • 贝塞尔曲线原理(简单阐述)
  • 插值与样条
  • Unity 打包因为资源没有 meta ,打包 assetbundle 的时候,导致资源没有打包进去
  • 深入理解color model(颜色模型)
  • LMS色彩空间
  • 计算机图形中的色彩概念
  • 网游帧同步的分析与设计
  • UE4网络同步思考(一)---经典同步方案
  • UE4网络同步(二)——深入同步细节
  • 2021-03-13
  • UE4中自定义用于sequence的变量和函数
  • gradle基础配置
  • 用apksigner进行批量签名的脚本
  • 都到2020年了,Android 签名机制 v1、v2、v3你懂什么意思嘛!
  • UE4 GameplayAbilitySystem Prediction
  • Google 是如何开发 Web 框架的
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 2017年终总结、随想
  • Hibernate【inverse和cascade属性】知识要点
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript服务器推送技术之 WebSocket
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Mysql5.6主从复制
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • python学习笔记-类对象的信息
  • supervisor 永不挂掉的进程 安装以及使用
  • webgl (原生)基础入门指南【一】
  • 从零搭建Koa2 Server
  • 工程优化暨babel升级小记
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前端面试总结(at, md)
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #传输# #传输数据判断#
  • $(selector).each()和$.each()的区别
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (9)目标检测_SSD的原理
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)Java算法:二分查找
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)setTimeout 和 setInterval 的区别
  • (转)母版页和相对路径
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET/C# 使窗口永不获得焦点
  • @Autowired和@Resource的区别
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @Validated和@Valid校验参数区别
  • [ 转载 ] SharePoint 资料
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [android]-如何在向服务器发送request时附加已保存的cookie数据