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

贝塞尔曲线原理(简单阐述)

贝塞尔曲线原理(简单阐述)

https://www.cnblogs.com/hnfxs/p/3148483.html

原理和简单推导(以三阶为例):

P0、P02、P2是一条抛物线上顺序三个不同的点。过P0和P2点的两切线交于P1点,在P02点的切线交P0P1和P2P1于P01和P11,则如下比例成立:

这是所谓抛物线的三切线定理。

 

P0,P2固定,引入参数t,令上述比值为t:(1-t),即有:


t从0变到1,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得:

 

t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线。

并且表明:

二次Bezier曲线P02可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合

依次类推,

由四个控制点定义的三次Bezier曲线P03可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的二条二次Bezier曲线的线性组合,由(n+1)个控制点Pi(i=0,1,...,n)定义的n次Bezier曲线P0n可被定义为分别由前、后n个控制点定义的两条(n-1)次Bezier曲线P0n-1与P1n-1的线性组合:

由此得到Bezier曲线的递推计算公式

这就是这就是de Casteljau算法,可以简单阐述三阶贝塞尔曲线原理。

 

下面是总结:转自http://blog.csdn.net/tianhai110/article/details/2203572

Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点(也称锚点)、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。 1962年,法国数学家Pierre Bézier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。

以下公式中:B(t)为t时间下 点的坐标;

P0为起点,Pn为终点,Pi为控制点

一阶贝塞尔曲线(线段):

 

意义:由 P0 至 P1 的连续点, 描述的一条线段

二阶贝塞尔曲线(抛物线):

 

原理:由 P0 至 P1 的连续点 Q0,描述一条线段。
      由 P1 至 P2 的连续点 Q1,描述一条线段。
      由 Q0 至 Q1 的连续点 B(t),描述一条二次贝塞尔曲线。

经验:P1-P0为曲线在P0处的切线。

三阶贝塞尔曲线:

 

通用公式:

 

高阶贝塞尔曲线:

4阶曲线:

5阶曲线:

分类: 3D

好文要顶 关注我 收藏该文

hnfxs
关注 - 4
粉丝 - 21

+加关注

2

0

« 上一篇: STL头文件有哪些及简单介绍
» 下一篇: 贝塞尔曲线应用(贝塞尔插值)

 

 

相关文章:

  • 插值与样条
  • Unity 打包因为资源没有 meta ,打包 assetbundle 的时候,导致资源没有打包进去
  • 深入理解color model(颜色模型)
  • LMS色彩空间
  • 计算机图形中的色彩概念
  • 网游帧同步的分析与设计
  • UE4网络同步思考(一)---经典同步方案
  • UE4网络同步(二)——深入同步细节
  • 2021-03-13
  • UE4中自定义用于sequence的变量和函数
  • gradle基础配置
  • 用apksigner进行批量签名的脚本
  • 都到2020年了,Android 签名机制 v1、v2、v3你懂什么意思嘛!
  • UE4 GameplayAbilitySystem Prediction
  • jenkins上新增一个Mac的slave-agent
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • android图片蒙层
  • ES6语法详解(一)
  • Java超时控制的实现
  • Java-详解HashMap
  • Logstash 参考指南(目录)
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • overflow: hidden IE7无效
  • Spark RDD学习: aggregate函数
  • tensorflow学习笔记3——MNIST应用篇
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 搞机器学习要哪些技能
  • 解析带emoji和链接的聊天系统消息
  • 利用jquery编写加法运算验证码
  • 前端js -- this指向总结。
  • 入门到放弃node系列之Hello Word篇
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #AngularJS#$sce.trustAsResourceUrl
  • #Linux(Source Insight安装及工程建立)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (排序详解之 堆排序)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Mysql的优化设置
  • (转)我也是一只IT小小鸟
  • .bashrc在哪里,alias妙用
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析