【问题标题】:Is the Math.random() function actually a fractal?Math.random() 函数实际上是分形吗?
【发布时间】: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) =&gt; Math.floor(Math.random() * (max - min + 1)) + min;
  • 您可以添加结果的屏幕截图(或工作的 sn-p)吗?我不确定您对“分形”的确切含义
  • 您确定是Math.random() 故障而不是Quadtree 实现功能?

标签: javascript canvas random


【解决方案1】:

在你的细分函数中:

    let neb = new Rectangle(b.x+b.w/2, this.y, b.w/2, b.h/2);

this 应该是b

【讨论】:

  • 当然!非常感谢!
猜你喜欢
  • 2015-08-18
  • 2018-04-12
  • 1970-01-01
  • 2020-11-16
  • 2020-01-14
  • 2021-12-17
  • 2020-01-05
  • 2011-10-27
  • 2021-01-11
相关资源
最近更新 更多