js 实现在2d平面上画8的方法


Posted in Javascript onOctober 10, 2018

效果如下:

js 实现在2d平面上画8的方法

实现这样通过圆画实现这样一个8的形状,首先我们要会画圆。我们可以通过角度转成弧度:

radian = angle/180 * Math.PI;

再通过弧度获取当前的点的位置,这样最基础的圆的位置在-1到1的位置内

var x = Math.sin(radian);
var y = Math.cos(radian);

当画完一个完整的圆以后,另一个圆的x轴绘制和当前的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>

以上这篇js 实现在2d平面上画8的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
禁止F5等快捷键的JS代码
Mar 06 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
jquery实现通用版鼠标经过淡入淡出效果
Jun 15 Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
Oct 29 Javascript
Validform表单验证总结篇
Oct 31 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
Oct 25 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 Javascript
从零开始用electron手撸一个截屏工具的示例代码
Oct 10 #Javascript
js正则取值的结果数组调试方法
Oct 10 #Javascript
webpack dll打包重复问题优化的解决
Oct 10 #Javascript
4个顶级JavaScript高级文本编辑器
Oct 10 #Javascript
Koa代理Http请求的示例代码
Oct 10 #Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 #Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 #jQuery
You might like
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python3 enum模块的应用实例详解
2019/08/12 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
急诊科护士自我鉴定
2013/10/14 职场文书
运动会广播稿500字
2014/01/28 职场文书
初一体育教学反思
2014/01/29 职场文书
大学社团活动总结
2014/04/26 职场文书
青春奉献演讲稿
2014/05/08 职场文书
工地宣传标语
2014/06/18 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
致接力运动员加油稿
2015/07/21 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
500字作文之难忘的同学
2019/12/20 职场文书