2009-05-01 19 views
5

कठोर शरीर सिमुलेशन में उपयोग के लिए, मैं द्रव्यमान और जड़त्व टेंसर (जड़ता का क्षण) की गणना करना चाहता हूं, एक त्रिभुज जाल को (आवश्यक रूप से उत्तल) वस्तु की सीमा का प्रतिनिधित्व करने और इंटीरियर में निरंतर घनत्व मानने के लिए।मैं पॉलीहेड्रॉन की जड़ता के द्रव्यमान और पल की गणना कैसे कर सकता हूं?

उत्तर

9

मानते हैं कि आपके trimesh बंद (चाहे उत्तल या नहीं) एक रास्ता है!

जैसा कि डीएमकी अंक बताता है, सामान्य दृष्टिकोण प्रत्येक सतह त्रिभुज से टेट्राहेड्रॉन का निर्माण कर रहा है, फिर प्रत्येक टेट से द्रव्यमान और क्षण के योगदान को पूरा करने के लिए स्पष्ट गणित को लागू कर रहा है। यह चाल तब आती है जब शरीर की सतह में अव्यवस्था होती है जो आपके संदर्भ बिंदु से देखे जाने पर आंतरिक जेब बनाती है।

तो, शुरू करने के लिए, कुछ संदर्भ बिंदु चुनें (मॉडल निर्देशांक में मूल ठीक काम करेगा), इसे शरीर के अंदर भी होने की आवश्यकता नहीं है। प्रत्येक त्रिभुज के लिए, उस त्रिभुज के तीन बिंदुओं को संदर्भ बिंदु पर टेट्राहेड्रॉन बनाने के लिए कनेक्ट करें। यहां चाल है: त्रिभुज की सामान्य सतह का उपयोग यह पता लगाने के लिए करें कि त्रिभुज संदर्भ बिंदु से या उससे दूर का सामना कर रहा है (जिसे आप सामान्य के डॉट उत्पाद के संकेत को देखकर और केंद्र पर इंगित एक वेक्टर देखकर पा सकते हैं त्रिकोण का)। यदि त्रिभुज संदर्भ बिंदु से दूर हो रहा है, तो सामान्य रूप से इसके द्रव्यमान और पल का इलाज करें, लेकिन यदि यह संदर्भ बिंदु की ओर मुकाबला कर रहा है (यह बताता है कि संदर्भ बिंदु और ठोस शरीर के बीच खुली जगह है), तो उस टेट के लिए अपने परिणामों को नकारें ।

प्रभावी रूप से यह वॉल्यूम के अधिकतर हिस्सों का आकलन करता है और फिर उन क्षेत्रों को ठोस निकाय का हिस्सा नहीं दिखाया जाता है। अगर किसी शरीर में बहुत सारे ब्लब्बेरी फ्लैंज और अजीब फोल्ड होते हैं (उस छवि को मिला?), मात्रा का एक विशेष टुकड़ा एक भारी कारक से अधिक गिना जा सकता है, लेकिन अगर आपका जाल है तो इसे रद्द करने के लिए पर्याप्त समय निकाल दिया जाएगा बन्द है। इस तरह से काम करना आप अपनी वस्तुओं में अंतरिक्ष के आंतरिक बुलबुले को भी संभाल सकते हैं (माना जाता है कि मानक सही ढंग से सेट हैं)। उस पर, प्रत्येक त्रिभुज को स्वतंत्र रूप से संभाला जा सकता है ताकि आप इच्छानुसार समानांतर हो सकें। का आनंद लें!

बाद विचार: आपको आश्चर्य हो सकता है कि क्या होता है जब उस डॉट उत्पाद आपको शून्य पर या उसके पास एक मान देता है। यह तब होता है जब त्रिकोण चेहरा समानांतर होता है (इसका सामान्य लंबवत होता है) संदर्भ बिंदु की दिशा करता है - जो केवल छोटे या शून्य क्षेत्र के साथ अपमानजनक टेट्स के लिए होता है। ऐसा कहने के लिए, टेट के योगदान को जोड़ने या घटाने का निर्णय केवल संदिग्ध है जब टेट किसी भी तरह का योगदान नहीं दे रहा था।

