【HTML 中的二次贝塞尔曲线 和三次贝塞尔曲线】(使用说明详解)
二次 贝塞尔曲线 和三次 贝塞尔曲线 使用说明
- 1. 二次 贝塞尔曲线 和三次 贝塞尔曲线
- 1.1 贝塞尔曲线的 基本知识
- 1.2 贝塞尔曲线 生成动图
- 1.3 HTML 中 画贝塞尔曲线的 2 种方法
- 1.4 二次 贝塞尔曲线
- 1.4.1 二次 贝塞尔曲线的创建
- 1.4.2 二次 贝塞尔曲线的 弯曲处宽窄控制
- 1.4.3 二次 贝塞尔曲线的 伸缩和平移
- 1.4.4 二次 贝塞尔曲线 控制点的取值 和弯曲方向
- 1.4.5 二次 贝塞尔曲线 使用示例
- 1.5 三次 贝塞尔曲线
- 1.5.1 三次 贝塞尔曲线的 生成动图和创建
- 1.5.2 三次 贝塞尔曲线的 起始点
- 1.5.3 三次 贝塞尔曲线的 弯曲处的 宽窄控制
- 1.5.4 三次 贝塞尔曲线 弯曲处的 拉伸
- 1.5.5 三次 贝塞尔曲线的 控制点的 坐标取值
- ♣ 结束语 和 友情链接
1. 二次 贝塞尔曲线 和三次 贝塞尔曲线
1.1 贝塞尔曲线的 基本知识
- 贝塞尔曲线的 基本知识
① 贝塞尔曲线本质: Bézier curve (贝塞尔曲线)= 曲线 = 用于二维图
- 应用于二维图形应用程序的数学曲线。
② 曲线定义:起始点、终止点(也称锚点)、控制点。
③ 调整曲线形状: 调整控制点起始点.终点的坐标值 = 调整曲线形状
- 通过 调整控制点,贝塞尔曲线的形状 会发生变化。
④ 贝塞尔曲线名称由来: 1962年,法国数学家 Pierre Bézier 第一个研究了这种 矢量绘制曲线 的方法,并给出了详细的计算公式,因此按照公式 绘的曲线 就用他的姓氏 来命名.
参考博文
- 贝塞尔曲线讲解 1
- 贝塞尔曲线讲解 2 - 数学原理
1.2 贝塞尔曲线 生成动图
- 贝塞尔曲线 生成动图
- ① 一阶(一次)贝塞尔曲线( = 线段):
- ② 二次贝塞尔曲线( = 抛物线)
- ③ 三次贝塞尔曲线( = 类似抛物线的圆滑曲线)
- ① 一阶(一次)贝塞尔曲线( = 线段):
1.3 HTML 中 画贝塞尔曲线的 2 种方法
- 画贝塞尔曲线的 2 种方法
- ① 二次贝塞尔曲线: = 1个控制点 + 1个结束点
- 使用
quadraticCurveTo(cp1x, cp1y, x, y)
二次 贝塞尔曲线到点 方法- quadratic [kwɑ’drætɪk] adj. [数] 二次的
- 参数: (cp1x,cp1y) = 1个控制点,(x,y) = 1个结束点。
- cp=control point ,控制点
- 使用
- ② 三次贝塞尔曲线: = 2个控制点 + 1个结束点
- 使用
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
三次 贝塞尔曲线到点 方法 - 参数: (cp1x,cp1y) = 控制点一,(cp2x,cp2y) = 为控制点二,(x,y)= 1个结束点。
- 使用
- ① 二次贝塞尔曲线: = 1个控制点 + 1个结束点
1.4 二次 贝塞尔曲线
1.4.1 二次 贝塞尔曲线的创建
- 示例1: 创建 一条简单的 二次贝塞尔曲线
<body><canvas id="myCanvas" height="200px" width="200px" style="border:1px solid green">一条 二次 贝塞尔曲线</canvas><script type="text/javascript">var canvas=document.getElementById("myCanvas");//获取 canvas 图形画布元素if(canvas.getContext){//判断canvas 的获取上下文方法是否存在var ctx=canvas.getContext("2d");//获取上下文//(1) 绘制一条简单的 二次贝塞尔曲线: 1个起点+1个终点+1个控制点 ctx.beginPath();ctx.moveTo(75,25);ctx.quadraticCurveTo(25,25,25,60);ctx.stroke(); } </script>
</body>
1 条贝塞尔曲线 | 起点和终点 |
- 测试
- 显示曲线: 二次贝塞尔曲线,显示一段 起始点到终点的曲线
- 曲线弯曲方向: 控制点不会显示出来,曲线弯曲方向,朝向 控制点的坐标位置
- 改变曲线方向 = 改变 控制点的坐标 (不改变 起始点和终点时)
- 改变曲线的形状: 改变 起始点,终点,控制点坐标,都可以 改变曲线的形状
- 示例2: 上方曲线,把控制点坐标 变成
(10,10)
和(100,100)
,看曲线 弯曲方向的变化
- 测试
- 弯曲方向:朝向控制点
1.4.2 二次 贝塞尔曲线的 弯曲处宽窄控制
- 示例1:
- (二次 贝塞尔曲线) 弯曲处的宽窄控制:控制点坐标 不变,改变 起始点和终点的坐标
- ① 弯曲处变宽: = 增加 坐标差 a,b (起始点和终点的坐标差)
- (假设 起始点和终点之间的坐标差,a=x1-x2,b=y1-y2,两个点,x1,x2之间距离变远,y1和y2之间 距离变远)
- 改坐标值: 大大小小 (把较大值加大,较小值减小,增加距离)
- ②弯曲处变窄: 缩小 坐标差 a,b (起始点和终点的坐标差)
- (假设 起始点和终点之间的坐标差,a=x1-x2,b=y1-y2) ,x1和x2之间距离 越来越靠近,y1和y2 之间的距离变近
- 改坐标值:大小小大 (把较大值减小,较小值加大,减少距离)
- ① 弯曲处变宽: = 增加 坐标差 a,b (起始点和终点的坐标差)
- (二次 贝塞尔曲线) 弯曲处的宽窄控制:控制点坐标 不变,改变 起始点和终点的坐标
<body><canvas id="myCanvas" height="200px" width="200px" style="border:1px solid green">一条 二次 贝塞尔曲线</canvas><script type="text/javascript">var canvas=document.getElementById("myCanvas");//获取 canvas 图形画布元素if(canvas.getContext){//判断canvas 的获取上下文方法是否存在var ctx=canvas.getContext("2d");//获取上下文//(1) 绘制一条简单的 二次贝塞尔曲线: 1个起点+1个终点+1个控制点 ctx.beginPath();ctx.moveTo(80,50);ctx.quadraticCurveTo(15,75,110,100);ctx.stroke(); } </script>
</body>
- 测试
- 一条二次贝塞尔曲线,下面对它进行 变宽和变窄
- ⑴ 弯曲处变宽: = 增加 坐标差 a,b (起始点和终点的 x坐标差,y坐标差)
- 口诀:大大小小 (大大小小 变宽了)
左右变宽: 增大 较大的x横坐标 | 左右变宽: 减小 较小的x横坐标 |
上下变宽: 增大 较大的y横坐标 | 上下变宽: 减小 较小的y横坐标 |
- ⑵ 弯曲处变窄: 缩小 坐标差 a,b (起始点和终点的 x坐标差,y坐标差)
- 口诀:大小小大
左右变窄: 增大 较小的x横坐标 | 左右变窄: 减小 较大的x横坐标 |
上下变窄: 增大 较小的y横坐标 | 上下变窄: 减小 较大的y横坐标 |
1.4.3 二次 贝塞尔曲线的 伸缩和平移
- ⑴ 二次 贝塞尔曲线的伸缩: 两点和控制点的坐标差
- 伸长曲线: 增加 两点和控制点的坐标差 (起始点和终点,和控制点的坐标差)
- a1=x1-cp1x,a2=x2-cp1x,b1=y1-cp1y,b2=y2-cp1y)
- (a1,b1)=起始点-控制点
- (a2,b2)=终点-控制点
- 缩短曲线:减少 两点和控制点的坐标差
- 伸缩方向: 伸缩 左右方向,改x,伸缩 上下方向,改y
- 伸长曲线: 增加 两点和控制点的坐标差 (起始点和终点,和控制点的坐标差)
- ① 伸长曲线: 伸长左右方向 和伸长上下方向 = 增加 两点和控制点的坐标差
左右伸长:改起始点 x坐标值 | 左右伸长:改终点 x坐标值 |
上下伸长:改起始点 y坐标值 | 上下伸长:改终点 y坐标值 |
- ② 缩短曲线: 缩短左右方向 和缩短上下方向 = 减少 两点和控制点的坐标差
- 与伸长曲线操作相反,让两点和控制点的 距离变近
左右缩短:改 x坐标值 (起始点和终点) | 上下缩短: 改 y坐标值 (起始点和终点) |
- ⑵ 二次 贝塞尔曲线的平移
- 两点的x或y,同时增减相同值 a
- 左右平移: 改x值,起始点和终点,同时加减 a (y坐标值 保持不动)
- 上下平移: 改y值,起始点和终点,同时加减 a (x坐标值 保持不动)
- 总结: 平移的时候,一次 只改x坐标值或是y坐标值 (两个点 一起增减相同值)
- 两点的x或y,同时增减相同值 a
左右平移 | 上下平移 |
1.4.4 二次 贝塞尔曲线 控制点的取值 和弯曲方向
- 二次 贝塞尔曲线 控制点的取值 和弯曲方向
- ① 向左右弯曲: 改控制点 x值 (相对于起始点和终点的连线) 起始点(x1,y1),终点(x2,y2),控制点(cp1x,cp1y)
- 向左弯曲: = 弯曲处 在左边
- cp1x < min (x1,x2) = 小于 最小x值
- 向右弯曲: = 弯曲处 在右边
- cp1x > max(x1.x2) = 大于 最大x值
- 向左弯曲: = 弯曲处 在左边
- ② 向上下弯曲: 改控制点 y值
- 向上弯曲: cp1y < min (y1,y2) = 小于 最小y值
- 向下弯曲: cp1y > max(y1.y2) 大于最大y值
- ① 向左右弯曲: 改控制点 x值 (相对于起始点和终点的连线) 起始点(x1,y1),终点(x2,y2),控制点(cp1x,cp1y)
向左弯曲 | 向右弯曲 |
向上弯曲 | 向下弯曲 |
1.4.5 二次 贝塞尔曲线 使用示例
- 示例1: 多段 二次 贝塞尔曲线的使用: 添加连续的曲线,让每两条 二次贝塞尔曲线 相连,组成一个 绘画气泡窗口
<body><canvas id="myCanvas" height="200px" width="200px" style="border:1px solid green">一个对话气泡图形</canvas><script type="text/javascript">var canvas=document.getElementById("myCanvas");//获取 canvas 图形画布元素if(canvas.getContext){//判断canvas 的获取上下文方法是否存在var ctx=canvas.getContext("2d");//获取上下文//(1) 绘制 1个对话气泡,6条曲线组成 ctx.beginPath();ctx.moveTo(75,25);ctx.quadraticCurveTo(25,25,25,60);//控制点1 和终点1,1段曲线ctx.quadraticCurveTo(20,100,50,100);//控制点2 和终点2,2段曲线ctx.quadraticCurveTo(50,125,25,120);//控制点3 和终点3,3段曲线ctx.quadraticCurveTo(70,125,68,100);//控制点4 和终点4,4段曲线ctx.quadraticCurveTo(165,115,152,50);//控制点5 和终点5,5段曲线ctx.quadraticCurveTo(152,20,75,25);//控制点6 和终点6 = 起始点1,6段曲线ctx.stroke();//绘制图形 } </script>
</body>
- 使用
quadraticCurveTo()
二次贝塞尔曲线 到点函数,实现对话气泡的过程- 6个函数 = 6条曲线
1条 贝塞尔曲线 ↓ | 起点和终点 |
2条 贝塞尔曲线 (连接在一起) ↓ | 起点和终点 |
3条 贝塞尔曲线 ↓ | 起点和终点 |
4条 贝塞尔曲线 ↓ | 起点和终点 |
5条 贝塞尔曲线 ↓ | 起点和终点 |
6 条贝塞尔曲线 (对话气泡)↓ | 起点和终点 |
- 测试
- 绘制过程显示: 在绘制过程中,先把
stoke()
绘画 方法 写在后面,这样每画一条曲线,都能看见,利于 调整形状 - 坐标调整: 对于 起始点,终点,控制点的坐标调整
- 上下移动: 调整 y 值
- 左右移动: 调整 x 值
- 控制点相对于 终点和起始点的位置 进行限定
- 起始点
- 曲线第1个起始点: 使用
moveTo()
移动到点 函数 创建 - 曲线接下来的起始点: 上一条曲线的终点 = 下一条曲线的起始点
- 曲线第1个起始点: 使用
- 弯曲处: 一条二次贝塞尔曲线,只有一个弯曲方向 = 只有一个弯曲处 (一般看有几个弯曲,就需要用几条曲线)
- 弯曲处是平滑的: 不平滑的连接处,一般是终点位置,不会是控制点的坐标
- 曲线弯曲方向: 朝向 控制点的坐标
- 曲线的数目: =
quadraticCurveTo()
二次赛贝尔曲线到点 方法的使用数目
- 绘制过程显示: 在绘制过程中,先把
- 示例2: 对话气泡,6个弯曲处,所以用函数表示时,6个弯曲处 = 6条曲线 = 6个
quadraticCurveTo()
函数
- 示例3: 用二次贝塞尔曲线 画一个心形
<body><canvas id="myCanvas" height="200px" width="200px" style="border:1px solid green">心形</canvas><script type="text/javascript">var canvas=document.getElementById("myCanvas");//获取 canvas 图形画布元素if(canvas.getContext){//判断canvas 的获取上下文方法是否存在var ctx=canvas.getContext("2d");//获取上下文//(1) 绘制 一个心形 ctx.beginPath();ctx.moveTo(80,80);ctx.quadraticCurveTo(22,40,35,100);//控制点1 和终点1,1段曲线ctx.quadraticCurveTo(42,122,80,140);//控制点2 和终点2,2段曲线ctx.quadraticCurveTo(120,122,122,100);//控制点3 和终点3,3段曲线 ctx.quadraticCurveTo(140,40,80,80);//控制点4 和终点4,4段曲线 ctx.stroke();//绘制图形 } </script>
</body>
- 用 2条曲线和 4条曲线 绘制出心形
- 多两条曲线,多弯曲度的调整,更精细些
2条 二次贝塞尔曲线 (心形♡) ↓ | 起始点和终点 |
4条 二次贝塞尔曲线 (心形♡) ↓ | 起始点和终点 |
- 测试
- 弯曲度调整: 适当增加 曲线数目,有利于调整 图形的弯曲度
- 示例4: 把描边心形,变成填充心形
- 把
ctx.stroke()
绘制方法 换成ctx.fill()
填充方法,会自动填充成 黑色
- 把
1.5 三次 贝塞尔曲线
1.5.1 三次 贝塞尔曲线的 生成动图和创建
- 三次贝塞尔曲线 形成动图
- 示例1: 一条 三次贝塞尔曲线
<body><canvas id="myCanvas" height="200px" width="200px" style="border:1px solid green">一条 三次贝塞尔曲线</canvas><script type="text/javascript">var canvas=document.getElementById("myCanvas");//获取 canvas 图形画布元素if(canvas.getContext){//判断canvas 的获取上下文方法是否存在var ctx=canvas.getContext("2d");//获取上下文//(1) 绘制 一条三次贝塞尔曲线ctx.beginPath();ctx.moveTo(80,80);ctx.bezierCurveTo(60,30,40,80,80,100);ctx.stroke();//绘制图形 } </script>
</body>
1条 三次贝塞尔曲线 | 起始点,终点和控制点 | 起始点,终点和控制点 连线 |
- 示例2: 用 2条 三次贝塞尔曲线,画 1个描边心形
<body><canvas id="myCanvas" height="200px" width="200px" style="border:1px solid green">心形</canvas><script type="text/javascript">var canvas=document.getElementById("myCanvas");//获取 canvas 图形画布元素if(canvas.getContext){//判断canvas 的获取上下文方法是否存在var ctx=canvas.getContext("2d");//获取上下文//(1) 绘制 一个心形 ctx.beginPath();ctx.moveTo(80,75);ctx.bezierCurveTo(60,35,25,80,80,100);ctx.bezierCurveTo(140,65,85,40,80,75);ctx.stroke();//绘制图形 } </script>
</body>
2条 三次贝塞尔曲线 (心形) | 起始点和终点 |
1.5.2 三次 贝塞尔曲线的 起始点
- 三次 贝塞尔曲线的 起始点
- 第一条曲线的起始点: 用
moveTo()
移动到点 方法设置的起始点 - 接下来的起始点: = 前一条曲线的终点 = 下一条曲线的起始点
- 第一条曲线的起始点: 用
1.5.3 三次 贝塞尔曲线的 弯曲处的 宽窄控制
- ⑴ 弯曲处的宽窄: 改 2 控制点的坐标差,增大或缩小
- = 控制点之间的 x 坐标差和 y 坐标差(横坐标和纵坐标)
- ① 曲线 弯曲处变窄: = 缩小 控制点坐标差
- 两个 x 横坐标值 越接近( cp1x-cp2x ) = 两个 y 纵坐标值 越接近( cp1y-cp2y ) = 曲线 弯曲处的两条边 之间的距离越小
- 缩小 控制点坐标差的 方法: 较小坐标变大,较大坐标变小,缩短距离 = 2个坐标值 距离越来越接近
- 改变x值,左右变窄
- 改变y值,上下变窄
- ② 曲线 弯曲处变宽: = 增大 控制点坐标差 = 2 个坐标值 距离越来越远
⑵ 把弯曲处 变宽或变窄 的示例说明
示例1: 把弯曲处 变窄 = 减少 坐标差 (控制点的x,y值)
- 减变窄:大小小大(大的变小,小的变大) = 2 个值 越来越接近
- 左右变窄 = 减少 控制点 x横坐标差:把 第一条 三次贝塞尔曲线的(控制点1 和控制点2 之间的) x 横坐标差缩小(通过增大 较小x坐标值,或者减小较大的x坐标值,两个越来越接近)
- 上下变窄 = 减少 控制点的 y纵坐标差:把 第一条 三次贝塞尔曲线的(控制点1 和 控制点2 之间的) y 纵坐标差缩小(通过增大 较小 y坐标值,减小较大的 y坐标值)
左右变窄: 大小= 增大 较小的 x坐标值 | 左右变窄: 小大= 减小 较大的 x的坐标值 |
上下变窄: 大小= 增大 较小的 y坐标值 | 上下变窄: 小大= 减小 较大的 y坐标值 |
示例2: 把弯曲处 变宽 = 增加 坐标差 (控制点的x,y值)
- 变宽: = 增加坐标差= 大大小小(大的变大,小的变小)
- 下方图片,每次增减10px,增减几次
左右变宽: 大大= 增大 较大的 x坐标值 | 左右变宽: 小小= 减小 较小的 x的坐标值 |
上下变宽: 大大= 增大 较大的 y坐标值 | 上下变窄: 小小= 减小 较小的 y坐标值 |
1.5.4 三次 贝塞尔曲线 弯曲处的 拉伸
- ⑴ 曲线 弯曲处拉伸: = 2 控制点,同时改x值,或y值,改的值相同
- = (改的值相同,坐标差不变)
- ① 曲线 弯曲处 向左右拉伸: = 2 个控制点 同时改 x值,改的值相同,y 值不动
- 2 个控制点的纵坐标不变
- (纵坐标改变,会改变上下拉伸)
- 横坐标差 也不变
- (坐标差改变 会改变弯曲处的宽窄度)
- 把 cp1x 和 cp2x 横坐标减少 a (同时减少相同值 a)
- 2 个控制点的纵坐标不变
- ② 曲线 弯曲处 向上下拉伸: 2个控制点 同时改y值,改的值相同,x值不动
- 保持坐标差不变(不从控制点上改变宽窄),拉伸宽窄改变= 由和起始点终点之间的相对距离改变
- 总结:
- 弯曲处宽窄 = 增减 2 个控制点的 坐标差
- (变窄= 减坐标差,变宽= 增坐标差 )
- 弯曲处拉伸 = 同时改2个控制点的x值,或y值, 改的值相同.(一次 只改 2 个 x值,或只改 2 个y值)
- 宽窄和拉伸 方向: 左右:改 x,上下: 改 y值
- 弯曲处宽窄 = 增减 2 个控制点的 坐标差
⑵ 三次 贝塞尔曲线的弯曲处 上下左右拉伸 的示例
示例1:左右 上下 拉伸图形
- 曲线 弯曲处 向左右拉伸: = 同时增减 2个x 值,改的值都为 a ,y值不动.
- 曲线 弯曲处 向上下拉伸: = 同时增减 2个y 值,改的值都为 a ,y值不动.
向左拉伸: cp1x,cp2x 同时减 a(坐标差不变) | 向右拉伸: cp1x,cp2x 同时加 a(坐标差不变) |
向上拉伸: cp1y,cp2y 同时减 a(坐标差不变) | 向下拉伸: cp1y,cp2y 同时加 a(坐标差不变) |
- ⑶ 曲线 左右拉伸 和控制线段 的关系:
- 控制线段的左右平移 = 保持纵坐标不变,横坐标差也不变,横坐标同时增减 a(针对2个控制点) = 控制点P0,P1之间的线段,向左右平移 a 距离
控制线段P0P1 向左平移 = 同时减少横坐标(纵坐标不变减少相同量a) | |
1.5.5 三次 贝塞尔曲线的 控制点的 坐标取值
- 控制点的坐标取值
- 弯曲处方向,在左上方: (相对于 起始点和终点之间的 连接线段)
- cp1x和cp2x < min (起始点x,终点x)
- cp1y和cp2y < min (起始点y,终点y)
- 弯曲处方向,在右上方
- cp1x和cp2x > max (起始点x,终点x)
- cp1y和cp2y < min (起始点y,终点y)
- 弯曲处方向,在右下方
- cp1x和cp2x > max (起始点x,终点x)
- cp1y和cp2y > max (起始点y,终点y)
- 弯曲处方向,在左下方
- cp1x和cp2x < min (起始点x,终点x)
- cp1y和cp2y > max (起始点y,终点y)
- 弯曲处方向,在左上方: (相对于 起始点和终点之间的 连接线段)
弯曲处于 左上方 | 弯曲处于 右上方 |
弯曲处于 右下方 | 弯曲处于 左下方 |
- 总结:控制点取值 和弯曲处位置关系(相对于 开始点和终点之间的线段,要先确定 起始点和终点坐标)
- ① 弯曲处的左右控制:
- 向左弯曲: = 弯曲处 在左边= 小于 x最小值
- 控制点的横坐标 ,要小于 起始点和终点的横坐标,距离越远,拉伸越长
- cp1x和cp2x < min (起始点x,终点x) ,小于 x最小值
- 向右弯曲: = 弯曲处 在右边 = 大于 x最大值
- 控制点的横坐标,要大于起始点和终点的横坐标,距离越远,拉伸越长
- cp1x和cp2x > max (起始点x,终点x) ,大于 x最大值
- 向左弯曲: = 弯曲处 在左边= 小于 x最小值
- ② 弯曲处的上下控制:
- 向上弯曲: = 弯曲处 在上方 = 小于 y最小值
- cp1y和cp2y < min (起始点y,终点y) ,小于 y最小值
- 向下弯曲: = 弯曲处 在下方 = 大于 y最大值
- cp1y和cp2y > max (起始点y,终点y) = 大于 y最大值
- 向上弯曲: = 弯曲处 在上方 = 小于 y最小值
- ① 弯曲处的左右控制:
♣ 结束语 和 友情链接
- 参考文档
- W3School 教程
- MDN HTML 教程
- 友情链接
- ① 【HTML 标签的 参考列表 (按字母排列)】
- ② 【HTML 标签的 参考列表 (按 功能分类 排列)】
- 支持作者: 持续更新中,❤ 您的每一分赞助,让作者走得更远。
- 可以备注 支持的理由 或 想对作者说的话哦~
- 可以备注 支持的理由 或 想对作者说的话哦~
- 赞助二维码:
- 感谢:♥♥♥ 如果这篇文章 对您有帮助的话,可以点赞、评论、关注,鼓励下作者哦,感谢阅读 ~
- 欢迎指正: 如果发现 有需要 更正的细节问题,欢迎指正,谢谢大家 ~╮( ̄▽ ̄)╭
- 转载 请注明出处 ,Thanks♪(・ω・)ノ
- 作者:Hey_Coder
- 来源:CSDN
- 原文:https://blog.csdn.net/VickyTsai/article/details/90044515
- 版权声明:本文为博主原创文章,转载请附上博文链接!
【HTML 中的二次贝塞尔曲线 和三次贝塞尔曲线】(使用说明详解)相关推荐
- 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现
目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...
- 二次贝塞尔曲线转换为三次贝塞尔曲线
二次贝塞尔曲线转换为三次贝塞尔曲线 在使用cairo绘图的时候,发现cairo不支持二次贝塞尔曲线的绘制,为了与QT实现的canvas的行为一致,cairo必须同样实现二次贝塞尔曲线的绘制.思路是将二 ...
- opengl绘制三次hermite曲线,三次cardinal曲线
引言 上篇 上一篇绘制了最基础插值曲线,讲到除了插值经过给定点之外,还有别的约束条件.有时为了所得曲线在端点处具有给定的N阶导数,亦即所称的参数连续性条件和几何连续性条件,给约束矩阵添加了导数约束. ...
- 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了
摘自:https://mp.weixin.qq.com/s/OZnnuA31tEaVt0vnDOy5hQ 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了 原创 小翼 飞思实验室 今天 基 ...
- python中search和match的区别_Python中正则表达式match()、search()函数及match()和search()的区别详解...
match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找 ...
- linux上传文件命令ftp put,Linux ftp 命令行中下载文件get与上传文件put的命令应用详解...
介绍:从本地以用户anok登录的机器192.168.0.16上通过ftp远程登录到192.168.0.6的ftp服务器上,登录用户名是peo.以下为使用该连接做的实验. 查看远程ftp服务器上用户pe ...
- 中科大-计算机类考研真题(初试笔试真题详解+复试笔试机试真题详解+面试问题汇总分析)
中科大-计算机类考研真题(初试笔试真题详解+复试笔试机试真题详解+面试问题汇总分析) 初试笔试真题2003年~2019年:答案+详解 复试面试问题总结:问题汇总+详解分析 复试面试经验总结:个人小结 ...
- linux get与put,科技常识:Linux ftp 命令行中下载文件get与上传文件put的命令应用详解...
今天小编跟大家讲解下有关Linux ftp 命令行中下载文件get与上传文件put的命令应用详解 ,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关Linux ftp 命令行中下载文件get与 ...
- 气缸标识上vr什么意思_发动机结构代号中L、V、W都是啥意思?图文详解让你不再迷糊...
发动机结构代号中L.V.W都是啥意思?图文详解让你不再迷糊大家经常能看到L4.V6.W8这样的发动机结构代号,小编今天就用超高清的结构图告诉你这些代号都是什么鬼? 01 直列式(L)发动机直列式发动机 ...
最新文章
- Oracle 数据表的管理
- HashMap jdk1.7和1.8概述
- VXWORKS 几种定时机制
- Java中Map里put方法的返回值
- html代码在线分析,网站html代码解析
- 腾讯想拿到Big Data资源,8h删抓紧时间!!
- FLOPs和模型参数计算
- nginx 服务器重启命令,关闭(转)
- IDEA---SVN安装及配置
- SPDY协议 - v3
- 四核网络机顶盒芯片局势分析(开放市场):rk3128将会成为四核主流
- UCSC Xena:癌症基因组学数据分析平台
- 汇编:动态画出一棵七彩圣诞树
- MaximalRectangle
- JavaScript之BOM(BOM构成、常用事件)
- 【UML】UML基本概念
- 外贸新手如何利用领英寻找你的潜在客户(建议收藏)
- [Ynoi2019]魔法少女网站
- 单片机IC卡读取开题报告_基于单片机的ic卡读写系统的实现.doc
- 如何利用淘宝快速推广新品牌