2012-09-24 33 views
7

Tôi đang cố gắng thiết kế mô phỏng trọng lực vật lý với thư viện D3, nhưng tôi không có nhiều may mắn. Các 'layout' API reference nói rằng trọng lực vật lý có thể được thực hiện thông qua một tham số tích cực 'phí', nhưng tôi không chắc chắn về cách thức này sẽ làm việc. Những gì tôi đang cố gắng thực hiện tại thời điểm này là một phần tử SVG duy nhất chứa nhiều biến có trọng số và có kích cỡ tăng lên ở các tốc độ khác nhau cuối cùng sẽ ra khỏi khung nhìn - trọng số của chúng sẽ xác định vận tốc mà chúng tăng lên. (Về cơ bản, tôi chỉ đang cố gắng thực hiện một lực hút hấp dẫn toàn cầu từ trên đỉnh của khung nhìn.)D3 trọng lực vật lý

Có cách nào khả thi để thực hiện điều này theo bố cục lực D3 không? Tôi chỉ tìm kiếm các giải pháp khái niệm, nhưng các ví dụ và đoạn mã cũng được đánh giá cao.

Cảm ơn trước!

+0

là yếu tố duy nhất SVG một hình ảnh? –

Trả lời

3

Đây là ý tưởng cặp đôi:

  1. Bạn có thể trực tiếp thay đổi vị trí dọc của nút trong xử lý sự kiện đánh dấu:

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

    Bạn cần phải thiết lập force.gavity (0) đối với phương pháp này.

  2. Hoặc bạn có thể sử dụng force.gravity: nó kéo nút về phía trung tâm bố trí, bạn có thể chỉ định transfromation svg chuyển trung tâm bố trí trên khung nhìn
Các vấn đề liên quan