टी एल; डॉ; आपकी समस्या दूरस्थ कार्य करने में नहीं है। आपकी समस्या कई बार दूरी कार्य कर रही है। दूसरे शब्दों में आपको गणितीय के बजाय एक एल्गोरिथम अनुकूलन की आवश्यकता है।
[संपादित करें] मैं अपने उत्तर के पहले खंड को हटा रहा हूं, क्योंकि लोग इससे नफरत कर रहे हैं। प्रश्न शीर्षक संपादन से पहले वैकल्पिक दूरी के कार्यों के लिए पूछ रहा था।
आप एक दूरी फ़ंक्शन का उपयोग कर रहे हैं जहां आप हर समय वर्गमूल की गणना कर रहे हैं। फिर भी, आप बस वर्गमूल का उपयोग किए बिना इसे प्रतिस्थापित कर सकते हैं और इसके बजाय दूरी की गणना कर सकते हैं। यह आपको बहुत सारे कीमती चक्रों को बचाएगा।
दूरी ^ 2 = x * x + y * y;
यह वास्तव में एक आम चाल है। लेकिन आपको अपने हिसाब से तालमेल बिठाने की जरूरत है। वास्तविक दूरी की गणना करने से पहले इसे प्रारंभिक जांच के रूप में भी इस्तेमाल किया जा सकता है।
इसलिए उदाहरण के लिए एक चौराहे के परीक्षण के लिए दो बिंदुओं / क्षेत्रों के बीच वास्तविक दूरी की गणना करने के बजाय हम दूरी वर्ग की गणना कर सकते हैं और त्रिज्या के बजाय त्रिज्या वर्ग की तुलना कर सकते हैं।
@ Byte56 के बाद, संपादित करें, यह इंगित किया कि मैंने प्रश्न नहीं पढ़ा था, और आपको चुकता दूरी अनुकूलन के बारे में पता था।
आपके मामले में, दुर्भाग्य से हम कंप्यूटर ग्राफिक्स में लगभग विशेष रूप से यूक्लिडियन स्पेस के साथ काम कर रहे हैं , और दूरी को यूक्लिडियन स्पेस में बिल्कुल परिभाषित किया Sqrt of Vector dot itself
गया है।
दूरी चुकता वह सबसे अच्छा सन्निकटन है जिसे आप प्राप्त करने जा रहे हैं (प्रदर्शन के मामले में), मैं 2 गुणा, एक जोड़, और एक असाइनमेंट धड़कता हुआ कुछ भी नहीं देख सकता।
तो आप कहते हैं कि मैं दूरी समारोह का अनुकूलन नहीं कर सकता हूं मुझे क्या करना चाहिए?
आपकी समस्या दूरस्थ कार्य करने में नहीं है। आपकी समस्या कई बार दूरी कार्य कर रही है। दूसरे शब्दों में आपको गणितीय के बजाय एक एल्गोरिथम अनुकूलन की आवश्यकता है।
मुद्दा यह है कि दृश्य में प्रत्येक वस्तु के साथ खिलाड़ी चौराहे की जांच करने के बजाय, प्रत्येक फ्रेम। आप आसानी से अपने लाभ के लिए स्थानिक सुसंगतता का उपयोग कर सकते हैं, और केवल उन वस्तुओं की जांच कर सकते हैं जो खिलाड़ी के पास हैं (जो हिट / इंटरसेक्ट होने की सबसे अधिक संभावना है)।
यह आसानी से एक स्थानिक विभाजन डेटा संरचना में उन स्थानिक जानकारी को संग्रहीत करके आसानी से किया जा सकता है । एक साधारण खेल के लिए मैं एक ग्रिड का सुझाव दूंगा क्योंकि यह मूल रूप से लागू करना आसान है और गतिशील दृश्य को अच्छी तरह से फिट बैठता है।
प्रत्येक सेल / बॉक्स में ऑब्जेक्ट की एक सूची होती है जो ग्रिड के बाउंडिंग बॉक्स को संलग्न करती है। और उन कोशिकाओं में खिलाड़ी की स्थिति को ट्रैक करना आसान है। और दूरी की गणना के लिए, आप केवल दृश्य में सब कुछ के बजाय एक ही या पड़ोसी कोशिकाओं के अंदर उन वस्तुओं के साथ खिलाड़ी की दूरी की जांच करते हैं।
एक अधिक जटिल दृष्टिकोण बीएसपी या ऑक्ट्रेसेस का उपयोग करना है।