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 相关文章推荐
JQuery 网站换肤功能实现代码
Nov 02 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
Jul 17 Javascript
jQuery 回车事件enter使用示例
Feb 18 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
JS数组的常见用法实例
Feb 10 Javascript
JS ES6多行字符串与连接字符串的表示方法
Apr 26 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
May 25 Javascript
vue :src 文件路径错误问题的解决方法
May 15 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 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 pki加密技术(openssl)详解
2013/07/01 PHP
分享PHP header函数使用教程
2013/09/05 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
如何运行带参数的python脚本
2019/11/15 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
药品营销策划方案
2014/06/15 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
城管年度个人总结
2015/02/28 职场文书
校长师德表现自我评价
2015/03/04 职场文书
工程质量保证书
2015/05/09 职场文书
餐厅服务员管理制度
2015/08/05 职场文书