यहां एक पोस्ट है जिसमें समान प्रकार के सिमुलेशन के बारे में कागजात के लिंक हैं (इंजीनियरिंग / अकादमिक संदर्भों में खेलों के बजाय): https://gamedev.stackexchange.com/a/10350/6398
मैंने इस तरह के "तार" सिमुलेशन के लिए टक्कर का पता लगाने + प्रतिक्रिया के लिए कम से कम दो अलग-अलग तरीकों की कोशिश की है (जैसा कि खेल उमीहारा कव्वा में देखा गया है); कम से कम, मुझे लगता है कि यह वही है जो आप के बाद है - इस तरह के सिमुलेशन के लिए एक विशिष्ट शब्द नहीं लगता है, मैं बस इसे "रस्सी" के बजाय "तार" कहता हूं क्योंकि यह ज्यादातर लोगों की तरह लगता है "रस्सी" को "कणों की एक श्रृंखला" का पर्याय माना जाता है। और, यदि आप निंजा रस्सी (यानी इसे धक्का और खींच सकते हैं) का छड़ी-ईश व्यवहार चाहते हैं, तो यह रस्सी की तरह एक कठोर तार की तरह है। वैसे भी ..
पाकुजा का जवाब अच्छा है, आप उस समय के लिए हल करके निरंतर टकराव का पता लगा सकते हैं जब तीन बिंदुओं पर हस्ताक्षर किए गए क्षेत्र 0 है।
(मैं पूरी तरह से OTOH को याद नहीं कर सकता, लेकिन आप इसे इस प्रकार देख सकते हैं: वह समय t खोजें जब बिंदु a, b, c से होकर गुजरने वाली रेखा में समाहित हो, (मुझे लगता है कि मैंने यह तब के लिए हल करके किया है जब dot (ab, cb) = टी के मूल्यों को खोजने के लिए 0), और फिर एक मान्य समय दिया गया 0 <= t <1, खंड बीसी पर पैरामीट्रिक स्थिति का पता लगाएं, यानी एक = (1-एस) बी + सी और यदि एक के बीच है b और c (अर्थात यदि ० <= s = १) यह एक वैध टक्कर है।
AFAICR आप इसे दूसरे तरीके से भी देख सकते हैं (यानी एस के लिए हल करें और फिर इसे टी खोजने के लिए प्लग करें) लेकिन यह बहुत अधिक सहज है। (मुझे खेद है अगर इसका कोई मतलब नहीं है, मेरे पास अपने नोट्स खोदने का समय नहीं है और यह कुछ साल रहा है!)
तो, अब आप उन सभी समयों की गणना कर सकते हैं, जिन पर घटनाएं होती हैं (यानी रस्सी के नोड्स को डाला या हटाया जाना चाहिए); जल्द से जल्द घटना की प्रक्रिया करें (एक नोड को सम्मिलित करें या निकालें) और फिर दोहराएं / तब तक दोहराएं जब तक कि टी = 0 और टी = 1 के बीच कोई और घटना न हो।
इस दृष्टिकोण के बारे में एक चेतावनी: यदि वे वस्तुएँ जो रस्सी के चारों ओर लपेट सकती हैं, वे गतिशील हैं (विशेषकर यदि आप उनका अनुकरण कर रहे हैं और रस्सी पर उनका प्रभाव, और इसके विपरीत) तो समस्याएँ हो सकती हैं यदि उन वस्तुओं को क्लिप / प्रत्येक के माध्यम से गुजरता है अन्य - तार पेचीदा हो सकते हैं। और यह निश्चित रूप से एक बॉक्स 2 डी-शैली भौतिकी सिमुलेशन में इस तरह की बातचीत / आंदोलन (एक दूसरे के माध्यम से फिसलने वाली वस्तुओं के कोनों) को रोकने के लिए चुनौतीपूर्ण होगा .. वस्तुओं के बीच पैठ की छोटी मात्रा उस संदर्भ में सामान्य व्यवहार है।
(कम से कम .. यह "तार" के मेरे कार्यान्वयन में से एक के साथ एक समस्या थी।)
एक अलग समाधान, जो बहुत अधिक स्थिर है, लेकिन जो कुछ परिस्थितियों में कुछ टकरावों को याद करता है, बस स्थैतिक परीक्षणों का उपयोग करना है (यानी समय के अनुसार ऑर्डर करने के बारे में चिंता न करें, टकराव के रूप में प्रत्येक खंड को पुन: उपविभाजित करें जैसा कि आप उन्हें ढूंढते हैं), जो हो सकता है बहुत अधिक मजबूत - तार कोनों पर नहीं उलझेंगे और कम मात्रा में प्रवेश ठीक होगा।
मुझे लगता है कि पेकुजा का दृष्टिकोण इसके लिए भी काम करता है, हालांकि वैकल्पिक दृष्टिकोण हैं। एक दृष्टिकोण जो मैंने प्रयोग किया है वह है सहायक टक्कर डेटा जोड़ना: दुनिया के प्रत्येक उत्तल शीर्ष पर v (अर्थात आकृतियों के कोने जो रस्सी को चारों ओर लपेट सकते हैं), एक बिंदु u जोड़कर निर्देशित रेखा खंड uv बनाते हैं, जहाँ u कुछ होता है बिंदु "कोने के अंदर" (यानी दुनिया के अंदर, "पीछे" v; यू की गणना करने के लिए आप अपने इंटरपोल किए गए सामान्य के साथ v से किरण की आवक डाल सकते हैं और v के बाद कुछ दूरी रोक सकते हैं या इससे पहले कि किरण दुनिया के एक किनारे के साथ और पीछे हो जाए) ठोस क्षेत्र से बाहर निकलता है। या, आप बस विज़ुअल टूल / लेवल एडिटर का उपयोग करके दुनिया में सेगमेंट को मैन्युअल रूप से पेंट कर सकते हैं)।
वैसे भी, अब आपके पास "कॉर्नर लिनिग्स" का एक सेट है; प्रत्येक यूवी के लिए, और तार में प्रत्येक खंड ab, और uv intersect (यानी स्टेटिक, बूलियन लेनिगस-लेनिंज चौराहा क्वेरी) की जाँच करें; यदि हां, तो पुनरावृत्ति (एवी और वीबी में लिनिग एब को विभाजित करें, अर्थात वी डालें), रिकॉर्डिंग करें कि रस्सी किस दिशा में v पर झुकती है। फिर पड़ोसी लिनिग्स एब के प्रत्येक जोड़े के लिए, तार में बीसी, परीक्षण करें यदि बी पर वर्तमान मोड़ दिशा। जब बी उत्पन्न हुआ था (इन सभी "मोड़ दिशा" परीक्षण सिर्फ हस्ताक्षरित-क्षेत्र परीक्षण हैं) के समान है; यदि नहीं, तो दो सेगमेंट को ac में मर्ज करें (यानी b निकालें)।
या शायद मैं विलीन हो गया और फिर विभाजित हो गया, मैं भूल गया - लेकिन यह निश्चित रूप से कम से कम दो संभावित आदेशों में से एक में काम करता है! :)
वर्तमान फ्रेम के लिए गणना किए गए सभी वायर खंडों को देखते हुए, आप फिर दो वायर एंडपॉइंट के बीच एक दूरी की बाधा का अनुकरण कर सकते हैं (और आप आंतरिक बिंदुओं को भी शामिल कर सकते हैं, अर्थात तार और दुनिया के बीच संपर्क बिंदु, लेकिन यह थोड़ा अधिक शामिल है )।
वैसे भी, उम्मीद है कि यह कुछ काम का होगा ... मैंने जिस पोस्ट को लिंक किया है उसमें कागजात भी आपको कुछ विचार देने चाहिए।