मेरे पास एक कण प्रणाली में वसंत नामक एक वर्ग है। निर्माता की तरह दिखता है:2 डी वेक्टर (सी ++) में तत्व के संदर्भ
Spring(Particle& _a, Particle& _b);
और मैं कण का एक वेक्टर है और मैं
Spring mySpring = Spring(myParticles.at(j),myParticles.at(j+1));
का उपयोग एक पाश के अंदर दो कणों के बीच एक वसंत बल जोड़ने के लिए। सब कुछ ठीक काम करता है। हालांकि, मैं कणों के 2 डी वेक्टर का उपयोग करना चाहता हूं। यह है:
Spring mySpring = Spring(myParticles.at(i).at(j),myParticles.at(i).at(j+1));
और मुझे कण का संदर्भ नहीं मिलता है। पहले उदाहरण में, जब भी मैं अपने वसंत वर्ग में कण बदलता हूं, वेक्टर में कण बदल जाता है। दूसरे उदाहरण में परिवर्तन केवल स्थानीय रूप से हैं। मैं 2 डी वेक्टर में कण कैसे बदल सकता हूं?
संपादित करें:
मैं कुछ कण प्रणाली है और उनमें से प्रत्येक कण के एक नंबर के होते हैं: मैं स्पष्ट कुछ चीजें बनाने के लिए प्रयास करें। प्रत्येक कण केवल उन अन्य कणों के साथ बातचीत करनी चाहिए जो स्वयं के समान सिस्टम में हैं। इसलिए मेरे पास कण प्रणालियों का वेक्टर होता है जिसमें प्रत्येक कण sytem कण वस्तुओं के वेक्टर होते हैं। (यह 2 डी वेक्टर बनाता है)। पहला आयाम (i) प्रणाली है, दूसरा (जे) व्यक्तिगत कण। सिस्टम में कण एक दूसरे के साथ बातचीत करते हैं (टक्कर, टालना, जो भी ..) और उनकी स्थिति बदल जाती है। और वेक्टर "अद्यतन" हो जाता है। (यानी, संदर्भ काम करता है)।
हालांकि, मेरे पास वसंत बलों का दूसरा (1 डी) वेक्टर है। वसंत बल भी कणों की स्थिति को अद्यतन करने के लिए प्रयोग किया जाता है। मेरे निर्माता निम्नलिखित है:
Spring::Spring(Particle& _a, Particle& _b) {
a=&_a;
b=&_b; }
एक साथ
और ख कण जा रहा है *। इसलिए मैं 2 डी वेक्टर में पॉइंटर्स को दो कणों में स्टोर करता हूं। एक और समारोह Spring.doSpring() कणों की स्थिति में परिवर्तन करता है।
a->pos.x=300;
या
a->velocity+=something..
पहला उदाहरण मैं पोस्ट मैं केवल एक कण प्रणाली का इस्तेमाल किया है और इसलिए एक 2d सदिश की कोई जरूरत नहीं थी। और सब कुछ ठीक काम करता है। वेक्टर में कण अद्यतन हो जाता है। लेकिन दूसरे उदाहरण के साथ मेरा प्रोग्राम चलता है लेकिन किसी भी तरह से कोई फर्क नहीं पड़ता कि डूस्पिंग फ़ंक्शन क्या करता है, 2 डी वेक्टर में कण अद्यतन नहीं होते हैं।
आप "myParticles" कैसे घोषित कर रहे हैं? – coelhudo
हे, http://www.drdobbs.com/cpp/184401863 से एक टिप: "नामकरण को ओवरलैस्लेट न करें, लेकिन एक सतत नामकरण सम्मेलन का उपयोग करें: केवल दो आवश्यक हैं: ए) कभी भी" अंडरहाइड नामों का उपयोग न करें , "वे जो अंडरस्कोर से शुरू होते हैं या जिनमें डबल अंडरस्कोर होता है;" हर्ब सटर और आंद्रेई अलेक्जेंड्रेस्कू के शब्द – coelhudo