我有一个基本的JSfiddle,我希望在圆圈内绘制随机点.

但我不知道如何限制圆圈内的点数.

这就是我目前拥有的:

var ctx = canvas.getContext('2d'),count = 1000,// number of random  points
    cx = 150,cy = 150,radius = 148;

    ctx.beginPath();
    ctx.moveto(cx,cy);
    ctx.arc(canvas.width/2,canvas.height/2,radius,2*Math.PI);
    ctx.closePath();
    ctx.fillStyle = '#00000';
    ctx.fill();

// create random points
    ctx.fillStyle = '#ffffff';

while(count) {
    // randomise x:y

    ctx.fillRect(x + canvas.width/2,y + canvas.height/2,2,2);
    count--;
}

我如何生成随机(x,y)坐标来绘制圆内的随机点?

我现在的小提琴:http://jsfiddle.net/e8jqdxp3/

解决方法

要在圆中随机绘制点,您可以从半径平方中选择一个随机值,然后从中取平方根,选择一个随机角度,并将极坐标转换为矩形.平方/平方根步骤确保我们得到均匀分布(否则大多数点将接近圆的中心).

因此,绘制圆中随机点的公式如下,其中r’是0和r2之间的随机值,θ是0到2π之间的随机值:

结果截图:

现场演示:

var canvas = document.getElementById("thecanvas");

var ctx = canvas.getContext('2d'),radius = 148;

ctx.fillStyle = '#CCCCCC';
ctx.fillRect(0,canvas.width,canvas.height);

ctx.fillStyle = '#000000';

ctx.beginPath();
ctx.moveto(cx,cy);
ctx.arc(canvas.width / 2,canvas.height / 2,2 * Math.PI);
ctx.closePath();

ctx.fill();

// create random points
ctx.fillStyle = '#ffffff';

while (count) {
    var pt_angle = Math.random() * 2 * Math.PI;
    var pt_radius_sq = Math.random() * radius * radius;
    var pt_x = Math.sqrt(pt_radius_sq) * Math.cos(pt_angle);
    var pt_y = Math.sqrt(pt_radius_sq) * Math.sin(pt_angle);
    ctx.fillRect(pt_x + canvas.width / 2,pt_y + canvas.width / 2,2);
    count--;
}
<canvas id="thecanvas" width="400" height="400"></canvas>

JSfiddle版本:https://jsfiddle.net/qc735bqw/

javascript – 在圆圈内随机绘制点的最简单方法的更多相关文章

  1. Xcode iOS Notability“缩放框”

    Notability和其他笔记应用程序具有此“缩放框”功能,您可以在底部的放大框中绘制.用户还可以拖动顶部的框以更改底部放大的内容.我已经尝试了我能想到的所有内容,以便在我的应用中添加此功能.我在两个视图中添加了相同的文档,但后来我遇到了很多内存问题,我已经复制了文件但是再次出现了内存问题.有谁知道一个简单的方法来做到这一点?

  2. PHP+javascript模拟Matrix画面

    直接存为*.php文件运行即可。

  3. PHP也可以當成Shell Script

    不过﹐这次要讲的主题不是PHP在网页设计上的应用﹐而是PHP在ShellScript上的应用﹐一般所知的ShellScript大约就是tcsh、bash、perl或是python这几类语言﹐我所要谈的就是将PHP当成ShellScript来使用。第一个程序开始撰写我们的第一个PHPShellScript程序﹐这个例子印出"Helloworld!>注意到PHP原本是应用在网页应用的﹐因此它内定会送出HTML的HEADER﹐但是在此我们是要将PHP用作ShellScript﹐"-q"就是表示不要送出HEADE

  4. PHP+javascript液晶时钟

    $size_small=5;//液晶宽度$size_big=25;//液晶长度$distance=10;//间距$color_back="#DDDDDD";$color_dark="#CCCCCC";$color_light="#000000";$number=0;?>";}}functionchange//处理数字显示{switch{case0:swapcolor;swapcolor;swapcolor;swapcolor;swapcolor;swapcolor;swapcolor;break;case

  5. 对javascript和select部件的结合运用

    php//对Javascript和select部件的结合运用//在写程序的过程,我想实现在select对象选中选项后,//不需要提交按钮,而直接触发动作,且在动作发生后//的页面中要保持所选择的选项。经过形容,终于通过//使用Javascript及select对象的onchange属性及//value值而实现了这种功能。>

  6. css中的px、em、rem、pt 特点和区别及换算详解

    这篇文章主要介绍了css中的px、em、rem、pt 之间的特点和区别及换算,各大小单位是否继承父元素大小及浏览器兼容与否等方面也做了详细解释,需要的朋友可以参考下

  7. PHP与javascript的两种交互方式

    在网页制作过程中怎样在不刷新页面的情况下使前台页面和后台CGI页面保持交互一直是个问题。这里介绍两个我在实践中使用的方法。action.php将信息放入cookie中,main.htm通过读取cookie来实现交互。index.htm---------------------------------------------------------------Test

  8. JSP由浅入深(8)—— JSP Tags

    JSP另外一个重要的语法是Tags(标记)。JSPtags可以有一个“starttag”、一个“tagbody”以及一个“endtag”。标志可以分成两种类型:一种是从外部标志库中转载的,另外一种是预先定义的标志。预先定义的标志是以jsp:字符开始的。其实它跟jsp:include是很相似的。再给出本节的练习吧,编写一个JSP,使之根据一个布尔型变量来对一个包含的文件。这里还是提示一下吧,要用到HTML和scriptlets的混合编程来处理JSP标志。

  9. JSP由浅入深(4)—— Scriptlets

    上面的教程我们已经学会了如何在JSP网页中通过在字符系列之间嵌入Java表达式。但是通过将Java表达式放置到HTML进行大量的编程工作是很困难的。代码块就是我们熟知的“scriptlet”。如果单单是scriptlet,对于HTML起不了任何作用。而每次scriptlet包含了被执行的Java代码的时候,JSP就被调用。下面的代码是对上一节JSP教程进行修改后的代码,我们增加了一个scriptlet:

  10. PHP与javascript对多项选择的处理

    我们经常要给用户作出多项选择进行处理,例如允许用户对列表项选择多项后删除选定项等。今天举个例子说明PHP和JavaScript分别是怎样处理多项选择的。表itemtable是通过以下MySQL语句建立的:CREATETABLE`itemtable`;其中字段“name”是列表项目名,“votes”是所得票数。我们还要建立一个表“voteiptable”来记录投票用户的IP:CREATETABLE`voteiptable`;下面我们编写文件“multivote.php”,今天我们要用到一个数据库类文件“db

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部