js 漩涡
What's the ball's orbit if they head for it's next ball.
<html>
<canvas id="ca"></canvas><script>
ca.width=ca.height=1000;
var centerX=ca.width/ 2,centerY=ca.height/2;
var g=ca.getContext('2d');
var ro=Math.min(ca.width,ca.height)/2/Math.sqrt(3),the=0;
var r=15;
var v=10;
var cnt=7;
function circle(x,y,r){
g.beginPath();
g.arc(x,y,r,0,360);
g.closePath();
g.fill();
}
function dot(ro,the){
var x=centerX+ro*Math.cos(the),y=centerY+ro*Math.sin(the);
circle(x,y,r);
}
function go(){
var ax=ro*Math.cos(the),ay=ro*Math.sin(the);
var bx=ro*Math.cos(the+Math.PI*2/cnt),by=ro*Math.sin(the+Math.PI/cnt*2);
var dx=bx-ax,dy=by-ay;
var d=Math.sqrt(dx*dx+dy*dy);
var mx=(ax*v+bx*(d-v))/d,my=(ay*v+by*(d-v))/d;
ro=Math.sqrt(mx*mx+my*my),the=Math.atan2(my,mx);
//r*=0.98;
//v*=0.99;
}
var move=setInterval(function(){
if(Math.abs(ro)<0.001){clearInterval(move);return;}
// g.clearRect(0,0,ca.width,ca.height);
go();
for(var i=0;i<cnt;i++)
dot(ro,the+i*2*Math.PI/cnt);
},100);
</script>
</html>
js 漩涡的更多相关文章
- 关于 Node.js 的认证方面的教程(很可能)是有误的
原文地址:Your Node.js authentication tutorial is (probably) wrong 我搜索了大量关于 Node.js/Express.js 认证的教程.所有这些 ...
- 前端迷思与React.js
前端迷思与React.js 前端技术这几年蓬勃发展, 这是当时某几个项目需要做前端技术选型时, 相关资料整理, 部分评论引用自社区. 开始吧: 目前, Web 开发技术框架选型为两种的占 80% .这 ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- js学习笔记:操作iframe
iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- 利用snowfall.jquery.js实现爱心满屏飞
小颖在上一篇一步一步教你用CSS画爱心中已经分享一种画爱心的方法,这次再分享一种方法用css画爱心,并利用snowfall.jquery.js实现爱心满屏飞的效果. 第一步: 利用伪元素before和 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
随机推荐
- 获取下拉框的value和值
jsp: <td class="formItem_content"> <select name="label" id = "labe ...
- scalac error: bad option: '-make:transitive' on mvn package via command line
1 问题描述: ubuntu环境下用eclipse+maven开发Scala的时候出现错误:scalac error: bad option: '-make:transitive' on mvn pa ...
- ab 性能测试工具的使用(Web并发测试)
1.下载 http://pan.baidu.com/s/1hrlAbI0 2.命令介绍 参数的介绍 n在测试会话中所执行的请求个数.默认时,仅执行一个请求. -c一次产生的请求个数.默认是一次一个. ...
- Ubuntu Kylin15下PHP环境的搭建(LAMP)
Ubuntu下的PHP开发环境架设 今天重新装了ubuntu那么就吧过程记录下. 打开终端,也就是命令提示符. 我们先来最小化组建安装,按照自己的需求一步一步装其他扩展.命令提示符输入如下命令: ...
- Hadoop 基准测试与example
#pi值示例 hadoop jar /app/cdh23502/share/hadoop/mapreduce2/hadoop-mapreduce-examples--cdh5. #生成数据 第一个参数 ...
- Hash MD5 CRC 知识
本文旨在科普安全相关的知识,并附一个C#实现的文件管理工具. Hash 安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的五种安全 ...
- document对象补充
五.相关元素操作: var a = document.getElementById("id"); 找到a: var b = a.nextSibling ...
- 嵌入式Linux驱动学习之路(五)u-boot启动流程分析
这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...
- JVM的堆(heap)、栈(stack)和方法区(method)
JVM主要由类加载器子系统.运行时数据区(内存空间).执行引擎以及与本地方法接口等组成.其中运行时数据区又由方法区Method Area.堆Heap.Java stack.PC寄存器.本地方法栈组成. ...
- FSL - DualRegression
Source:http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/DualRegression Research Overview A common need for anal ...