একাধিক বহুভুজ দিয়ে অক্ষের উপপাদককে পৃথক করা?


9

আমি সি # তে পৃথক অক্ষের উপপাদ্যটি প্রয়োগ করার চেষ্টা করছি। আমার একটি ফাংশন রয়েছে যা দুটি বহুভুজের মধ্যে ন্যূনতম অনুবাদ ভেক্টর গণনা করতে পারে। তবে, আমি এমন একটি ফাংশন তৈরি করতে দেখছি না যা একটি বহুভুজ এবং একাধিক অন্যান্য বহুভুজের মধ্যে ন্যূনতম অনুবাদ ভেক্টর গণনা করে। সত্যি বলতে, আমি কয়েক মাস ধরে এটি নিয়ে কাজ করছি এবং কোনও সমাধানের কাছাকাছি নেই এবং অনলাইনে কোনও সমাধান খুঁজে পাচ্ছি না। কিছুটা প্রান্তের ক্ষেত্রে সবসময়ই থাকে যা সঠিক ফলাফল দেয় না এবং আমার গেমটিতে উচ্চ অগ্রাধিকারের বাগ বাড়ে।

এখানে সাধারণ প্রান্তের কেসগুলি রয়েছে যা সঠিকভাবে কাজ করে না:

প্রান্তের কেস

এই সমস্যার জন্য একটি সুপরিচিত সমাধান আছে? আমি যা দেখতে পাচ্ছি তারা হ'ল লোকেরা "প্রতিটি বহুভুজের উপর স্যাট সম্পাদন করুন" বলছেন তবে এটি ন্যূনতম অনুবাদ ভেক্টরকে খুব কমই উত্পাদন করে ।

কোন সাহায্যের অত্যন্ত প্রশংসা হবে।


একটি ধারণা, আমি আসলে পরীক্ষার আশেপাশে যাইনি, এটি হ'ল কিছু বিচ্ছেদ অক্ষ - যা আপনাকে পাশের পাশের একটি বহুভুতে নিয়ে যায় - সর্বনিম্ন হিসাবে বিবেচনা করার জন্য এটি পতাকাযুক্ত হতে পারে। তারপরে এক ধরণের পুনরাবৃত্তি-পরীক্ষা ভাল ফলাফল দেয় (সম্ভবত কোনও ধরণের FIFO এবং / অথবা পুনরাবৃত্তির সীমাটি একটি লুপে আটকা পড়ার জন্য)।
অ্যান্ড্রু রাসেল

এর কোনও সংস্করণ সমাধান করা আরও কঠিন যখন কোনও আকারের প্রান্তটি কেবল বিরক্তির দ্বারা আংশিকভাবে আচ্ছাদিত থাকে। উপরের-ডান চিত্রের উদাহরণস্বরূপ, যদি মাঝের বর্গক্ষেত্রটি ডানদিকে প্রসারিত হয় তবে একটি বৃহত আয়তক্ষেত্র হতে। এটি আমি ব্যবহার করি এমন কয়েকটি কোডের আউটপুটের অনুরূপ যা কয়েক হাজার হাজার দখলকৃত / না-দখলকৃত সেলগুলি গ্রহণ করে এবং এটি কমিয়ে একশো বৃহত্তর সংঘর্ষের আকারের মধ্যে ফেলেছে
রিচার্ড টিঙ্গল

উত্তর:


2

আদর্শভাবে, আপনি বহুভুজগুলির বাইরে আপনার পরিবেশ তৈরি করেন না। আপনি এটি প্রান্তগুলি বাইরে তৈরি করেন (যা সম্ভবত আপনি বহুভুজের সেট থেকে গণনা করেছেন)। আপনার প্রথম উদাহরণে উদাহরণস্বরূপ, একটি একক তির্যক প্রান্ত রয়েছে; শেষ উদাহরণে, বাক্সটি একক অনুভূমিক প্রান্তে বিশ্রাম নিচ্ছে।

আপনার সম্পাদক বা সরঞ্জামগুলি স্তর গঠনের জন্য ছোট, স্বতন্ত্র আকারগুলি ব্যবহার করে তা রানটাইমকে প্রভাবিত করে না।

কিছুটা সহজ পদ্ধতির সাহায্যে বেস আকারগুলির "অভ্যন্তরীণ" প্রান্তগুলি সরিয়ে দেওয়া হবে। আপনার শেষ উদাহরণের জন্য, "তল" বাক্সগুলির মধ্যে দুটি প্রান্ত রয়েছে; সংঘর্ষ সনাক্তকরণের সময় এগুলি উপেক্ষা করুন।

আপনি বক্স 2 ডি ডকুমেন্টেশনে বিভাগ 4.5 (প্রান্ত এবং প্রান্ত চেইন) পড়ে আরও ভাল ছবি এবং কিছু বাস্তবায়ন ধারণা পেতে পারেন ।


2
প্রান্তগুলি ব্যবহার করে (বিশেষত প্রান্তগুলি, এটি প্রান্ত চেইনের সাথে সামান্য ভাল) এর বড় অসুবিধাটি রয়েছে যে পদার্থবিজ্ঞানের বস্তুর পক্ষে স্তরের জ্যামিতির অভ্যন্তরে চলাচল করা খুব সহজ হয়ে যায় ।
অ্যান্ড্রু রাসেল

1
@ অ্যান্ড্রুআরসেল: সাধারণ টানেলিং ফিক্সগুলি নিয়ে এই সমস্যাগুলি এড়ানো যায়। আপনার চলমান বস্তুগুলির মোটামুটি শালীন ভলিউম / ক্ষেত্র রয়েছে তা নিশ্চিত করুন, তাদের ফ্রেমের প্রতি সর্বোচ্চ গতিটি যথেষ্ট পরিমাণে কম রাখুন যাতে তারা তাদের সংক্ষিপ্ত মাত্রার অর্ধেকেরও বেশি স্থানান্তর করতে না পারে (বা দ্রুত এগিয়ে যাওয়ার প্রয়োজনে এটি একাধিকবার পদক্ষেপ নিতে পারেন) আপনার স্তরের জ্যামিতিতে সত্যই তীক্ষ্ণ ক্রাভিসেস এবং যেমন আপনি "নিরাপদ" চূড়ান্ত অবস্থান ইত্যাদিতে রূপান্তর না করা পর্যন্ত একাধিকবার রেজোলিউশনটি পুনরাবৃত্তি করুন
শান মিডলডিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.