चलती गोले के बीच टकराव का पता लगाने के लिए एक अच्छा एल्गोरिथ्म क्या है?


27

यदि (टक्कर का पता लगाने के उद्देश्य से) 3 डी ऑब्जेक्ट्स को एक गेम में गोले द्वारा दर्शाया जाता है, तो गोले के बीच टकराव का पता लगाने के लिए एक अच्छा एल्गोरिथ्म क्या है?

यदि प्रत्येक ऑब्जेक्ट में अंतिम फ्रेम और एक नई (वांछित) स्थिति के रूप में एक स्थिति है, तो एक अच्छा एल्गोरिथ्म क्या है जो उन टकरावों की पहचान करेगा, जहां गोलाकार पिछले फ्रेम में प्रतिच्छेद नहीं करते थे, और वे दूसरे फ्रेम में प्रतिच्छेद नहीं कर सकते हैं, लेकिन वे बीच में कहीं अंतरंग हो गए?

जवाबों:


18

मूल रूप से आप एक ट्रेस के लिए देख रहे हैं।

यह पृष्ठ संभवतः आपकी सहायता करेगा: http://www.realtimerendering.com/intersections.html

गतिमान क्षेत्र / क्षेत्र: (स्थान) स्थैतिक क्षेत्र में चलती क्षेत्र की त्रिज्या जोड़ें, और चलती क्षेत्र को किरण के रूप में मानें। इस किरण का प्रयोग किरण / गोलाकार चौराहा करने के लिए करें। गोमेज़ देखें; कोड के लिए श्रोएडर (लेख में व्युत्पत्ति में बग है, कोड ठीक है); और आरटीआर 2, पी। 622।


1
यह काम नहीं करता है यदि दोनों क्षेत्र चलते हैं, (भले ही आप इसे दो बार करते हों)। मुझे लगता है कि आपको पहले आंदोलन और एक फैले हुए आंदोलन बी के बीच की लाइनों के बीच एक दूरी की जांच करनी होगी, और अगर वह त्रिज्या से कम है तो त्रिज्या बी आपके पास एक संभावित टक्कर है। उसके बाद मैं यह देखने के लिए एक जाँच करूँगा कि वह बिंदु समय के लिए कहाँ है और जहाँ क्षेत्र b के लिए यह देखने के लिए कि समय करीब है। यदि ऐसा है तो मैं उस बिंदु के लिए दूरी के खिलाफ गति की जांच करूंगा, अगर यह अभी भी संभव टकराव है तो मैं एक कदम सुधार करूंगा।
काज

15
वास्तव में यह होता है, आपको बस आंदोलन को सापेक्ष बनाना होगा। इसलिए यदि दोनों गोले आपको स्थानांतरित कर रहे हैं, तो आप दोनों में से किसी एक गोले के वेग को घटाएं ताकि आपके पास एक "गतिशील" क्षेत्र हो और एक "स्थिर" क्षेत्र। फिर आप उपरोक्त का उपयोग कर सकते हैं।
तेतड़


4

मेरे सर के ऊपर से चला गया:

  1. प्रत्येक सर्कल के मध्य से दो लाइन सेगमेंट बनाएं, जहां से उस समय के चरण में इसे स्थानांतरित करना शुरू किया गया था।
  2. उन दो लाइन खंडों के बीच की न्यूनतम दूरी ज्ञात करें; जैसा कि यहाँ बताया गया है
  3. यदि वह दूरी पहले वृत्त की त्रिज्या से कम या बराबर है, तो दूसरी दूरी पर वे टकरा गए; अन्यथा वे नहीं करते थे।

और यह सब वहाँ है, मुझे लगता है कि बहुत तेजी से होने की उम्मीद होगी।


1

यहाँ एक और अच्छा गमसातुरा लेख है।


1
मुझे लगता है कि यह 7 साल बाद है, लेकिन यह उत्तर केवल लिंक है। सौभाग्य से लिंक अभी भी जीवित है, लेकिन अगर यह नहीं थे, तो आपका उत्तर होगा ... उत्तर नहीं।
ड्रेको 18s 4

0

ऐसा करने वाले के रूप में बोलना: यह परेशानी के लायक नहीं है । जब तक आपके गेम डिज़ाइन को इसकी बिल्कुल ज़रूरत नहीं है, और यह लगभग निश्चित रूप से नहीं करता है, तो आप वास्तव में अपेक्षा से कहीं अधिक व्यापक रूप से काम करने में खर्च करेंगे। और यह धीमी गति से होगा जितना आप चाहते थे।


वह आप सभी के लिए एक पूल गेम बना सकता है।
काज

यदि वह एक पूल गेम बना रहा था तो उसका "गेम डिज़ाइन बिल्कुल इसकी आवश्यकता है"
deft_code

आप सही कह रहे हैं, पहिए को दोबारा मत लगाइए । लेकिन सिर्फ एक्सर्साइज़ के लिए यह इसके लायक हो सकता है।
15:71 बजे user712092

4
मैं उत्तर के रूप में प्रत्यक्ष हतोत्साहित करता हूं ।
बोब्बोबो

मैं @bobobobo से सहमत हूं, सवाल यह नहीं है कि क्या यह परेशानी के लायक है या नहीं, एक भावी उपयोगकर्ता जो इस थ्रेड को देखता है, उसे उत्तर की आवश्यकता हो सकती है, भले ही लागत कोई भी हो। यह एक टिप्पणी के रूप में बेहतर होगा।
टॉमटैगक

0

Flipcode पर गणित के साथ टकराव का पता लगाने के बारे में लेख है । इसका घेरा-सर्ल है। टकराव की स्थिति का ठीक-ठीक पता लगाने और जांच करने का तरीका है कि क्या कोई टक्कर है।


मुझे लगता है कि यह 7 साल बाद है, लेकिन यह उत्तर केवल लिंक है। सौभाग्य से लिंक अभी भी जीवित है, लेकिन अगर यह नहीं थे, तो आपका उत्तर होगा ... उत्तर नहीं।
ड्रेको 18s

0

चलती हुई वस्तु के लिए टकराव का पता लगाने को आमतौर पर "स्वेप्ट वॉल्यूम गणना" कहा जाता है, यहां इस विषय के बारे में कुछ कोड / लेख दिए गए हैं।

http://www.gpu-voxels.org/demos/ (डेमो)

स्रोत कोड लाइब्रेरी:

https://github.com/fzi-forschungszentrum-informatik/gpu-voxels

https://libigl.github.io/tutorial/#swept-volume

https://github.com/gradientspace/geometry3Sharp

आलेख:

http://gamma.cs.unc.edu/SV/sm03.pdf

https://www.cs.columbia.edu/~allen/PAPERS/abrams.swept.pdf (दुर्भाग्य से कोई स्रोत कोड नहीं)

http://www.realtimerendering.com/intersections.html (लिंक के भारी संग्रह)


1
ऐसे उत्तर जिनमें केवल एक लिंक होता है (या इस मामले में, कई) में वास्तविक उत्तर नहीं होता है। आपको अपनी पोस्ट में संबंधित जानकारी शामिल करनी चाहिए ताकि यदि वे लिंक मृत हो जाएं, तो भी आपकी पोस्ट समझ में आएगी।
ड्रेको 18s

लिंक के पीछे की जानकारी फिलहाल मुझसे बेहतर है। लिंक के पीछे डेमो वीडियो भी है, जो वास्तविक समय में क्या हो रहा है, इसके बारे में कुछ धारणा देता है।
TarmoPikaro

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.