Не могу выяснить причину неожиданного поведения моего алгоритма заливки асинхронного рекурсивного анимированного графа.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Не могу выяснить причину неожиданного поведения моего алгоритма заливки асинхронного рекурсивного анимированного графа.

Сообщение Anonymous »

Недавно я реализовал алгоритм заливки анимированного графа, основной особенностью которого является анимированный переход «импульса» между выбранными вершинами графа. Позвольте мне кратко объяснить:
  • Структура графа: Вот как выглядит структура графа:
    < /ol>

    Код: Выделить всё

    {
    "1": {
    "coordinates": [0.1, 0.4, -1],
    "connections": [3, 5]
    },
    "2": {
    "coordinates": [0.2, -0.4, 0.2],
    "connections": [1]
    },
    "3": {
    "coordinates": [1, -0.3, 0.9],
    "connections": [1, 2]
    },
    "4": {
    "coordinates": [-0.5, 0.4, 0.9],
    "connections": []
    },
    "5": {
    "coordinates": [0.0, 0.1, -0.2],
    "connections": [4, 2]
    }
    }
    
  • Класс FloodFill: я использую класс FloodFill с двумя асинхронными методами: animateImpulse и заполните.

Код: Выделить всё

function startImpulseFromAttributes() {
const graph = parseGraphDict();

const floodFill = new FloodFill(graph, animationSpeed);
floodFill.fill(startVertex, impulsePower, (impulse, vertex) => {
post("Impulse", JSON.stringify(impulse), " active at vertex ", JSON.stringify(vertex));
});
}

var activeObjects = []; // List to track created objects

function cleanupAllObjects() {
activeObjects.forEach(obj => obj.freepeer());
activeObjects = []; // Clear the list
}

class FloodFill {

constructor(graph, animationSpeed) {
this.graph = graph;
this.animationSpeed = animationSpeed;
}

async animateImpulse(startCoord, endCoord, speed) {
return new Promise((resolve) => {
const gridshape = new JitterObject("jit.gl.gridshape", contextName);
gridshape.shape = "cone";
gridshape.color = [Math.random(), Math.random(), Math.random()];

const animNode = new JitterObject("jit.anim.node");
gridshape.anim = animNode.name;
animNode.movemode = "local";
animNode.scale = impulseScale;
animNode.position = startCoord;
animNode.lookat = endCoord;

const animDrive = new JitterObject("jit.anim.drive");
animDrive.targetname = animNode.name;
animDrive.move(0, 0, speed);

const goalVector = endCoord.map((v, i) => v - startCoord[i]);

const checkPosition = new Task(() => {
const pos = animNode.worldpos;
const currentVector = pos.map((v, i) => v - startCoord[i]);

if (veclength(currentVector) >= veclength(goalVector)) {
post("Animation complete\n");
gridshape.freepeer();
animNode.freepeer();
animDrive.freepeer();
checkPosition.cancel();
resolve();
// post("Resolved promise\n");
}
});

checkPosition.interval = worldposQueryInterval;
checkPosition.repeat();
})
}

async fill(startVertexId, stepsLeft, actionCallback) {
if (stepsLeft 

Подробнее здесь: [url]https://stackoverflow.com/questions/79381497/cant-figure-out-the-cause-of-unexpected-behaviour-of-my-async-recursive-animate[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование библиотеки clsx для условной композиции классов CSS, но получение неожиданного поведения
    Anonymous » » в форуме CSS
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как сделать бесконечную прокрутку поведения без неожиданного прыжка
    Anonymous » » в форуме Javascript
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Асинхронность ожидает неожиданного поведения
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как выяснить точную причину, почему regex не удается в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Получите наиболее оптимальную комбинацию мест из списка мест с помощью алгоритма графа.
    Anonymous » » в форуме Python
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»