【发布时间】:2019-04-17 13:43:43
【问题描述】:
我正在学习 The Coding Train (YT) 的四叉树教程,并且我的四叉树正在工作和绘图!我的问题是使用 Math.random()*canvas.width 和 Math.random()*canvas.height 在画布上创建随机点的点并没有给我随机的点模式,它是分形的(比如谢尔宾斯基三角)。
我查看了混沌游戏(感谢 Numberphile)并了解足以知道 Math.random() 不起作用。这是我生成积分的代码。
for(let i=0; i<100000; i++){
var rx = Math.random()*canvas.width;
var ry = Math.random()*canvas.height;
let p = new Point(rx, ry, 2.5, i);
qtree.insert(p);
}
如果有人知道有帮助的解释,我是否错误地使用了 Math.random()?有没有更好的方法来获取正方形内的随机点?
编辑: 这是 jsFiddle: https://jsfiddle.net/muteman30/5b8mpfsc/5/
【问题讨论】:
-
rx 的预期输出是什么?
Math.random()返回 0 到 1 之间的值 -
Math.random()返回一个介于 0 和 1 之间的floating point number。所以它没有给出fractal,这完全是另外一回事。但我猜它可能会起作用,因为它会创建一个介于 0 和 canvas.width 之间的数字。所以显示的代码应该是正确的。如果点的集合一起形成一个分形,则您可能在未显示的代码中遇到问题。 -
试试这个:
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; -
您可以添加结果的屏幕截图(或工作的 sn-p)吗?我不确定您对“分形”的确切含义
-
您确定是
Math.random()故障而不是Quadtree实现功能?
标签: javascript canvas random