2012-09-24 38 views
7

मैं डी 3 लाइब्रेरी के साथ भौतिक गुरुत्वाकर्षण के सिमुलेशन को डिजाइन करने की कोशिश कर रहा हूं, लेकिन मुझे बहुत भाग्य नहीं है। 'layout' API reference बताता है कि भौतिक गुरुत्वाकर्षण को सकारात्मक 'चार्ज' पैरामीटर के माध्यम से कार्यान्वित किया जा सकता है, लेकिन मुझे यकीन है कि यह कैसे काम करेगा।डी 3 भौतिक गुरुत्वाकर्षण

जो मैं इस समय कार्यान्वित करने का प्रयास कर रहा हूं वह एक एकल एसवीजी तत्व है जिसमें अंततः व्यूपोर्ट से बाहर निकलने वाली विभिन्न गतियों पर बढ़ने वाले कई भिन्न-भारित और आकार के आय होते हैं - उनके वजन उस गति को परिभाषित करेंगे जिस पर वे वृद्धि। (असल में, मैं सिर्फ व्यूपोर्ट के शीर्ष से एक वैश्विक गुरुत्वाकर्षण खींचने की कोशिश कर रहा हूं।)

क्या डी 3 फोर्स लेआउट के अनुसार ऐसा करने का एक व्यवहार्य तरीका है? मैं सिर्फ वैचारिक समाधान की तलाश में हूं, लेकिन उदाहरण और कोड स्निपेट की सराहना भी की जाती है।

अग्रिम धन्यवाद!

+0

एकल एसवीजी तत्व एक छवि है? –

उत्तर

3

यहाँ कुछ उपाय दिए गए है:

  1. आप सीधे नोड के ऊर्ध्वाधर स्थिति संशोधित कर सकते हैं टिक ईवेंट हैंडलर में:

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

    आप (0) इस दृष्टिकोण के लिए force.gavity सेट करना होगा।

  2. या आप force.gravity उपयोग कर सकते हैं: यह लेआउट केंद्र की ओर नोड्स खींचती है, तो आप व्यूपोर्ट ऊपर लेआउट केंद्र शिफ्ट करने के लिए svg transfromation निर्दिष्ट कर सकते हैं