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拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
bootstrap3 兼容IE8浏览器!
May 02 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
js改变透明度实现轮播图的算法
Aug 24 Javascript
原生js封装的一些jquery方法(详解)
Sep 20 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
Mar 30 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
Electron 如何调用本地模块的方法
Feb 01 Javascript
Node.js中console.log()输出彩色字体的方法示例
Dec 01 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
Feb 15 Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
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
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
利用PHP创建动态图像
2006/10/09 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
Document 对象的常用方法
2009/07/31 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
房屋出售协议书
2014/04/10 职场文书
党建工作经验交流材料
2014/05/25 职场文书
公司活动总结范文
2014/07/01 职场文书
公司外出活动方案
2014/08/14 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
MySQL基础(二)
2021/04/05 MySQL
python生成随机数、随机字符、随机字符串
2021/04/06 Python
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏
Docker下安装Oracle19c
2022/04/13 Servers