widziałem this solution który wydaje się dbać o elementy klastrów w ramach „konsekwentny” kształt bez nakładania, ale co jeśli kształt był bardziej niejasne, jak następuje:elementy tworzenie klastrów w kształcie
Moja pierwsza para dźgnie w to, jak się wydaje, uproszczenie kształtu do najbardziej podstawowej postaci, a następnie sprawdzenie czy element znajduje się w rzeczywistych współrzędnych kształtu, ale wydaje się, że Mnóstwo potencjalnych obliczeń, które miałem nadzieję uprościć. Wszelkie przemyślenia byłyby niezwykle cenne. Dzięki!
JS Fiddle dla odniesienia:
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);
});
Edytuj
This example ma losowy klastrów wewnątrz określonego kształtu, ale ponieważ kontekście tego kształtu nie jest kwadratem, będę potrzebował wykonać kilka testów na pierwszej konwersji obiektu SVG na element canvas, a następnie uruchomić kod przez coś podobnego.
Być może zamiast dwóch tablic (* po jednej na każdą oś *) można wybrać jedną z parami współrzędnych, które można najpierw filtrować dla tych, które mieszczą się w e kształt, a od tych można losowo wybrać, co chcesz. To byłoby podejście liniowe, które nie musi być ponownie wybierane, dopóki coś nie wpadnie do środka. –
Dzięki za odpowiedź - czy w ogóle widziałeś to na wolności? Próbując zebrać trochę inspiracji dla możliwych sposobów, w jakie można to osiągnąć. – Zach
To naprawdę świetne pytanie. Czy boks dookoła kształtu jest opcją? –