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的gamequery插件做JS乒乓球游戏
Jul 31 Javascript
浅谈JavaScript变量的自动转换和语句
Jun 12 Javascript
微信小程序 动态绑定事件并实现事件修改样式
Apr 13 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
微信小程序promsie.all和promise顺序执行
Oct 27 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 Javascript
vue中tab选项卡的实现思路
Nov 25 Javascript
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 Javascript
JavaScript多种图形实现代码实例
Jun 28 Javascript
JS+CSS实现炫酷光感效果
Sep 05 Javascript
JavaScript实现通讯录功能
Dec 27 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
php 远程关机操作的代码
2008/12/05 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
介绍一下linux文件系统分配策略
2012/11/17 面试题
大学团日活动新闻稿
2014/09/10 职场文书
安全生产先进个人总结
2015/02/15 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
运动会主持人开幕词
2016/03/04 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
MySQL系列之二 多实例配置
2021/07/02 MySQL