手机
当前位置:查字典教程网 >编程开发 >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实现画不相交的圆】相关文章:

js实现两点之间画线的方法

javascript实现淡蓝色的鼠标拖动选择框实例

基于javascript简单实现对身份证校验

javascript实现日期按月份加减

javascript动态设置样式style实例分析

基于JavaScript实现智能右键菜单

JavaScript中的函数嵌套使用

JavaScript实现的MD5算法完整实例

javascript实现动态改变层大小的方法

javascript实现模拟时钟的方法

精品推荐
分类导航