Я видел this solution который, кажется, заботиться о кластеризации элементов в «последовательной» форме без наложений, но что, если форма была более неясными, как в следующем:Кластеризация элементы в форме
Мои первые штрихи на этом, кажется, указывают на упрощение формы до самой базовой формы, а затем выполнение проверок, если элемент находится в пределах координат фактической фигуры, но это похоже на многочисленные потенциальные вычисления, которые я надеялся упростить. Любые мысли были бы чрезвычайно оценены. Благодаря!
JS Fiddle для справки:
var tilesize = 18, tilecount = 15;
var gRows = Math.floor($(".container").innerWidth()/tilesize);
var gCols = Math.floor($('.container').innerHeight()/tilesize);
var vals = _.shuffle(_.range(tilecount));
var xpos = _.shuffle(_.range(gRows));
var ypos = _.shuffle(_.range(gCols));
_.each(vals, function(d,i){
var $newdiv = $('<div/>').addClass("tile");
$newdiv.css({
'position':'absolute',
'left':(xpos[i] * tilesize)+'px',
'top':(ypos[i] * tilesize)+'px'
}).appendTo('.container').html(d);
});
Edit
This example имеет случайную кластеризацию в пределах определенной формы, но поскольку контекст этой формы не является квадратом, мне нужно выполнить некоторое тестирование при первом преобразовании объекта SVG в элемент canvas и затем запустить код через нечто подобное.
Возможно, вместо двух массивов (* по одному для каждой оси *) вы могли бы использовать пары координат, которые вы могли бы сначала фильтровать для тех, которые вписываются в формы, и от тех, которые вы можете произвольно выбрать, что хотите. Это будет линейный подход, который не нужно повторно выбирать, пока что-то не попадет внутрь. –
Спасибо за ответ - любой шанс, что вы видели это в дикой природе? Попытка собрать вдохновение для возможных путей этого может быть достигнута. – Zach
На самом деле это отличный вопрос. Является ли бокс вокруг формы опцией? –