From bc449cd86ac1b4874406ec0d19abbfb08b898426 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Tue, 22 Nov 2022 08:55:45 +1000 Subject: [PATCH] added cascade collision and deleted attributes observer --- graph.js | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/graph.js b/graph.js index a690a88..09034de 100644 --- a/graph.js +++ b/graph.js @@ -240,25 +240,8 @@ class graph { ); } - // Инициализация ссылки на обрабатываемый объект - const _this = this; - - // Инициализация наблюдателя - this.#observer = new MutationObserver(function (mutations) { - for (const mutation of mutations) { - if (mutation.type === "attributes") { - // Запись параметра в инстанцию бегущей строки - _this.collision(_this.operator.nodes); - } - } - }); - - // Активация наблюдения - this.observer.observe(this.element, { - attributes: true, - attributeFilter: ["data-graph-x", "data-graph-y"], - attributeOldValue: true - }); + // Обработка столкновений + this.collision(this.operator.nodes); } collision(nodes) { @@ -302,19 +285,15 @@ class graph { // Реинициализация вектора между узлами between = new victor(x1 - x2, y1 - y2); + // Проверка на столкновение узлов if ( between.length() > node.diameter / 2 + this.diameter / 2 || --iterations === 0 ) break; - console.log(node.diameter, this.diameter); - - // let b = new victor(x1, y1).add( - // new victor((vic.x * 2) / 100, (vic.y * 2) / 100) - // ); - - let b = new victor(x1, y1) + // Инициализация координат вектора (узла с которым произошло столкновение) + let vector = new victor(x1, y1) .add(new victor(between.x, between.y).norm().unfloat()) .subtract( new victor( @@ -323,8 +302,8 @@ class graph { ) ); - node.element.style.left = b.x + "px"; - node.element.style.top = b.y + "px"; + // Перемещение узла с которым произошло столкновение + node.move(vector.x, vector.y); } while (between.length() <= node.diameter / 2 + this.diameter / 2); } }