[zz]用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)
转自:用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)
三阶贝塞尔曲线有四个控制点A、B、C、D, 若要用三阶贝塞尔曲线拟合劣圆弧,自然的要求是:
1)A位于圆弧的起点,D位于圆弧的终点;
2)向量AB,CD分别与圆弧相切,且与圆弧的方向一致;
3)B、C两点位置对称。
在这样的要求之下,对于给定的圆弧(设圆心角为θ,半径为R),只有长度|AB|=|CD|待定。可以如下选取:
其中
注:
1)对于半圆,这样拟合所产生的(半径的最大的)误差约为β/2,精度会随角度减小而迅速提高。
2)若对精度要求不那么高,也可采用
误差会比这里的公式大40%左右. 这个公式应用很广泛.
3) 还有更精确的公式(大约能比这里的公式准千分之几),但形式较复杂,这里不再列出。可参见例如M. Goldapp, Approximation of circular arcs by cubic polynomials. Computer Aided Geometric Design, 1991, 8(3):227-238.
4) 试给出伪代码实现如下。
设待拟合的圆弧的圆心在(x0,y0),半径为R,辐角按逆时针方向从θ1到θ2 (θ2>θ1),于是有
β=0.0264731357562544,
t=tan[(θ2-θ1)/4],
λ=4t/3*(1-t^4/(1+t^2)*β),
xA=x0+R*cos(θ1),
yA=y0+R*sin(θ1),
xD=x0+R*cos(θ2),
yD=y0+R*sin(θ2),
xB=xA-λ*R*sin(θ1),
yB=yA+λ*R*cos(θ1),
xC=xD+λ*R*sin(θ2),
yC=yD-λ*R*cos(θ2).
[zz]用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)相关推荐
- 绘制二次贝塞尔曲线(二次贝兹曲线)等距线:让 IE 支持 canvas接口 isPointInPath
一.背景: 在使用 canvas 做知识图谱的时,实体关系使用线宽为 1px 的线绘制, 用户必须点在线上, 才能正常拾取到点击的边. 边关系,有些是直线边,有些是二次贝塞尔曲线.产品提议,线不能加粗 ...
- bezier.CSS_SVG_canvas画_贝兹曲线
ZC:(1).SVG可以绘制 贝兹曲线:(2).canvas能绘制 贝兹曲线:(3).现在(20180202)查资料发现,css 貌似不能绘制 贝兹曲线,css使用贝兹曲线 主要是用于控制动画的速度, ...
- css沿曲线进行动画,jQuery沿贝兹曲线运动动画特效
特效描述:jQuery 沿贝兹曲线运动 动画特效.jQuery沿贝兹曲线运动动画特效 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 10条曲线 开始动画 Plot 10条贝兹曲线 开 ...
- canvas 贝萨尔曲线
二次贝塞尔曲线 定义:quadraticCurveTo() 方法通过使用表示二次贝塞尔曲线的指定控制点,向当前路径添加一个点. 说明:二次贝塞尔曲线需要两个点.第一个点是用于二次贝塞尔计算中的控制点, ...
- 初识贝塞尔(bezier)曲线
文章目录 资料援引 贝塞尔曲线的用途 一阶贝塞尔(bezier)曲线 二阶贝塞尔(bezier)曲线 三阶贝塞尔(bezier)曲线 高阶贝塞尔(bezier)曲线 三阶贝塞尔曲线求插值(Slerp) ...
- .net cf wince 贝兹 曲线图
项目需要在WINCE设备中显示曲线图,由于wince采集器默认是不带画图的动态库的,所以在网上找了一个动态库(XrossGDIPlus)来画图,关于XrossGDIPlus具体参考http://www ...
- 贝塞尔(贝兹尔)曲线介绍
2019独角兽企业重金招聘Python工程师标准>>> 贝塞尔(贝兹尔)曲线介绍 什么是贝塞尔曲线? "贝赛尔曲线"是由法国数学家Pierre Bézier所发明 ...
- android运动轨迹怎么画,Android 利用三阶贝塞尔曲线绘制运动轨迹的示例
本篇文章主要介绍了Android 利用三阶贝塞尔曲线绘制运动轨迹的示例,分享给大家,具体如下: 实现点赞效果,自定义起始点以及运动轨迹 效果图: xml布局: xmlns:tools="ht ...
- flutter绘图基础之三阶贝塞尔曲线cubicTo
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. 重要消息 [经验分享视频教程 感兴趣的伙伴可以瞅瞅] 1 flutter 中绘制基础引言 Flutter 中实现绘制的主要是Custo ...
最新文章
- mysql变量使用总结
- QTP整合QC自动化测试--目录结构搭建
- Python的字符串操作和Unicode
- was中java目录_was8.5选择安装选项,安装应用程序的目录填写自定义目录,应用部署成功后访问不了页面?...
- mfc 弹簧_弹簧和线程:事务
- Python的数据类型与结构
- Class.forName()、Class.forName().newInstance() 、New 三者区别!
- 无连续重复的随机算法
- win10 查看系统开机历史记录
- 孙鑫VC学习笔记:第十四讲 (一) 网络的基本概念
- linux c语言 模拟键盘输入
- html如何制作短信验证码,网站后台短信验证码怎么制作
- 【论文解读】Stacked Hourglass Networks
- SRS4.0源码分析-state-thread
- IQ信号,IQ样本,IQ数据,constallation diagram(星座图)
- 音量(DB)为什么都是负值
- 大数据架构之--Kappa架构
- NESASM教程——第八天——比较
- web前端学习笔记——选择器
- 下载安装setuptools