कठोर शरीर सिमुलेशन में उपयोग के लिए, मैं द्रव्यमान और जड़त्व टेंसर (जड़ता का क्षण) की गणना करना चाहता हूं, एक त्रिभुज जाल को (आवश्यक रूप से उत्तल) वस्तु की सीमा का प्रतिनिधित्व करने और इंटीरियर में निरंतर घनत्व मानने के लिए।मैं पॉलीहेड्रॉन की जड़ता के द्रव्यमान और पल की गणना कैसे कर सकता हूं?
उत्तर
मानते हैं कि आपके trimesh बंद (चाहे उत्तल या नहीं) एक रास्ता है!
जैसा कि डीएमकी अंक बताता है, सामान्य दृष्टिकोण प्रत्येक सतह त्रिभुज से टेट्राहेड्रॉन का निर्माण कर रहा है, फिर प्रत्येक टेट से द्रव्यमान और क्षण के योगदान को पूरा करने के लिए स्पष्ट गणित को लागू कर रहा है। यह चाल तब आती है जब शरीर की सतह में अव्यवस्था होती है जो आपके संदर्भ बिंदु से देखे जाने पर आंतरिक जेब बनाती है।
तो, शुरू करने के लिए, कुछ संदर्भ बिंदु चुनें (मॉडल निर्देशांक में मूल ठीक काम करेगा), इसे शरीर के अंदर भी होने की आवश्यकता नहीं है। प्रत्येक त्रिभुज के लिए, उस त्रिभुज के तीन बिंदुओं को संदर्भ बिंदु पर टेट्राहेड्रॉन बनाने के लिए कनेक्ट करें। यहां चाल है: त्रिभुज की सामान्य सतह का उपयोग यह पता लगाने के लिए करें कि त्रिभुज संदर्भ बिंदु से या उससे दूर का सामना कर रहा है (जिसे आप सामान्य के डॉट उत्पाद के संकेत को देखकर और केंद्र पर इंगित एक वेक्टर देखकर पा सकते हैं त्रिकोण का)। यदि त्रिभुज संदर्भ बिंदु से दूर हो रहा है, तो सामान्य रूप से इसके द्रव्यमान और पल का इलाज करें, लेकिन यदि यह संदर्भ बिंदु की ओर मुकाबला कर रहा है (यह बताता है कि संदर्भ बिंदु और ठोस शरीर के बीच खुली जगह है), तो उस टेट के लिए अपने परिणामों को नकारें ।
प्रभावी रूप से यह वॉल्यूम के अधिकतर हिस्सों का आकलन करता है और फिर उन क्षेत्रों को ठोस निकाय का हिस्सा नहीं दिखाया जाता है। अगर किसी शरीर में बहुत सारे ब्लब्बेरी फ्लैंज और अजीब फोल्ड होते हैं (उस छवि को मिला?), मात्रा का एक विशेष टुकड़ा एक भारी कारक से अधिक गिना जा सकता है, लेकिन अगर आपका जाल है तो इसे रद्द करने के लिए पर्याप्त समय निकाल दिया जाएगा बन्द है। इस तरह से काम करना आप अपनी वस्तुओं में अंतरिक्ष के आंतरिक बुलबुले को भी संभाल सकते हैं (माना जाता है कि मानक सही ढंग से सेट हैं)। उस पर, प्रत्येक त्रिभुज को स्वतंत्र रूप से संभाला जा सकता है ताकि आप इच्छानुसार समानांतर हो सकें। का आनंद लें!
बाद विचार: आपको आश्चर्य हो सकता है कि क्या होता है जब उस डॉट उत्पाद आपको शून्य पर या उसके पास एक मान देता है। यह तब होता है जब त्रिकोण चेहरा समानांतर होता है (इसका सामान्य लंबवत होता है) संदर्भ बिंदु की दिशा करता है - जो केवल छोटे या शून्य क्षेत्र के साथ अपमानजनक टेट्स के लिए होता है। ऐसा कहने के लिए, टेट के योगदान को जोड़ने या घटाने का निर्णय केवल संदिग्ध है जब टेट किसी भी तरह का योगदान नहीं दे रहा था।
मैं vtkMassProperties. पर एक नज़र डालना चाहता हूं यह वॉल्यूम संलग्न करने वाली सतह को देखते हुए यह कंप्यूटिंग करने के लिए एक काफी मजबूत एल्गोरिदम है।
चयनित ऑब्जेक्ट बिंदु के आस-पास tetrahedrons के सेट में अपनी ऑब्जेक्ट को विघटित करें। (यह प्रत्येक त्रिकोणीय चेहरा तत्व और चुने हुए केंद्र का उपयोग करके ठोस है।)
आपको प्रत्येक तत्व की मात्रा को देखने में सक्षम होना चाहिए। moment of inertia भी उपलब्ध होना चाहिए।
यदि सतह गैर-उत्तल है तो यह और अधिक परेशानी हो जाती है।
मैं याद आती है याद नामकरण और तिरछा द्वारा विशेषण मैं चाहता था नहीं है लगता है। मेरा मतलब गैर-नियमित है।
यदि ऑब्जेक्ट उत्तल नहीं है (और कभी-कभी यह भी होता है), टेट्स में टेस्सेलेशन सीधे द्रव्यमान की गणना करने से कहीं अधिक जटिल है। –
@ रीड कॉपसी: मैं इसके लिए अपना शब्द ले जाऊंगा। मैंने जो समाधान दिया है वह निश्चित रूप से बेवकूफ है। – dmckee
यदि आपका पॉलीड्रॉन जटिल है, तो मोंटे कार्लो एकीकरण का उपयोग करने पर विचार करें, जिसका प्रयोग अक्सर बहुआयामी इंटीग्रल के लिए किया जाता है।आपको एक संलग्न हाइपरक्यूब की आवश्यकता होगी, और आपको यह जांचने में सक्षम होना चाहिए कि क्या दिया गया बिंदु पॉलीहेड्रॉन के अंदर या बाहर है या नहीं। और आपको धीरज रखने की आवश्यकता होगी, क्योंकि मोंटे कार्लो एकीकरण धीमा है।
विकिपीडिया पर सामान्य रूप से प्रारंभ करें, और फिर आगे पढ़ने के लिए बाहरी लिंक पृष्ठों का पालन करें।
(मोंटे कार्लो एकीकरण के साथ अपरिचित उन लोगों के लिए, यहाँ एक जन गणना करने के लिए कैसे। युक्त hypercube में एक बिंदु उठाओ। point_total
काउंटर में जोड़े। बहुतल में यह है? यदि हाँ, point_internal
काउंटर में जोड़ें। क्या इस बहुत जड़ता की एक पल के लिए (देखें अभिसरण और त्रुटि के लिए बाध्य अनुमान है।) फिर
mass_polyhedron/mass_hypercube \approx points_internal/points_total
।
, आप संदर्भ अक्ष के बिंदु की दूरी के वर्ग से प्रत्येक गिनती वजन।
मुश्किल हिस्सा यह जांच रहा है कि कोई बिंदु अंदर है या नहीं या अपने पॉलीहेड्रॉन के बाहर। मुझे यकीन है कि इसके लिए कम्प्यूटेशनल ज्यामिति एल्गोरिदम हैं।
यह डी। एबरली द्वारा "गेम फिजिक्स, द्वितीय संस्करण" पुस्तक में शामिल है। chapter 2.5.5 और नमूना कोड ऑनलाइन उपलब्ध है। (बस इसे पाया, अभी तक इसे आजमाया नहीं है।)
यह भी ध्यान रखें कि पॉलीहेड्रॉन को सूत्रों के काम के लिए उत्तल होने की आवश्यकता नहीं है, यह सिर्फ simple होना चाहिए।
- 1. जब पॉलीहेड्रॉन दिया जाता है तो पॉलीहेड्रॉन के केंद्र और मात्रा की गणना
- 2. एक बहु-आकार कठोर शरीर के लिए जड़ता की गणना
- 3. मैं कार्टेशियन उत्पाद की गणना कैसे कर सकता हूं?
- 4. क्या मैं जीपीयू में मानक की गणना कर सकता हूं?
- 5. मैं जावा में दो जीपीएस अंकों के बीच की दूरी की गणना कैसे कर सकता हूं?
- 6. मैं एक emacs तालिका में नींद की अवधि की गणना कैसे कर सकता हूं?
- 7. मैं किसी अन्य उपयोगकर्ता सत्र की खुली विंडो (~ EnumWindows) की गणना कैसे कर सकता हूं
- 8. मैं किसी दिए गए दिनांक की सप्ताह-संख्या की गणना कैसे/कर सकता हूं?
- 9. मैं रन टाइम पर स्क्रीन ऊंचाई और चौड़ाई की गणना कैसे कर सकता हूं?
- 10. मैकमैपव्यू में दो बिंदुओं के बीच की दूरी की गणना कैसे कर सकता हूं?
- 11. पर्ल में दो तिथियों के बीच की संख्या की गणना कैसे कर सकता हूं?
- 12. मैं पाइब्रेन में तंत्रिका नेटवर्क के प्रशिक्षण की गणना या निगरानी कैसे कर सकता हूं?
- 13. मैं आर में एक समोच्च के भीतर क्षेत्र की गणना कैसे कर सकता हूं?
- 14. मैं दो तारों के बीच एक अंतर की गणना कैसे कर सकता हूं?
- 15. MySQL का उपयोग करके मैं शीर्ष% दैनिक मूल्य परिवर्तनों की गणना कैसे कर सकता हूं?
- 16. मैं डेटाबेस डिज़ाइन संग्रहण लागत की गणना कैसे कर सकता हूं?
- 17. मैं अजगर में एडब्ल्यूएस एपीआई हस्ताक्षर (v4) की गणना कैसे कर सकता हूं?
- 18. पायथन में, मैं डेटा के दो सरणी के बीच सहसंबंध और सांख्यिकीय महत्व की गणना कैसे कर सकता हूं?
- 19. मैं तारों की सरणी कैसे ले सकता हूं और उन्हें फ़िल्टर कर सकता हूं?
- 20. क्या मैं इन संख्याओं के औसत की गणना कर सकता हूं?
- 21. मैं अप्रयुक्त i18n कुंजी की पहचान कैसे कर सकता हूं?
- 22. मैं धीरे-धीरे HTTP की सेवा कैसे कर सकता हूं?
- 23. मैं बटन की पृष्ठभूमि को कैसे स्केल कर सकता हूं?
- 24. मैं सदस्यInfo उदाहरण की पहुंच कैसे निर्धारित कर सकता हूं?
- 25. मैं पर्ल में सरणी की तुलना कैसे कर सकता हूं?
- 26. मैं ओरेकल पासवर्ड की समाप्ति कैसे बंद कर सकता हूं?
- 27. मैं आईओएस पर चेहरे की पहचान कैसे कर सकता हूं?
- 28. मैं दो तिथियों के आधार पर कितने वर्षों की गणना कर सकता हूं?
- 29. मैं यूआरएल की यात्रा कैसे अनुकरण कर सकता हूं?
- 30. मैं प्रोग्राम की स्थिति कैसे प्राप्त कर सकता हूं?
अच्छा। मुझे यह देखना चाहिए था। यह सीखने के लिए पुरानी "क्रॉसिंग गिनती" दृष्टिकोण का विस्तार है यदि कोई बिंदु एक आकार के आंतरिक या बाहरी है। – dmckee