javascript实现了绘画的不相交循环。
HTML code
复制代码代码如下所示:
您的浏览器不支持画布。
另一个圆
Javascript代码
复制代码代码如下所示:
VaR上下文= document.getelementbyid(my_canvas );
背景context.getcontext(2D);
var圆= };
var宽度= 500;
var高度= 400;
无功max_radius = 30;
无功min_radius = 20;
var计数= 0;
窗口。指针函数(){
VaR建立document.getelementbyid(my_btn );
按钮。onclick =函数(){
时间=新日期();
开始= time.gettime();
make_circle();
}
}
函数圆(x,y,r,颜色){
这个;
这个,y = y;
这个;
这个颜色=颜色;
}
功能make_circle(){
var x = math.floor(Math.random()*宽)+ 1;
var y = math.floor(Math.random()*高)+ 1;
VAR r = math.floor(Math.random()*(max_radius-min_radius))+ min_radius;
VaR颜色=RGB(+(math.floor(Math.random()* 256)+
var圆=新圆(x,y,r,颜色);
如果(test1(圈)test2(圈)){
Circles.push(圈);
strokeStyle =颜色背景;
Context.beginPath();
context.arc(X,Y,R,0,数学,PI * 2,真的);
Context.closePath();
context.stroke();
计数= 0;
}
别的{
计数+;
如果(计数> 10000){如果它循环太多次,我们可以假设
警报(不再圈);
返回false;
}
make_circle();
}
}
功能测试(圈){ / /测试如果新圈与他人
VaR len = circles.length;
对于(var i = 0;i < i;i + +){
圈= { };
VaR Y1 =界{我};
圈= { };
变量=圆= x;
VaR Y2 =圈。Y;
var =圆= R;
如果((x1-x2中)*(x1-x2中)+(Y1 Y2)*(Y1 Y2)<(R1 R2 +)*(R2和R1)){
返回false;
}
}
返回true;
}
功能测试2(圈){ / /测试如果新圈接触边界
如果((圆。x +圆。R)>宽度| |(圆。Y +圆。R)>高度| |(圆。x-circle。R)<0 | |(圆。y-circle。R)<0){
返回false;
}
别的{
返回true;
}
}
以上是本文的全部内容,希望能帮助您熟练掌握javascript。