Należy uproszczać i dostosować bibliotekę js SVGnest do pracy bez interfejsu internetowego i elementów SVG. Innymi słowy, stworzyć funkcję, która przyjmuje tablicę danych o figurach (obecnie prostokątach) i na podstawie określonych parametrów zwraca wyniki dotyczące położenia każdego elementu po wszystkich wykonanych iteracjach.
Na przykład, mamy tablicę prostokątów, gdzie każdy prostokąt jest opisany przez szerokość, wysokość i jego id. Do tablicy prostokątów, aby uniknąć zamieszania, gdzie się znajdują, do każdego następnego dodawany jest rozmiar X poprzedniego. Przykładowy link: JSFiddle.
Do funkcji svgnest.js, która już przyjmuje parametry z ustawień na stronie biblioteki, należy dodać dwa nowe: liczbę iteracji (czyli po ilu zatrzymać się i zwrócić tablicę) oraz wymiary "aktywnego prostokąta", który wcześniej był wybierany ręcznie.
var config = {
clipperScale: 10000000,
curveTolerance: 0,
spacing: 0,
rotations: 4,
populationSize: 10,
mutationRate: 10,
useHoles: false,
exploreConcave: false,
// ↓ dodaj nowe parametry ↓
iterations: 100,
mainRectangle: {
width: 1000,
height: 500
}
};
Funkcja powinna przeprowadzać obliczenia na podstawie dostarczonych danych i parametrów oraz zwracać tablicę z wynikami dla każdego prostokąta, włączając jego identyfikator, nowe współrzędne X i Y oraz kąt obrotu, na przykład:
[
{id: 1, x: 10.5, y: 20.3, rotate: 0},
{id: 2, x: 15.2, y: 30.4, rotate: 90},
...
]
Należy również zmienić punkt początkowy obliczeń na płaszczyźnie rozmieszczenia elementów. Zamiast początkowego lewego górnego punktu sortowania elementów, teraz obliczenia powinny zaczynać się od lewego dolnego rogu i odbywać się od lewej do prawej, czyli obliczenia wzdłuż szerokości i od dołu do góry.

Wszystkie niezbędne pliki js do przetwarzania powinny być połączone w jeden plik, na przykład, svgNewNest.js, w celu ułatwienia integracji i użycia funkcji. Nie trzeba dodawać tego, co nie jest potrzebne do obliczeń, ponieważ nie ma już interakcji z SVG.
<script src="util/pathsegpolyfill.js"></script> nie trzeba dodawać
<script src="util/matrix.js"></script> <!-- import do svgnest.js -->
<script src="util/domparser.js"></script> nie trzeba dodawać
<script src="util/clipper.js"></script> <!-- import do svgnest.js -->
<script src="util/parallel.js"></script>
<script src="util/geometryutil.js"></script> <!-- import do svgnest.js -->
<script src="util/placementworker.js"></script> <!-- import do svgnest.js -->
<script src="svgparser.js"></script> nie trzeba dodawać
<script src="svgnest.js"></script> <!-- to główna funkcja -->
<script src="util/filesaver.js"></script> nie trzeba dodawać