手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >javascript实现画不相交的圆
javascript实现画不相交的圆
摘要:效果html代码复制代码代码如下:yourbrowserdoesnotsupportcanvasAnotherCirclejavascrip...

效果

javascript实现画不相交的圆1

html代码

复制代码 代码如下:

<canvas id="my_canvas" width="500" height="400">

your browser does not support canvas

</canvas>

<button id="my_btn">Another Circle</button>

javascript代码

复制代码 代码如下:

var context=document.getElementById("my_canvas");

context=context.getContext("2d");

var circles=[];

var width=500;

var height=400;

var max_radius=30;

var min_radius=20;

var count=0;

window.onload=function(){

var btn=document.getElementById("my_btn");

btn.onclick=function(){

var time=new Date();

start=time.getTime();

make_circle();

}

}

function Circle(x,y,r,color){

this.x=x;

this.y=y;

this.r=r;

this.color=color;

}

function make_circle(){

var x=Math.floor(Math.random()*width)+1;

var y=Math.floor(Math.random()*height)+1;

var r=Math.floor(Math.random()*(max_radius-min_radius))+min_radius;

var color="rgb("+(Math.floor(Math.random()*256))+","+(Math.floor(Math.random()*256))+","+(Math.floor(Math.random()*256))+")";//make different color

var circle=new Circle(x,y,r,color);

if(test1(circle)&&test2(circle)){

circles.push(circle);

context.strokeStyle=color;

context.beginPath();

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

context.closePath();

context.stroke();

count=0;

}

else{

count++;

if(count>10000){//if it loops too many times,we can assume that there is no space for new circle

alert("no more circle");

return false;

}

make_circle();

}

}

function test1(circle){//test if the new circle intersects with the others

var len=circles.length;

for(var i=0;i<len;i++){

var x1=circles[i].x;

var y1=circles[i].y;

var r1=circles[i].r;

var x2=circle.x;

var y2=circle.y;

var r2=circle.r;

if((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<(r2+r1)*(r2+r1)){

return false;

}

}

return true;

}

function test2(circle){//test if the new circle touchs the border

if((circle.x+circle.r)>width||(circle.y+circle.r)>height||(circle.x-circle.r)<0||(circle.y-circle.r)<0){

return false;

}

else{

return true;

}

}

以上所述就是本文的全部内容了,希望能够对大家熟练掌握javascript有所帮助。

【javascript实现画不相交的圆】相关文章:

JavaScript实现列表分页功能特效

Javascript 高阶函数使用介绍

详解Javascript中的Object对象

Javascript实现每日自动换一张图片的方法

javascript字符串与数组转换汇总

JavaScript实现弹出模态窗体并接受传值的方法

JavaScript中的函数嵌套使用

JavaScript实现斗地主游戏的思路

javascript实现可全选、反选及删除表格的方法

javascript实现十秒钟后注册按钮可点击的方法

精品推荐
分类导航