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 相关文章推荐
Jquery中getJSON在asp.net中的使用说明
Mar 10 Javascript
js弹出窗口之弹出层的小例子
Jun 17 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
js使用心得分享
Jan 13 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
Apr 30 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
vue组件系列之TagsInput详解
May 14 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
xajax写的留言本
2006/11/25 PHP
php基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python中必要的名词解释
2019/11/20 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
简历里的自我评价
2014/01/31 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
教师党员整改措施
2014/10/24 职场文书
伏羲庙导游词
2015/02/09 职场文书
入党积极分子个人总结
2015/03/02 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python