标签:
原子粒动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas动画</title>
<style>
body{
background-color:#000000;
}
canvas{
display: block;
position: absolute;
top:0;
left:0;
-webkit-box-shadow: inset 0 0 100px #69f;
-moz-box-shadow: inset 0 0 100px #69f;
box-shadow: inset 0 0 100px #69f; ;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script type="text/javascript">
var canvas=document.getElementById("canvas");
cxt=canvas.getContext("2d");
w = 500;
h = 500;
partical = 100;//原子数量
particals = [];
colors = ["#FFFF00","#FFBBFF","#346945","#FF7F00","#FF3030","#EEEE00","#98FB98","#7EC0EE","#7D26CD","#458B74"];
canvas.width = w;
canvas.height = h;
aW = window.innerWidth;
aH = window.innerHeight;
canvas.style.left = (aW-w)/2+"px";
canvas.style.top = (aH-h)/2+"px";
function FC(){
this.x = Math.round(Math.random()*w);//x
this.y = Math.round(Math.random()*h);//y
this.rad = Math.round(Math.random()*5)+5;//rad
this.rgba = colors[Math.round(Math.random()*10)];
this.vx = Math.round(Math.random()*3)-1.5;
this.vy = Math.round(Math.random()*3)-1.5;
}
function draw(){
cxt.clearRect(0,0,w,h);
for(var i=0;i<partical;i++){
var p = particals[i];
for(var j=0;j<partical;j++){
var pp = particals[j];
if(p.rgba == pp.rgba && findDistance(p,pp)<50){
cxt.strokeStyle = p.rgba;
cxt.moveTo(p.x, p.y);
cxt.lineTo(pp.x,pp.y);
cxt.stroke();
}
}
cxt.beginPath();
cxt.fillStyle= p.rgba;
cxt.arc(p.x, p.y, p.rad,0,Math.PI*2,true);
cxt.fill();
cxt.closePath();
cxt.beginPath();
cxt.strokeStyle= p.rgba;
cxt.arc(p.x, p.y, p.rad+20,0,Math.PI*2,true);
cxt.stroke();
cxt.closePath();
}
upData()
}
function upData(){
for(var i=0;i<partical;i++){
var p = particals[i];
p.x += p.vx;
p.y += p.vy;
if(p.x>w)p.x=0;
if(p.x<0)p.x=w;
if(p.y>h)p.y=0;
if(p.y<0)p.y=h;
}
}
function findDistance(p1,p2){
return Math.sqrt(Math.pow(p2.x-p1.x,2)+Math.pow(p2.y-p1.y,2));
}
(function int(){
for(var i=0;i<partical;i++){
particals.push(new FC)
}
})();
setInterval(draw,15)
</script>
</body>
</html>
【js】canvas——Atomic-particle-motion
标签:
原文地址:http://www.cnblogs.com/suming1016/p/5404205.html