贝塞尔曲线均匀插值算法
贝塞尔曲线均匀插值算法
二次贝塞尔曲线公式为:
其中,P0、P1、P2分别为起始点、控制点、终点。
其对应的坐标公式为:
整理有:
由公式很容易可以得出这样一个结论:随着变量t线性变化,坐标x、y是非线性变化的。这将导致一个问题,我们在贝塞尔曲线上取点时,若想取得的点是“均匀”的,即点与点之间的距离要相等(点足够密时,可以近似为点与点之间的路径相等),即需要求出贝塞尔曲线段长度L关于t的关系函数,然后根据L来反求t,这样才能采样得到均匀的贝塞尔采样点。
下面开始求贝塞尔曲线长L关于t的关系函数。
令
则
同理,
对(6)(7)求导,有:
根据平面距离公式,此时速度大小:
令
则
对速度函数求积分,即得到贝塞尔曲线积分:
公式(12)即是二次贝塞尔曲线的长度函数。
再回到上述问题,若想要在贝塞尔曲线上均匀取点,即保持L(t)为一个固定值D,令L(t)-D=0,求出t,再将t代入B(t)中(即公式(1)),即可求得间距D时的坐标(x,y)。
根据L(t)-D=0求t的方法----牛顿迭代法:
设r是f(x)的根,选取x0作为r的初始近似值,则有:
只要选取的x0在r的邻近区域内,那么牛顿法必定收敛。 并且,如果不为0, 那么牛顿法将具有平方收敛的性能。因此,只要经过一定的迭代次数,所求xn在一定精度内满足我们需求。
贝塞尔曲线均匀插值算法相关推荐
- android沿曲线移动,Android动画学习Demo(3) 沿着贝塞尔曲线移动的Property Animation
Property Animation中最重要,最基础的一个类就是ValueAnimator了.Property Animation利用ValueAnimator来跟踪记录对象属性已经变化了多长时间及当 ...
- 如何求出二次贝塞尔曲线上面的各个点呢
1.需求:用 canvas 在上面的曲线上面加几个箭头,指明方向 2.问题:这个曲线我是第一次见,搞半天还发现不是圆的弧,是一种很奇怪的弧形,于是我就上网查 quadraticCurveTo 方法,才 ...
- Android 贝塞尔曲线实战之网易云音乐鲸云特效,apm性能监控系统
小说阅读 APP 的翻页效果. 简介 ===================================================================== 在开始实战之前,我们还 ...
- Android 贝塞尔曲线实战之网易云音乐鲸云特效
作者:哈哈将 -个推 Android 高级开发工程师 前言 APP开发市场已经告别"野蛮生长"时代,人们不再满足于APP外形创新,而将目光转向全方面的用户体验上.在这过程中,动效化 ...
- 样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
贝塞尔曲线插值与B样条插值 前言: 这篇是"样条曲线"的接续,前面主要集中在了理论部分,这篇文章主要内容是贝塞尔曲线与B样条是如何应用到插值中的. 前篇:样条曲线 文章目录 贝塞尔 ...
- 贝塞尔曲线与B样条曲线
文章目录 0.参考 1.问题起源与插值法的曲线拟合 1.1.问题起源 1.2.拉格朗日插值 1.3."基"的概念 1.4.插值存在的Runge现象 2.贝塞尔曲线 2.1.控制点的 ...
- Android Studio Canvas 实现鼠标贝塞尔曲线拖尾特效
Android Studio Canvas 实现鼠标贝塞尔曲线拖尾特效 特效预览图 什么是贝塞尔曲线? 百度百科: 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图 ...
- Android Studio Canvas 实现鼠标贝塞尔曲线拖尾特效(富文本编辑器)
特效预览图 什么是贝塞尔曲线? 百度百科: 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线.一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段 ...
- 前端动画之贝塞尔曲线推导及应用
hello,大家好,今天豆皮范儿给大家带来了贝塞尔曲线推导和应用,优美的贝塞尔曲线想起了大学时候老师在给我们讲如何实现,如何推导,如何实现和应用.本来也来详细介绍一下,纯纯的干货- 作者:lff 生活 ...
- 贝塞尔曲线,B-样条,非均匀有理B样条梳理
文章目录 1. 贝塞尔曲线(Bézier curve) 1.1 一阶贝塞尔曲线 1.2 二阶贝塞尔曲线.高阶贝塞尔曲线 1.3 贝塞尔曲线的一般形式 1.4 贝塞尔曲线的性质 1.5 贝塞尔曲线在运动 ...
最新文章
- 使用Boost的Serialization库序列化STL标准容器
- 提升系统 10 倍性能的 10 个建议!
- 《精益软件度量——实践者的观察与思考》—第1章1.1节精益软件开发的度量体系...
- 如何利用MySQL加密函数保护Web网站敏感数据
- 生成静态页面的五种方案 收藏
- php retoken,laravel 5.5 关闭token的3种实现方式
- linux中线程ptid,Linux 线程(1)线程创建
- 计算器 - 栈的应用
- Maven学习(1) - Maven入门
- 逆天!百度AI音箱重磅升级:最大梦想实现
- linux 945gse 显卡驱动,HP520的945Expres集成显卡只能以1024x768的模式显示的求助
- Word中有些空行无法删除,我是这样解决的.............
- 车企围攻整车OS,这张“新王牌”怎么打?
- hadoop学习步骤
- Under the hood: MySQL Pool Scanner (MPS)
- CERC2014 Outer spaceinvaders(区间DP,推理)
- 幅值测量c语言程序,幅值和电平测量程序块
- 0基础都能看懂的SpringCloud,不容错过!
- 主成分分析,聚类分析,因子分析的基本思想以及他们各自的优缺点
- android好看的配色方案,APP界面常用的五种颜色搭配
热门文章
- LeapFTP访问WinXP上的文件
- O2O电子商务 营销模式
- pygame 绘制爱心函数 r = 1-cos(θ). Tag: python | 图形界面 | GUI
- Cropper详细笔记
- Gradle教程——(二)Gradle介绍
- [CGAL] CGAL各模块介绍
- Oracle查询被锁表和解锁方法
- Mybatis整合达梦数据库
- 腾讯云推出“版权音乐助手”让音乐版权使用“按量付费“
- ant design pro 水印(删除、修改)