javascript实现画不相交的圆


Posted in Javascript onApril 07, 2015

效果

javascript实现画不相交的圆

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基础篇
Nov 13 Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
解决jquery的datepicker的本地化以及Today问题
May 23 Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 Javascript
javascript使用prototype完成单继承
Dec 24 Javascript
jQuery使用$.ajax进行即时验证实例详解
Dec 11 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
angularJS 指令封装回到顶部示例详解
Jan 22 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
Dec 03 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
Apr 07 #Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 #Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 #Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 #Javascript
JavaScript输出当前时间Unix时间戳的方法
Apr 06 #Javascript
JavaScript将当前时间转换成UTC标准时间的方法
Apr 06 #Javascript
JavaScript获取当前日期是星期几的方法
Apr 06 #Javascript
You might like
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
与数据库连接
2006/10/09 PHP
php字符串截取的简单方法
2013/07/04 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
js选项卡的制作方法
2017/01/23 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python3访问sina首页中文的处理方法
2014/02/24 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
终止合同协议书
2014/04/17 职场文书
超市周年庆活动方案
2014/08/16 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
找规律教学反思
2016/02/23 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书