bezier + spline
中国农业大学-赵明老师-计算机图形学-moochttps://www.bilibili.com/video/BV1Dt411f7Qj?p=11
目录
bezier
bezier 曲线定义
bernstein基函数的性质
bezier 曲线的性质
spline
spline定义
一、bezier
1.1 bezier 曲线定义
给定空间中n+1个点, , 叫 n阶n次, 阶数和次数相同,一般说次,阶次概念和spline 不一样, 伯恩斯坦基参数方程为
参数为t, t在 0到1 之间;随着t 的变化,得到bezier 曲线
两个控制点,1次多项式
三个控制点,2次多项式
四个控制点,3次多项式
1.2 bernstein基函数的性质
- 正性
> 0, t ∈ (0,1);
= 0 t = 0,1
- 权性, 基函数有n+1项(和控制点数相同), n+1个基函数的和 正好等于1
3. 端点性质, 保证过第一个点和最后一个点
4. 对称性
n 次伯恩斯坦基 由 2 个 n-1次伯恩斯坦基 比例相加组成
5. 递推性
1.3 bezier 曲线的性质
一阶导数
说明bezier曲线的起点和终点处的切线方向和特征形的第一条边以及最后一条边的走向一致;
1.4 de casteljau 递推公式求解
避免了求解阶乘的负担, 阶次递归增加, 等比例计算
> i: 控制点索引
k: 次(j阶数)数,
比如三次样条
1次: P0 - P1 生成直线P01, P1-P2 生成直线P12, P2-P3 生成直线P23
2次:P01-P12 生成直线P01_12, P12 - P23 生成直线P12_23
3次: 三次直线方程,按比例求即可。
二、spline
spline定义
样条: 分段连续多项式
阶次:K阶 k-1次
支撑区间, bezier 支撑区间是[0,1], spline 支撑区间是k阶,k+1个点
比如,有n+1个点, n+1个点有n个小区间,每两点之间(每个小区间)构造一条多项式(比如三次),这样就有n个三次多项式, 段与段之间要求两次连续(三次多项式有的属性), 这就是三次样条
样条和贝塞尔数学表达式的最大区别在B上,样条的B与定点n+1没有关系,只与K阶有关;
同时u的取值也不同
B_i,k(u)称为K阶(k-1次)B样条基函数
K是刻画次数的,k可以是2到控制点个数n+1之间的任意整数
B样条基函数是一个称为节点矢量的非递减的参数u的序列所决定的k阶分段多项式,这个序列称为节点向量。节点向量个数等于“阶数+顶点”
u_0, ..., u_n+k-1, u_n+k
B样条基函数 de boor_Cox 递推构造,由0次构造1次, 1次构造2次, 2次构造3次...
为了获得第i个K阶B样条B_i,k(u), 需要用到u_i,...u_i+k共k+1个节点, 称为区间[u_i, u_i+k] 为B_i,k(u)的支撑区间
三、多项式最小二乘回归
least-square polynomial fitting using C++ Eigen Package
四、 cubic spline 三次样条曲线插值, 非deboor-cox 方法
HIT-三次样条曲线
知乎-半杯茶
无人驾驶汽车系统入门(二十)——基于自由边界三次样条插值的无人车路径生成
五、Cubic Spline interpolation in C++, tk::spline 开源
kluge-spline
bezier + spline相关推荐
- RANSAC Spline Fitting
在车道线检测中,通过一系列的点可以拟合出曲线,这儿介绍一下比较常用的随机抽样一致性方法进行三次样条曲线拟合的方法. 三次样条曲线可以通过四个点来定义,分别选取始末点为P0.P3,通过P1.P2控制曲线 ...
- C#绘制带控制点的Bezier曲线,用于点阵图像及矢量图形
[摘要]不借助第三方, 使用c# + GDI+进行SVG等绘图,绘制带控制点的Bezier曲线.可用于点阵图像及矢量图形(如SVG)绘图.先看效果: (不知为何,已两次上传图片,无法显示,求助csdn ...
- java画bezier曲线,解析在Direct2D中画Bezier曲线的实现方法
Direct2D通过因此,想要使用Direct2D绘制一段通过指定点的曲线,比如Bezier曲线,必须借助于C#的代码可以很容易的转换成C++版本的,下面是我转换的一个用于Direct2D的绘制Bez ...
- 车道线检测(opencv)
بسم الله الرحمن الرحيم MOHAMED ALY California Institute of Technology 1200 E. California Blvd MC 136 ...
- Apollo进阶课程㉕丨Apollo规划技术详解——Optimization Inside Motion Planning
原文链接:进阶课程㉕丨Apollo规划技术详解--Optimization Inside Motion Planning 在自动驾驶软件的开发中,运动规划是最核心的模块之一.它将综合感知.定位和地图等 ...
- Apollo进阶课程㉔丨Apollo 规划技术详解——Motion Planning Environment
原文链接:进阶课程㉔丨Apollo 规划技术详解--Motion Planning Environment 自动驾驶汽车核心技术包括环境感知.行为决策.运动规划与控制等方面.其中,行为决策系统.运动规 ...
- MiniGUI中的几个画线函数
之前的项目中有场景需要绘制曲线,但是当时没有解决,用折线代替的,今天下午借助官方demo,又看了下minigui中的几个画线函数,这里记录一下(lineTo,moveTo, lineEx暂不解释,看官 ...
- 第05章 图形基础
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形.正如您所认为的那样,GDI是Windows非常重要的部分.不只 ...
- 三维空间刚体运动4-3:四元数线性插值方法:Squad
三维空间刚体运动4-3:四元数线性插值方法:Squad Squad的引出 B e ˊ z i e r c u r v e B\acute{e}zier \space curveB e ˊ zier c ...
最新文章
- c语言程序可以单独编译,c语言中的函数可不可以单独进行编译?_后端开发
- 我的技术回顾那些与ABP框架有关的故事-2018年
- 方法的重载(overload)和重写(override)的区别
- 【BZOJ1834】【codevs1362】网络扩容,最大流+费用流
- Android 系统(74)---Android手势触摸事件的分发和消费机制
- 【看这一篇就够了】如何删除gitHub仓库中的文件
- iOS面试题大全66-85
- 解析UML的要点与应用
- 一个敲有趣的R语言拼图工具
- 1068 万绿丛中一点红 (20分)测试点分析
- Item25 Use std::move on rvalue reference, std::forward on universal references
- 神经机器翻译的前世今生--转自散文网
- 通过搜狗抓取微信公众号--------破解url
- 让百度快速收录新网站的方法是什么 让百度快速收录新网站的方法有哪些
- JS中获取元素的方法
- 玩《Minecraft我的世界》学python编程,可免费领|取电子学习版本
- Nginx使用及可能遇到问题
- Linux系统解决OSDLyrics搜索显示的中文歌词名乱码问题
- C++如何实现系统语言切换功能,MessageBox的确认/取消按钮语言显示如何跟程序一致
- JCJC错别字检测系统API接口使用文档-错别字检测接口说明