Необхідно спростити та адаптувати js бібліотеку SVGnest для роботи без веб-інтерфейсу та SVG-елементів. Тобто створення функції, яка на вхід приймає масив даних про фігури (наразі це прямокутники) та на основі визначених параметрів видає результати про розташування кожного елемента після всіх виконаних ітерацій.
Наприклад, ми маємо масив прямокутників, де кожний прямокутник описується через ширину, висоту та його id. До масиву прямокутників, щоб не було плутанини, де вони знаходяться, до кожного наступного додається розмір по Х попереднього. Посилання на приклад: JSFiddle.
До функції svgnest.js яка вже і так приймає параметри з налаштувань на сторінці бібліотеки необхідно додати два нових: кількість ітерацій (тобто після кількох зупинитися і повернути масив) та розміри "активного прямокутника", який раніше вибирався вручну.
var config = {
clipperScale: 10000000,
curveTolerance: 0,
spacing: 0,
rotations: 4,
populationSize: 10,
mutationRate: 10,
useHoles: false,
exploreConcave: false,
// ↓ to add new params ↓
iterations: 100,
mainRectangle: {
width: 1000,
height: 500
}
};
Функція має проводити розрахунки на основі наданих даних та параметрів та повертати масив з результатами для кожного прямокутника, включаючи його ідентифікатор, нові координати X та Y, та кут повороту, наприклад:
[
{id: 1, x: 10.5, y: 20.3, rotate: 0},
{id: 2, x: 15.2, y: 30.4, rotate: 90},
...
]
Також необхідно змінити початкову точку розрахунку на площині розміщення елементів. Замість вихідної верхньої лівої точки початку розрахунку сортування елементів тепер повинне починатися з нижнього лівого кута і відбуватися зліва направо, тобто розрахунок по ширині та знизу вгору.

Всі необхідні для обробки js файли мають бути об'єднані в один файл, наприклад, svgNewNest.js, для спрощення інтеграції та використання функції. Те що не потрібн для розрахункій додавити не треба, бо тут вже немає взаємодії з SVG.
<script src="util/pathsegpolyfill.js"></script> не потрібно додавати
<script src="util/matrix.js"></script> <!-- import to svgnest.js -->
<script src="util/domparser.js"></script> не потрібно додавати
<script src="util/clipper.js"></script> <!-- import to svgnest.js -->
<script src="util/parallel.js"></script>
<script src="util/geometryutil.js"></script> <!-- import to svgnest.js -->
<script src="util/placementworker.js"></script> <!-- import to svgnest.js -->
<script src="svgparser.js"></script> не потрібно додавати
<script src="svgnest.js"></script> <!-- це основна функція -->
<script src="util/filesaver.js"></script> не потрібно додавати