HeadlinesBriefing HeadlinesBriefing.com

earstrip: मानचित्रों के लिए तेज़ बहुभुज त्रिभुजन

Hacker News •
×

हमने earstrip जारी किया है, जो हमारे मानचित्र इंजन का बहुभुज त्रिभुजक है, और इसे ISC लाइसेंस के तहत एक छोटी ओपन-सोर्स लाइब्रेरी के रूप में प्रकाशित किया गया है, वही लाइसेंस जो earcut में इस्तेमाल होता है। इसमें एक एकल C++ हेडर और एक WebAssembly बिल्ड है जो npm पर प्रकाशित है और earcut के समान तर्क स्वीकार करता है। C++ में यह earcut.hpp से 14% तेज़ चलता है, और ब्राउज़र में यह earcut.js से 1.4 से 2.1 गुना तेज़ चलता है।

GPU केवल त्रिभुजों को भर सकता है, जबकि मानचित्र ज़्यादातर बहुभुजों से बना होता है: इमारतें, पार्क, पार्किंग स्थल, और ट्राम की पटरियों के बीच घास की पट्टियाँ। किसी भी बहुभुज को भरने से पहले, उसकी रूपरेखा को त्रिभुजों में काटना पड़ता है। वारसॉ के आसपास के क्षेत्र, मासोवियन वोइवोडशिप, के हमारे ऑफ़लाइन मानचित्र में ज़ूम स्तर 13 पर 3,740,425 बहुभुज हैं। M4 Pro के एक कोर पर, हमारे इंजन के बाधित डेलॉनी त्रिभुजक को उन सभी को संसाधित करने में 2.93 सेकंड लगे।

इस अक्टूबर में हमने इसे कर्ण-कटाई (ear clipping) से बदल दिया। डेलॉनी त्रिभुजन पतले त्रिभुजों से बचता है और इंटरपोलेशन तथा सिमुलेशन के लिए उपयोगी है, लेकिन एक समतल भराव को उस गुणवत्ता की ज़रूरत नहीं होती, और अधिकांश काम सरल आकृतियों पर खर्च हो रहा था। मासोवियन के लगभग आधे बहुभुज, 18 लाख, में चार या उससे कम शीर्ष हैं, फिर भी डेलॉनी कोड ने उनके त्रिभुजन शुरू से बनाने में 419 ms खर्च किए। कर्ण-कटाई एक समय में एक कोना हटाती है, और तीन से अधिक शीर्षों वाले हर सरल बहुभुज में कम से कम दो गैर-अतिव्यापी कर्ण होते हैं, इसलिए हमेशा एक और कटाव करने के लिए होता है।

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

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित