Является ли функция Math.random () фактически фрактальной? - PullRequest
0 голосов
/ 17 апреля 2019

Я следую учебному пособию по quadtree из The Coding Train (YT), и я получил работу с quadtree и рисование! Моя проблема заключается в том, что точки при использовании 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 ()? Есть ли лучший способ получить случайную точку внутри квадрата?

EDIT: Это jsFiddle: https://jsfiddle.net/muteman30/5b8mpfsc/5/

1 Ответ

0 голосов
/ 18 апреля 2019

В вашей функции подразделения:

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

this должно быть b

...