+2

अच्छा। मुझे यह देखना चाहिए था। यह सीखने के लिए पुरानी "क्रॉसिंग गिनती" दृष्टिकोण का विस्तार है यदि कोई बिंदु एक आकार के आंतरिक या बाहरी है। – dmckee

1

मैं vtkMassProperties. पर एक नज़र डालना चाहता हूं यह वॉल्यूम संलग्न करने वाली सतह को देखते हुए यह कंप्यूटिंग करने के लिए एक काफी मजबूत एल्गोरिदम है।

1

चयनित ऑब्जेक्ट बिंदु के आस-पास tetrahedrons के सेट में अपनी ऑब्जेक्ट को विघटित करें। (यह प्रत्येक त्रिकोणीय चेहरा तत्व और चुने हुए केंद्र का उपयोग करके ठोस है।)

आपको प्रत्येक तत्व की मात्रा को देखने में सक्षम होना चाहिए। moment of inertia भी उपलब्ध होना चाहिए।

यदि सतह गैर-उत्तल है तो यह और अधिक परेशानी हो जाती है।


मैं याद आती है याद नामकरण और तिरछा द्वारा विशेषण मैं चाहता था नहीं है लगता है। मेरा मतलब गैर-नियमित है।

+0

यदि ऑब्जेक्ट उत्तल नहीं है (और कभी-कभी यह भी होता है), टेट्स में टेस्सेलेशन सीधे द्रव्यमान की गणना करने से कहीं अधिक जटिल है। –

+0

@ रीड कॉपसी: मैं इसके लिए अपना शब्द ले जाऊंगा। मैंने जो समाधान दिया है वह निश्चित रूप से बेवकूफ है। – dmckee

1

यदि आपका पॉलीड्रॉन जटिल है, तो मोंटे कार्लो एकीकरण का उपयोग करने पर विचार करें, जिसका प्रयोग अक्सर बहुआयामी इंटीग्रल के लिए किया जाता है।आपको एक संलग्न हाइपरक्यूब की आवश्यकता होगी, और आपको यह जांचने में सक्षम होना चाहिए कि क्या दिया गया बिंदु पॉलीहेड्रॉन के अंदर या बाहर है या नहीं। और आपको धीरज रखने की आवश्यकता होगी, क्योंकि मोंटे कार्लो एकीकरण धीमा है।

विकिपीडिया पर सामान्य रूप से प्रारंभ करें, और फिर आगे पढ़ने के लिए बाहरी लिंक पृष्ठों का पालन करें।

(मोंटे कार्लो एकीकरण के साथ अपरिचित उन लोगों के लिए, यहाँ एक जन गणना करने के लिए कैसे। युक्त hypercube में एक बिंदु उठाओ। point_total काउंटर में जोड़े। बहुतल में यह है? यदि हाँ, point_internal काउंटर में जोड़ें। क्या इस बहुत जड़ता की एक पल के लिए (देखें अभिसरण और त्रुटि के लिए बाध्य अनुमान है।) फिर

mass_polyhedron/mass_hypercube \approx points_internal/points_total

, आप संदर्भ अक्ष के बिंदु की दूरी के वर्ग से प्रत्येक गिनती वजन।

मुश्किल हिस्सा यह जांच रहा है कि कोई बिंदु अंदर है या नहीं या अपने पॉलीहेड्रॉन के बाहर। मुझे यकीन है कि इसके लिए कम्प्यूटेशनल ज्यामिति एल्गोरिदम हैं।

1

यह डी। एबरली द्वारा "गेम फिजिक्स, द्वितीय संस्करण" पुस्तक में शामिल है। chapter 2.5.5 और नमूना कोड ऑनलाइन उपलब्ध है। (बस इसे पाया, अभी तक इसे आजमाया नहीं है।)

यह भी ध्यान रखें कि पॉलीहेड्रॉन को सूत्रों के काम के लिए उत्तल होने की आवश्यकता नहीं है, यह सिर्फ simple होना चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे