canvas 贝萨尔曲线

2024-06-19 01:48
文章标签 canvas 萨尔 曲线

本文主要是介绍canvas 贝萨尔曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

二次贝塞尔曲线

定义:quadraticCurveTo() 方法通过使用表示二次贝塞尔曲线的指定控制点,向当前路径添加一个点。

说明:二次贝塞尔曲线需要两个点。第一个点是用于二次贝塞尔计算中的控制点,第二个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,那么请使用 beginPath()和 moveTo()方法来定义开始点

语法:context.quadraticCurveTo(cpx,cpy,x,y);

参数:cpx 贝塞尔曲线控制点x坐标;cpy贝塞尔曲线控制点y坐标;

            x 结束点x坐标;结束点y坐标;

数学公式表示如下:

二次方贝兹曲线的路径由给定点P0P1P2的函数Bt)追踪:

实例代码:

 var mycanvas = document.getElementById("mycanvas");if (mycanvas == null) {return false;}var context = mycanvas.getContext("2d");//创建二次贝塞尔曲线//绘制起始点,控制点,终点context.beginPath();context.moveTo(20, 170);context.lineTo(130, 40);context.lineTo(180, 150);context.stroke();//绘制二次贝塞尔曲线context.beginPath();context.moveTo(20, 170);context.quadraticCurveTo(130, 40, 180, 150);context.stroke();

效果图:


三次贝塞尔曲线

定义:bezierCurveTo() 方法通过使用表示三次贝塞尔曲线的指定控制点,向当前路径添加一个点。

说明:三次贝塞尔曲线需要三个点。前两个点是用于三次贝塞尔计算中的控制点,第三个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,那么请使用 beginPath() 和 moveTo() 方法来定义开始点。

语法:context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);

参数:cp1x     第一个贝塞尔控制点的 x 坐标;cp1y     第一个贝塞尔控制点的 y 坐标
            cp2x     第二个贝塞尔控制点的 x 坐标;cp2y     第二个贝塞尔控制点的 y 坐标
            x     结束点的 x 坐标;y     结束点的 y 坐标

数学公式表示如下:

P0P1P2P3四个点在平面或在三维空间中定义了三次方贝兹曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1P2;这两个点只是在那里提供方向资讯。P0P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。

实现代码如下:

<span style="font-family:Comic Sans MS;font-size:12px;"> //创建三次贝塞尔曲线//创建控制点context.beginPath();context.moveTo(225, 175);context.lineTo(260, 80);context.lineTo(350, 30);context.lineTo(370, 150);context.stroke();//创建三次贝塞尔曲线context.beginPath();context.moveTo(225, 175);context.bezierCurveTo(260, 80, 350, 30, 370, 150);context.stroke();</span>


效果图如下:

转载自:http://www.cnblogs.com/duanhuajian/archive/2012/10/15/2725096.html

这篇关于canvas 贝萨尔曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073663

相关文章

以canvas方式绘制粒子背景效果,感觉还可以

这个是看到项目中别人写好的,感觉这种写法效果还可以,就存留记录下 就是这种的背景效果。如果想改背景颜色可以通过canvas.js文件中的fillStyle值改。 附上demo下载地址。 https://download.csdn.net/download/u012138137/11249872

基于NURBS曲线的数据拟合算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1NURBS曲线基础 4.2 数据拟合原理 5.完整程序 1.程序功能描述        基于NURBS曲线的数据拟合算法,非均匀有理B样条(Non-Uniform Rational B-Splines,简称NURBS)曲线是一种强大的数学工具,广泛应用于计算机图形学、CAD/CA

几何内核开发-实现自己的NURBS曲线生成API

我去年有一篇帖子,介绍了NURBS曲线生成与显示的实现代码。 https://blog.csdn.net/stonewu/article/details/133387469?spm=1001.2014.3001.5501文章浏览阅读323次,点赞4次,收藏2次。搞3D几何内核算法研究,必须学习NURBS样条曲线曲面。看《非均匀有理B样条 第2版》这本书,学习起来,事半功倍。在《插件化算法研究平台

CesiumJS【Basic】- #008 通过canvas绘制billboard

文章目录 通过canvas绘制billboard1 目标2 实现 通过canvas绘制billboard 1 目标 通过canvas绘制billboard 2 实现 /** @Author: alan.lau* @Date: 2024-06-16 11:15:48* @LastEditTime: 2024-06-16 11:43:02* @LastEditors: al

Android自定义系列——8.Path之贝塞尔曲线

贝塞尔曲线能干什么 贝塞尔曲线作用十分广泛,简单举几个的栗子: QQ小红点拖拽效果一些炫酷的下拉刷新控件阅读软件的翻书效果一些平滑的折线图的制作很多炫酷的动画效果 理解贝塞尔曲线的原理 一阶曲线原理: 一阶曲线是没有控制点的,仅有两个数据点(A 和 B),最终动态过程如下: (本文中贝塞尔曲线相关的动态演示图片来自维基百科)。一阶曲线其实就是前面讲解过的lineTo。 二阶曲线

Android自定义系列——4.Canvas操作

1.画布操作 为什么要有画布操作? 画布操作可以帮助我们用更加容易理解的方式制作图形。 ⑴位移(translate) translate是坐标系的移动,可以为图形绘制选择一个合适的坐标系。 请注意,位移是基于当前位置移动,而不是每次基于屏幕左上角的(0,0)点移动,如下: // 省略了创建画笔的代码// 在坐标原点绘制一个黑色圆形mPaint.setColor(Color.BLACK);ca

Canvas绘制图片和区域

如何使用Canvas在图片上绘制区域? 一. 首先,我们需要初始化三个canvas画布(初始化Canvas)   initCanvas() {// 初始化canvas画布let canvasWrap = document.getElementsByClassName("canvas-wrap");this.wrapWidth = canvasWrap[0].clientWidth;thi

简单了解ESD模型与TLP曲线

上文讲了ESD和EOS的区别,说实话远不止那些。今日再稍加深入的介绍ESD。 一 ESD原理 ESD-Electro Static Discharge静电放电,具有不同静电电位的物体互相靠近或者直接接触引起的电荷转移。正常情况下,物体内部的正负电荷是相等的,对外表现不带电。当任何两种不同材质的物体接触后再分离就会产生静电。当正负电荷逐渐累计到一定程度时,将与周围环境产生电位差,从而使电荷经由放

HarmonyOS-MPChart根据y轴刻度绘制渐变色曲线

本文是基于鸿蒙三方库mpchart(OpenHarmony-SIG/ohos-MPChart)的使用,自定义绘制方法,绘制一条颜色渐变的曲线。 mpchart本身的绘制功能是不支持颜色渐变的曲线的,只支持渐变色填充大块颜色。那么当我们的需求曲线根据y轴的刻度发生变化,就需要自定义绘制方法了。 从图中我们可以看到,左边的y轴是一个从底部到顶部颜色渐变的直线,从绿色渐变到红色,而且数据曲线根据

三次插值曲线--插值技术

三次插值曲线 1.1.三次样条曲线 三次样条曲线的基本思想是,在给定的一系列点(称为控制点或数据点)之间,通过一系列三次多项式曲线段来拟合这些点,使得整个曲线既平滑又准确地通过所有控制点。 1.1.1.数学定义 给定一组点 ( P_0, P_1, …, P_n ),其中 ( P_i = (x_i, y_i) ),( x_0 < x_1 < … < x_n )。三次样条曲线由以下性质定义: