আমরা earstrip প্রকাশ করেছি, যা আমাদের মানচিত্র ইঞ্জিনের বহুভুজ ত্রিভুজায়ক, এবং এটি ISC লাইসেন্সের অধীনে একটি ছোট ওপেন-সোর্স লাইব্রেরি হিসেবে প্রকাশ করা হয়েছে, যে একই লাইসেন্স earcut-এ ব্যবহৃত হয়। এটি একটি একক C++ হেডার এবং npm-এ প্রকাশিত একটি WebAssembly বিল্ড নিয়ে গঠিত, যা earcut-এর মতো একই আর্গুমেন্ট গ্রহণ করে। C++-এ এটি earcut.hpp-এর চেয়ে 14% দ্রুত চলে, এবং ব্রাউজারে এটি earcut.js-এর চেয়ে 1.4 থেকে 2.1 গুণ দ্রুত চলে।
GPU শুধু ত্রিভুজ ভরাট করতে পারে, অথচ একটি মানচিত্র বেশিরভাগই বহুভুজ দিয়ে তৈরি: ভবন, পার্ক, পার্কিং লট এবং ট্রামলাইনের মাঝের ঘাসের ফালি। যেকোনো বহুভুজ ভরাট করার আগে তার রূপরেখাকে ত্রিভুজে কাটতে হয়। ওয়ারশ'র আশেপাশের অঞ্চল মাসোভিয়ান ভয়েভোডশিপের আমাদের অফলাইন মানচিত্রে জুম স্তর 13-এ 3,740,425টি বহুভুজ আছে। একটি M4 Pro-এর একটি কোরে, আমাদের ইঞ্জিনের সীমাবদ্ধ ডেলনে ত্রিভুজায়ক সবগুলো প্রক্রিয়া করতে 2.93 সেকেন্ড সময় নিয়েছে।
এই অক্টোবরে আমরা এর জায়গায় কান-ছাঁটাই পদ্ধতি বসিয়েছি। ডেলনে ত্রিভুজায়ন সরু ত্রিভুজ এড়িয়ে চলে এবং ইন্টারপোলেশন ও সিমুলেশনের জন্য কার্যকর, কিন্তু সমতল ভরাটের সেই মান দরকার হয় না, এবং বেশিরভাগ কাজ সাধারণ আকৃতিতে ব্যয় হচ্ছিল। মাসোভিয়ানের প্রায় অর্ধেক বহুভুজ, অর্থাৎ 18 লাখটি, চার বা তার কম শীর্ষবিন্দুবিশিষ্ট, তবুও ডেলনে কোড তাদের ত্রিভুজায়ন শূন্য থেকে তৈরিতে 419 ms ব্যয় করছিল। কান-ছাঁটাই একবারে একটি কোণ সরিয়ে দেয়, এবং তিনের বেশি শীর্ষবিন্দুবিশিষ্ট প্রতিটি সরল বহুভুজে অন্তত দুটি অ-ওভারল্যাপিং কান থাকে, তাই সবসময় আরেকটি কাটার সুযোগ থাকে।
কাজটি নথিবদ্ধ করতে, আমরা প্রতি কমিটে একটি ধারণা রেখে কান-কাটা অ্যালগরিদমটি পুনর্নির্মাণ করেছি এবং একই 37 লাখ বহুভুজে প্রতিটি ধাপের সময় মেপেছি। চূড়ান্ত সংস্করণটি পুরো ডেটাসেট 489 ms-এ প্রক্রিয়া করে, যা শিরোনামের সংখ্যা।
উৎস: Hacker News · সারাংশ: HeadlinesBriefing