2012-09-24 18 views
7

Estoy tratando de diseñar una simulación de la gravedad física con la biblioteca D3, pero no estoy teniendo mucha suerte. El 'layout' API reference establece que la gravedad física se puede implementar a través de un parámetro positivo de "carga", pero no estoy seguro de cómo funcionaría.D3 gravedad física

Lo que estoy tratando de implementar en este momento es un elemento SVG único que contiene múltiples rectas de peso variable y tamaño que se elevan a diferentes velocidades que finalmente saldrán de la ventana gráfica; sus pesos definirán la velocidad a la que subir. (Básicamente, solo estoy tratando de implementar una atracción gravitacional global desde más allá de la parte superior de la ventana gráfica.)

¿Hay alguna manera factible de hacerlo de acuerdo con el diseño de la fuerza D3? Solo busco soluciones conceptuales, pero también se agradecen los ejemplos y los fragmentos de código.

¡Gracias de antemano!

+0

Es solo elemento SVG una imagen? –

Respuesta

3

Aquí es Ideas par:

  1. Puede modificar directamente la posición vertical del nodo de controlador de eventos de garrapata:

    force.on("tick", function(e) { 
        nodes.forEach(function(o, i) { 
         o.y -= o.weight/30; 
        }); 
    
        node.attr("cx", function(d) { return d.x; }) 
         .attr("cy", function(d) { return d.y; }); 
    }); 
    

    Es necesario configurar force.gavity (0) para este enfoque.

  2. O puede utilizar force.gravity: se tira nodos hacia el centro de diseño, puede especificar transfromation SVG para desplazar el centro de diseño por encima de la ventana gráfica