অ্যালগরিদম আপনি যে পথটি পেয়েছিলেন তার সাথে শুরু করে, এই ক্ষেত্রে ত্রিভুজগুলির একটি তালিকা:
মিক্কোর ব্লগ পোস্টের নীচের কোডটি পোর্টালগুলি অ্যারে তৈরি করে, যা পথের বহুভুজগুলির মধ্যে রেখাংশগুলি উপস্থাপন করে এমন রেখাংশগুলির একটি তালিকা। এগুলি হ'ল "পোর্টাল" স্মুথযুক্ত পথটি যেতে হবে (বা "বহুভুজ প্রান্তের মাঝখানের সন্ধান করুন" থেকে বহুভুজ প্রান্তগুলি)। নোট করুন যে পোর্টালগুলির তালিকা শুরু এবং লক্ষ্য পয়েন্টগুলিতে অবনতিযুক্ত লাইন বিভাগগুলি দিয়ে শুরু হয় এবং শেষ হয়।
এই ছবিগুলিতে এই পোর্টালগুলির তালিকা হলুদ বিন্দুযুক্ত রেখাংশ হিসাবে দেখানো হয়েছে।
অ্যালগরিদম একটি প্রশস্ত ফানেল দিয়ে শুরু হয় এবং যতক্ষণ না এই ফানেলটি (AD) শক্ত করে ততক্ষণ পোর্টাল সাইড পয়েন্টগুলি (লাইন বিভাগগুলির শেষ পয়েন্ট) বরাবর ফানেল পক্ষগুলি এগিয়ে নিয়ে এগিয়ে যায়।
এর অর্থ প্রতিটি পদক্ষেপের ফানেল প্রান্তগুলি অভ্যন্তরের দিকে সরানো উচিত, এটি পুরানো পাশ এবং সম্ভাব্য নতুন দিকটি উপস্থাপনকারী ভেক্টরগুলির ক্রস প্রোডাক্ট ( নীচের চিত্রটিতে পি × কিউ ; triarea2
মিক্কো কোডটিতেও দেখুন ) পরীক্ষা করা যেতে পারে। যদি কোনও পক্ষের জন্য অগ্রসর হওয়া ফানেলটি শক্ত না করে, আমরা পোর্টালগুলির বর্তমান পুনরাবৃত্তির (ই) জন্য সেই দিকটি আপডেট করি না।
অন্য কেসটি হ্যান্ডেল করা দরকার তা যখন ফানেল একটি লাইন বিভাগে অবনমিত হয়। এই অ্যালগরিদমের জন্য অ্যাকাউন্টটি পরীক্ষা করতে যদি আবার কোনও ক্রস পণ্য ব্যবহার করে কোনও পক্ষ "ভুল" দিকে থাকে, তবে এই সময়টি ফানেল এপেক্স এবং ডান এবং বাম দিকের শেষ পয়েন্টগুলি যথাক্রমে তৈরি করেছেন ( আর × এস ইন নীচের চিত্র)।
যদি এটি হয় তবে ফানেল শীর্ষে এবং সঠিক দিকের শেষের বিন্দু থেকে ভেক্টরটি স্মুথড পাথ ( উপরের চিত্রে আর ) যুক্ত করা হয় এবং অ্যালগরিদমটি নতুন শীর্ষ (এফজি) হিসাবে তার শেষ পয়েন্ট দিয়ে পুনরায় চালু করা হয়, যদি না, অবশ্যই, যদি এটি লক্ষ্য পয়েন্ট হয়।