canvas绘制曲线函数arc参数

地址: http://hi.baidu.com/hjzheng/blog/item/ed982a7d66fcc82d0dd7da45.html

 

曲线

 

曲线函数  arc(x, y, radius, startAngle, endAngle, anticlockwise)

参数   x,y 圆心坐标 r 为半径 startAngle 起始角度 endAngle 结束角度 anticlockwise 顺时针还是逆时针

 

 

实例

CODE

<!DOCTYPE HTML>

<html>

<head>

<title>Html5 Canvas arc</title>

</head>

<body>

<canvas id="c" height="1000" width="700"></canvas>

<script type="text/javascript">

var c = document.getElementById('c');//取得Dom元素

    var context = c.getContext("2d");//拿到Canvas的上下文 目前好像只支持2D渲染

context.strokeStyle = "#000000";//填充颜色

//曲线

context.beginPath();

context.arc(200,200,40,0,Math.PI*2,true);

context.closePath();

context.stroke();

context.beginPath();

context.arc(200,300,40,0,Math.PI,true);

context.closePath();

context.stroke();

context.beginPath();

context.arc(200,400,40,Math.PI/2,Math.PI,false);

context.closePath();

context.stroke();

context.beginPath();

context.arc(200,500,40,Math.PI/2,Math.PI,true);

context.closePath();

context.stroke();

</script>

</body>

</html>

 

贝塞尔曲线 二次和三次

什么是贝塞尔曲线 ?

quadraticCurveTo(cp1x, cp1y, x, y)  参考点(cp1x,cp2y) 结束点(x,y)

bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) 两个参考点 和 结束点

详细讲解 见 mozilla.org

 

 

### 使用 HTML5 Canvas API 绘制贝塞尔曲线 在 HTML5 中,`<canvas>` 元素提供了一个绘图表面,允许开发者使用 JavaScript 来绘制图形。对于贝塞尔曲线绘制Canvas 提供了两种主要的方法:`quadraticCurveTo()` 和 `bezierCurveTo()`。 #### 二次贝塞尔曲线 二次贝塞尔曲线由起始点、结束点以及一个控制点定义。下面是一个简单的例子展示如何利用 `quadraticCurveTo()` 方法来实现这样的效果[^3]: ```javascript const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(75, 25); // 起始点 ctx.quadraticCurveTo(25, 100, 100, 100); // 控制点 (25, 100),终点 (100, 100) ctx.stroke(); // 渲染路径 ``` 这段代码会创建一条从 `(75, 25)` 开始经过控制点 `(25, 100)` 到达最终位置 `(100, 100)` 的平滑过渡线条。 #### 三次贝塞尔曲线 相比之下,三次贝塞尔曲线则更加复杂一些,因为它涉及到两个不同的控制点。这可以通过调用 `bezierCurveTo()` 函数完成[^4]: ```javascript const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(75, 40); // 第一对控制点坐标为 (85, 140),第二对为 (150, 20) ,最后到达目标点 (250, 100) ctx.bezierCurveTo(85, 140, 150, 20, 250, 100); ctx.stroke(); ``` 此段脚本将会画出一条更复杂的弯曲轨迹,它不仅考虑到了起点和终点之间的关系,还加入了额外的影响因素——即两组不同方向上的拉力使得整体形状更为灵活多变。 #### 圆弧绘制 除了贝塞尔曲线外,Canvas 还支持直接绘制圆弧。可以借助于 `arc()` 或者 `arcTo()` 方法轻松构建圆形部分或其他类型的弧形结构[^1]: ```javascript const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); // 参数分别为中心(x,y),半径r,起始角度startAngle,终止角度endAngle,顺时针/逆时针direction ctx.arc(95, 50, 40, 0 * Math.PI / 180, 360 * Math.PI / 180, false); ctx.stroke(); ``` 这里展示了怎样围绕指定的位置 `(95, 50)` 创建一个完整的圆圈;当然也可以只生成特定范围内的扇区或弓形区域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lixp3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值