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 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
jquery加载页面的方法(页面加载完成就执行)
Jun 21 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
jquery如何通过name名称获取当前name的value值
Dec 20 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
JSON字符串和JSON对象相互转化实例详解
Jan 05 Javascript
Node.js实现连接mysql数据库功能示例
Sep 15 Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
Webpack的Loader和Plugin的区别
Nov 09 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者的疑难问答(2)
2006/10/09 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
13个PHP函数超实用
2015/10/21 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
python3中bytes和string之间的互相转换
2017/02/09 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
浅谈python中的占位符
2017/11/09 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
django序列化serializers过程解析
2019/12/14 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
秋季校运动会广播稿
2014/02/23 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
教师求职信
2014/06/17 职场文书
年检委托书
2014/08/30 职场文书
汶川大地震感悟
2015/08/10 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python