объяснить круги лучшего кандидата Майка Бостока - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь внести изменения в код, так как я новичок в d3 и наблюдаемые у меня проблемы. Я понимаю, что такое алгоритм, но все создаваемые круги находятся не совсем внутри прямоугольника. Так что я не знаю, где изменить код, чтобы исправить это. Вот часть кода, которая генерирует круг. но как создать круги точно внутри прямоугольника - это проблема.

  quadtree.visit((node, x1, y1, x2, y2) => {
   if (!node.length) {
    do {
    const [px, py, pr] = node.data;
    const dx = x - px;
    const dy = y - py;
    const d2 = dx * dx + dy * dy;
    const r2 = pr * pr;
    if (d2 < r2) return distance = 0, true; // within a circle
    const d = Math.sqrt(d2) - pr;
    if (d < distance) distance = d;
  } while (node = node.next);
  }
    return !distance || x1 > rx2 || x2 < rx1 || y1 > ry2 || y2 < ry1; // or outside search radius
   });

   if (distance > bestDistance) bestX = x, bestY = y, bestDistance = distance;
  }

    if (bestDistance <= padding) return null;
   const best = [bestX, bestY, bestDistance - padding];
    quadtree.add(best);
  return best; 

Это ссылка на полный код https://observablehq.com/@mbostock / best -андидат-круги .

...