三阶贝塞尔曲线拟合圆弧的一般公式
针对三阶贝塞尔曲线拟合圆弧,进行一般性的公式求解,可以表达如下图所示:
通过圆心O作出半径为1的圆弧A到D,作AB为和CD为圆弧的切线段,长度均为h。
这样,以A、B、C和D作为三阶贝塞尔曲线的控制点,求得使曲线的中点经过E时,对应的h。
根据贝塞尔曲线的知识,我们知道三阶贝塞尔曲线的参数方程如下,其中A、B、C、D为四个控制点坐标,P(t)表示曲线上的每一点。
根据贝塞尔曲线的对称性,不难想出E点在P(0.5)处,代入公式即可求得:
代入四个控制点坐标A,B,C和D,可以求解P(0.5)点坐标,并列出方程如下:
由正弦和余弦的倍角公式,可以进一步分解方程:
所以:
代入方程,可以得到:
结合平方和公式
化简方程,可以得到:
方程分别除以cos(θ/2)和sin(θ/2),进一步化简可得:
可以发现针对x,y的两个方程,最后化简结果相同,也即两个方程可以使用相同的h值为:
这样,我们即求得针对三阶贝塞尔曲线拟合圆弧的一般性的公式。
例如,当θ取90度时,得到三阶贝塞尔曲线拟合1/4圆弧的系数h的值为:
又如,当θ取60度时,得到三阶贝塞尔曲线拟合1/6圆弧的系数h的值为:
下面针对θ取值30到270度时,构建的一个动画演示,可以看到贝塞尔曲线与园的重合度在角度比较小时比较高。
备注:h体现为AB和CD的长度。
感谢Grapher和GeoGebra软件,使得方便排版文章中使用的公式和曲线。
三阶贝塞尔曲线拟合圆弧的一般公式相关推荐
- 三阶贝塞尔曲线选点_用三阶贝塞尔曲线拟合圆
前言 由于贝塞尔曲线控制简便且具有极强的描述能力,它常被用来生成复杂的平滑曲线:圆形是一种很常用的普通图形,在计算机图形学中也有很多画圆的算法,本文想探究一下如何用三阶贝塞尔曲线拟合圆形. 在研究这个 ...
- 用三次贝塞尔曲线拟合圆弧
由于工作需求,需要用三次贝塞尔曲线拟合圆弧,所以查阅了一些资料,主要参考如下文章: 使用贝塞尔曲线拟合圆 但是文章写的过于简单,也没有推演步骤,而我需要知道任意圆弧如何求出贝塞尔曲线的两个控制点,所以 ...
- 我的Qt作品(7)使用Qt+OpenCV实现图像轮廓提取,再用三阶贝塞尔曲线拟合成光滑线条/多边形拟合
一.贝塞尔曲线基础知识 给一系列顶点,如果只是用直线将其中的各个点依次连接起来,最终形成一个折线图,这种很容易实现.但是现实中事物的变化往往具有连续的特性,即使是给定了一系列离散的点,基于以往的生活经 ...
- 三阶贝塞尔曲线一分为二的一般公式
三阶贝塞尔曲线被广泛用于各种需要平滑曲线的设计领域,一般通过多段三阶贝塞尔曲线顺次连接,构成比较复杂的曲线. 比如下图中,A.B.C和D控制红色曲线,D.E.F和G控制绿色曲线,G.H.I和A控制蓝色 ...
- [zz]用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)
转自:用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码) 三阶贝塞尔曲线有四个控制点A.B.C.D, 若要用三阶贝塞尔曲线拟合劣圆弧,自然的要求是: 1)A位于圆弧的起点,D位于圆弧的终点: 2 ...
- 【Android UI】贝塞尔曲线 ② ( 二阶贝塞尔曲线公式 | 三阶贝塞尔曲线及公式 | 高阶贝塞尔曲线 )
文章目录 一.二阶贝塞尔曲线公式 二.三阶贝塞尔曲线 三.高阶贝塞尔曲线 贝塞尔曲线参考 : https://github.com/venshine/BezierMaker 一.二阶贝塞尔曲线公式 二 ...
- 【Android UI】贝塞尔曲线 ⑦ ( 使用 德卡斯特里奥算法 公式计算的 方法绘制三阶贝塞尔曲线示例 )
文章目录 一.使用 德卡斯特里奥算法 公式计算的 方法绘制三阶贝塞尔曲线 二.代码示例 贝塞尔曲线参考 : https://github.com/venshine/BezierMaker 一.使用 德 ...
- 基于三阶贝塞尔曲线的数据平滑算法
文章目录 前言 贝塞尔曲线 算法描述 算法实现 参考资料 前言 很多文章在谈及曲线平滑的时候,习惯使用拟合的概念,我认为这是不恰当的.平滑后的曲线,一定经过原始的数据点,而拟合曲线,则不一定要经过原始 ...
- 有趣的自定义View — 玫瑰·三阶贝塞尔曲线
"玫瑰贝塞尔曲线"效果如下: 一.效果要求 1)在布局中某个位置处玫瑰开始由小而大,淡入出现: 2)出现的玫瑰,颜色随机而定,玫瑰可在布局内做动画亦可在整个界面中做动画,如上图: ...
最新文章
- ecplise SpringCould搭建过程---创建SpringCould父工程
- nginx进阶-动静分离,负载均衡
- java设计模式---三种工厂模式之间的区别
- java将字节数组转换成字符串,面试心得体会
- JM8.5中的7种宏块模式问题 - zhoujunming的专栏 - CSDN博客
- 003很好的网络博客(TCP/IP)-很全
- 统计文章中字母出现频率
- java分布式会话redis_详解springboot中redis的使用和分布式session共享问题
- 开源正在吞噬软件业?看开源的7大理念
- Linux下snmp常用的OID ---- SNMP硬件监控
- 关于内核态和用户态切换开销的测试
- 2017 Multi-University Training Contest - Team 4:1004. Dirt Ratio
- opencv图像像素操作方法
- 基于vscode编写markdown导出带书签(目录)的pdf
- python京东自动下单_京东自动下单脚本
- 关于 jspx 文件的一些说明
- 低压气体直流击穿特性
- 怎么把两个PDF合并成一个?这几种操作轻松合并
- Spring AOP tx:advice
- 什么是善辩型人格?善辩性人格的职业分析
热门文章
- oracle存储过程怎么做加密,Oracle存储过程加密实现方法
- windows安装spacemacs
- 惠普HP LaserJet Enterprise 500 M551xh 打印机驱动
- Minos嵌入式虚拟化方案 - 系统架构介绍
- GOOGLE服务地址入口
- 成都买房指南:外地人看完购房心中有谱
- Vue3前端模仿实现Windows窗口
- python视频教程推荐it教程网_2019年最新Python黑马头条推荐系统项目开发视频教程完整版...
- 计算机音乐数字乐谱童话,童话钢琴简谱-数字双手-光良
- SLA文档+中学部教练有悟