Estoy aprendiendo stardust.js y estaba tratando de entender los gráficos dirigidos por fuerza en stardust.js. Sé que Stardust usa d3.js y WebGL, pero cuando miro el código, me resulta difícil encontrar puentes entre ellos.
En un gráfico dirigido, d3.js se usa para generar una simulación de fuerza.
var force = d3.forceSimulation() .force("link", d3.forceLink().id(function (d) {return d.index })) .force("charge", d3.forceManyBody()) .force("forceX", d3.forceX(width / 2)) //for attracting element to a given point .force("forceY", d3.forceY(height / 2)) force.nodes(nodes); force.force("link").links(edges); force.force("forceX").strength(0.5); //strength of aatraction force.force("forceY").strength(0.5); force.force("link").distance(50); force.force("link").strength(0.05); force.force("charge").strength(-40);y le está dando datos a stardust como
var positions = Stardust.array("Vector2") .value(d => [dx, dy]) .data(nodes);donde esta posición se utiliza para la actualización
force.on("tick", () => { if (isDragging && selectedNode && draggingLocation) { selectedNode.x = draggingLocation[0]; selectedNode.y = draggingLocation[1]; } positions.data(nodes); requestRender(); });No entiendo cuál es el uso de la fuerza aquí porque no se usa en ningún lado, solo se crea.
Tengo curiosidad por saber si esto solo se llama para que podamos usar el detector de eventos "tick" solo para crear animación o movimiento o efecto de movimiento porque actualizará la posición enviada al navegador.
Cualquier tipo de ayuda se agradece !! Gracias por adelantado