JavaScript 在 Canvas 2D 平面绘制数字 8 的算法解析
作者:竹影时间:2026-10-22 18:13:09浏览:305
本文介绍如何使用 JavaScript 在 Canvas 2D 平面上绘制数字 8。核心逻辑基于圆弧参数方程,通过角度转弧度计算坐标。利用取模运算判断是否完成第一圆(360度),若超过则调整 Y 轴坐标以绘制第二个圆,结合 requestAnimationFrame 实现动画效果。
绘制效果展示
最终运行效果如下图所示:

圆弧坐标计算原理
要在 Canvas 中通过圆弧绘制出数字 8 的形状,首先需要掌握圆的绘制原理。这涉及将角度转换为弧度值:
radian = angle/180 * Math.PI;
利用计算出的弧度,可以获取当前点在二维坐标系中的位置,从而确定基础圆在 -1 到 1 范围内的坐标分布。
var x = Math.sin(radian);
var y = Math.cos(radian);
双圆绘制逻辑与坐标调整
当完成第一个圆的绘制后,第二个圆的 X 轴坐标与当前点保持一致,但 Y 轴坐标需要进行调整。因此,需要判断是否已完成一个完整的圆(绘制整个数字 8 需 720 度)。如果角度大于 360 度,说明当前正在绘制第二个圆,此时调整 Y 轴位置即可实现双圆组合的绘制效果。
if(angle%720 > 360){
y = -y+2;
}
完整实现代码
具体实现代码如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>实现一个点在二维平面上面画8</title>
<style>
#canvas{
display: block;
margin:0 auto;
}
</style>
</head>
<body>
<canvas id="canvas" width="300" height="600"></canvas>
</body>
<script>
var canvas = document.querySelector("#canvas");
var ctx = canvas.getContext("2d");
var angle = 0; //角度
var radian = 0; //弧度
function draw() {
angle += 2;
radian = angle/180 * Math.PI;
var x = Math.sin(radian);
var y = Math.cos(radian);
if(angle%720 > 360){
y = -y+2;
}
var left = x*150+150;
var top = y*150+150;
ctx.arc(left, top, 1, 0, Math.PI*2);
ctx.strokeStyle = "green";
ctx.stroke();
requestAnimationFrame(draw);
}
requestAnimationFrame(draw);
</script>
</html>
以上关于在 JavaScript 2D 平面上绘制数字 8 的方法分享完毕,希望能为读者提供有效的参考。
作者最新文章
JS怎么使用classList添加、删除和切换class
2026-11-05 17:26:02
网页开发三者分工:HTML结构、CSS样式与JavaScript交互怎么协作
2026-11-05 12:51:22
JS解析URL参数时怎么处理中文乱码和特殊字符
2026-11-05 12:47:23
js-cookie 存储 JSON 对象:自动序列化与反序列化技巧
2026-11-05 12:36:26
marked.js 快速上手:安装与基础 Markdown 转 HTML 示例
2026-11-05 09:32:53
