2012-09-24 27 views
7

Próbuję zaprojektować symulację fizycznej grawitacji z biblioteką D3, ale nie mam dużo szczęścia. 'layout' API reference stwierdza, że ​​fizyczna grawitacja może zostać zaimplementowana za pomocą dodatniego parametru "ładunku", ale nie jestem pewien, jak to działałoby.D3 ciąża fizyczna

Co ja próbuje wdrożyć w tej chwili jest pojedynczy element SVG zawierający wiele różnie ważone i -sized rects rosnące przy różnych prędkościach ostatecznie wychodzących rzutni - ich waga będzie określić prędkość z jaką wzrost. (Zasadniczo próbuję zaimplementować globalne przyciąganie grawitacyjne spoza górnej części rzutni).

Czy jest możliwy do wykonania sposób zgodnie z układem sił D3? Po prostu szukam rozwiązań koncepcyjnych, ale doceniamy również przykłady i fragmenty kodu.

Z góry dziękuję!

+0

Czy pojedynczy element SVG obraz? –

Odpowiedz

3

Oto kilka pomysłów:

  1. można bezpośrednio modyfikować pozycję pionową w węźle obsługi zdarzeń kleszcza:

    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; }); 
    }); 
    

    Musisz ustawić force.gavity (0) dla tego podejścia.

  2. Albo można użyć force.gravity: ciągnie węzłów w kierunku centrum układu, można określić svg transfromation przesunięcie centrum układu powyżej rzutni