JavaScript实现沿五角星形线摆动的小圆实例详解


Posted in Javascript onJuly 28, 2020

五角星形线的笛卡尔坐标方程式可设为:

r=10+(3*sin(θ*2.5))^2 

x=r*cos(θ)

y=r*sin(θ) (0≤θ≤2π)

根据这个曲线方程,在[0,2π]区间取一系列角度值,根据给定角度值计算对应的各点坐标,然后在计算出的坐标位置绘制一个填充色交替变换的小圆,从而得到沿五角星形线摆动的小圆的动画效果。

编写如下的HTML代码。

<!DOCTYPE html>

<html>

<head>

<title>沿曲线摆动的小圆</title>

</head>

<body>

<canvas id="myCanvas" width="400" height="400" style="border:3px double #996633;">

</canvas>

<script type="text/javascript">

 var canvas = document.getElementById('myCanvas');

 var context = canvas.getContext('2d');

 var i = 0;

 var j = Math.PI/32;

 var t = 0;

 var col = ['red','orange','yellow','green','cyan','blue','magenta'];

 function loop()

 {

 t = t + 1;

 i = i + j;

 if (t > 6) { t = 0; }

 var r=10+9*Math.sin(2.5*i)*Math.sin(2.5*i);

 var x = 7*r*Math.cos(i)+200;

 var y = 7*r*Math.sin(i)+200;

 context.beginPath();

 context.moveTo(200, 200);

 context.lineTo(x, y);

 context.lineCap = 'round';

 context.strokeStyle = 'rgba(50,100,255,0.6)';

 context.stroke();

 context.beginPath();

 context.moveTo(200, 200);

 context.arc(x, y, 8, 0, 2 * Math.PI);

 context.fillStyle = col[t];

 context.fill();

 if (i>2*Math.PI)

 {

 j =-Math.PI/32;

 context.clearRect(0, 0, 400, 400);

 }

 if (i<0)

 { 

 j = Math.PI/32;

 context.clearRect(0, 0,400, 400);

 }

 }

 setInterval('loop()',300);

</script>

</body>

</html>

在浏览器中打开包含这段HTML代码的html文件,可以在浏览器窗口中呈现出如图1所示的沿五角星形线摆动的小圆动画效果。

JavaScript实现沿五角星形线摆动的小圆实例详解

图1 沿五角星形线摆动的小圆

将上面程序中的语句

var r=10+9*Math.sin(2.5*i)*Math.sin(2.5*i);

var x = 7*r*Math.cos(i)+200;

var y = 7*r*Math.sin(i)+200;

改写为:

var e=80*(1+Math.cos(2*i)/4);

  var f=e*(1+Math.sin(4*i));

  var x=200+f*Math.cos(i);

  var y=200-f*Math.sin(i);

就可以在画布中看到如图2所示的沿四瓣花型线摆动的小圆。

JavaScript实现沿五角星形线摆动的小圆实例详解

图2 沿四瓣花型线摆动的小圆

若改写为:

var r = 200 * Math.pow(Math.cos(i/3),3);

 var x = 200 + r * Math.sin(i);

 var y = 110 + r * Math.cos(i);

同时修改 if (i>2*Math.PI) 为 if (i>3*Math.PI)

就可以在画布中看到如图3所示的沿苹果形线摆动的小圆。

JavaScript实现沿五角星形线摆动的小圆实例详解

图3 沿苹果形线摆动的小圆

若改写为:

var r=100*Math.pow(Math.cos(2*i),0.5);

var x = 200 + 160*Math.sin(i)*Math.sin(i)*Math.sin(i);

var y = -(-170+ 10*(13*Math.cos(i)- 5*Math.cos(2*i) - 2*Math.cos(3*i) - Math.cos(4*i)));

就可以在画布中看到如图4所示的沿心形线摆动的小圆。

JavaScript实现沿五角星形线摆动的小圆实例详解

图4 沿心形线摆动的小圆

有兴趣的读者,可以根据自己感兴趣的曲线的参数方程,适当修改坐标位置(x,y)的计算语句,就可以看到沿指定曲线摆动的小圆的动画效果。

到此这篇关于JavaScript实现沿五角星形线摆动的小圆实例详解的文章就介绍到这了,更多相关JavaScript 沿五角星形线摆动的小圆内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
十个优秀的Ajax/Javascript实例网站收集
Mar 31 Javascript
JQuery仿小米手机抢购页面倒计时效果
Dec 16 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
Feb 17 Javascript
BootStrap制作导航条实例代码
May 06 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
May 24 Javascript
如何利用模板将HTML从JavaScript中抽离
Oct 08 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
vue中使用props传值的方法
May 08 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
Dec 23 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 #Javascript
vue中touch和click共存的解决方式
Jul 28 #Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
Jul 28 #Javascript
JavaScript中window和document用法详解
Jul 28 #Javascript
vue中echarts引入中国地图的案例
Jul 28 #Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
Jul 28 #Javascript
JavaScript文档加载模式以及元素获取
Jul 28 #Javascript
You might like
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python中return的返回和执行实例
2019/12/24 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
函授本科个人自我鉴定
2014/03/25 职场文书
移风易俗倡议书
2014/04/15 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
总经理检讨书
2014/09/15 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
老公出轨后的保证书
2015/05/08 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
个人更名证明
2015/06/23 职场文书
诚信高考倡议书
2019/06/24 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS