যদি একটি বৃত্ত এবং অবতল বহুভুটি ছেদ করে তবে আমি কীভাবে পরীক্ষা করব?


19

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

আমি আমার অবতল বহুভুজকে উত্তল টুকরো টুকরো টুকরো করে ফেলতে পারতাম। যে সাহায্য করবে?

উত্তর:


26

এই সমস্যা দুটি আছে। প্রথমটি ছেদটি এবং দ্বিতীয়টি ওভারল্যাপিং (ধারণ করে)।

প্রথম (ছেদটি / বৃত্তের ভিতরে বহুভুজ):

বহুভুজের প্রতিটি প্রান্তে বৃত্তের কেন্দ্রের নিকটতম বিন্দুটি সন্ধান করুন। যদি কেন্দ্রের নিকটতম বিন্দুর মধ্যে কোনও দূরত্ব ব্যাসার্ধের চেয়ে কম হয় তবে আপনি ছেদটি বা ওভারল্যাপ পেয়েছেন।

দ্বিতীয় (বৃত্তটি বহুভুতে পুরো): বৃত্ত কেন্দ্র থেকে ডানদিকে (বা বাম / উপরে / নীচে) রশ্মি অঙ্কন করুন এবং রে / বিভাগ (বহুভুজ প্রান্ত) ছেদগুলি গণনা করুন। ছেদকেন্দ্রের গণনা সমান হলে বৃত্তটি বহুভুজের বাইরে। যদি এটি বিজোড় বৃত্ত ভিতরে হয়।

আমি এই মামলার জন্য বক্তৃতা থেকে পিকটার ভাগ করব:

এখানে চিত্র বর্ণনা লিখুন

এবং একক ক্ষেত্রে যত্ন নিতে।

আশা করি এটি সাহায্য করবে।


সম্পাদনা: আমি মনে করি ছবিতে ক্রেডিট যুক্ত করা ঠিক ন্যায্য। লেখক হলেন প্রাগের চেক টেকনিক্যাল ইউনিভার্সিটির সহকারী অধ্যাপক পেটার ফেল্কেল


আমি মনে করি না ডানদিকে কেবল একটি রশ্মি "শুটিং" করে এটি কাজ করবে। হতে পারে আমি আপনার পদ্ধতির ভুল ব্যাখ্যা করেছি, তবে যা আমি বুঝতে পেরেছিলাম তা এখানে চিত্রিত হিসাবে সেটআপের সাথে ব্যর্থ হবে: imgur.com/Whg2u
বামমজ্যাক

2
হ্যাঁ তবে এটি প্রথম ক্ষেত্রে বর্ণিত হয়েছে। শুটিং রশ্মি কেবলমাত্র বহুভুজযুক্ত বৃত্ত (আমার বিবরণে দ্বিতীয় কেস) সমাধান করবে। উভয় ক্ষেত্রেই আপনাকে পরীক্ষা করতে হবে। এটি দ্রুত, বাস্তবায়িত করা সহজ এবং কোনও মেমরির প্রয়োজন নেই।
নোটবেন

1
আমি দুঃখিত "আমি" প্রান্তকে "কিনারা" দিয়ে বিভ্রান্ত করেছি এবং তাই আপনার প্রথম চেকটির ভুল ব্যাখ্যা দিয়েছি। এটি সঠিকভাবে পড়ার সময়, এটি কাজ করে :)
বমজ্যাক

7

আপনার অনুমান হিসাবে প্রথম পদক্ষেপটি অবতল বহুভুজকে একাধিক উত্তলকে ভাগ করা। এর কারণ হ'ল আপনি পৃথক অক্ষের উপमेটি ব্যবহার করবেন যা কেবল উত্তল বহুভুজের উপর কাজ করে।

প্রতি সেটের জন্য স্যাট কেবল দুটি উত্তল বহুভুতে কাজ করে। নামে "পৃথক অক্ষ" বলতে বহুভুজটির প্রান্তগুলিতে লম্ব অক্ষকে বোঝায়। দুর্ভাগ্যক্রমে, চেনাশোনাগুলির এগুলির একটি অসীম সংখ্যা রয়েছে। যাইহোক, এটি দেখা যাচ্ছে যে বহুভুজটির কোণটিকে ছেদ করার জন্য বাইরের দিকে প্রজেক্টটি প্রজেক্টটি দেখে এই অক্ষগুলির মধ্যে কোনটি প্রাসঙ্গিক তা খুঁজে বের করার একটি দুর্দান্ত সহজ উপায় রয়েছে।

এখানে পুরো অ্যালগরিদমটি না গিয়ে মেটানেট সফটওয়্যার (এন / এন + এর নির্মাতাদের) স্যাট ব্যবহার করে সংঘর্ষ সনাক্তকরণের জন্য একটি ভাল টিউটোরিয়াল রয়েছে , যার তৃতীয় অংশটি যখন স্যাটকে অন্তর্ভুক্ত করে যখন বস্তুর মধ্যে একটি বৃত্ত থাকে


উত্তল বহুভুজকে অবতল বহুভুজকে বিভক্ত করার জন্য আপনার কাছে কি কোনও উল্লেখ রয়েছে? আপনার সরবরাহ করা স্যাট লিঙ্কটি বাছাইয়ের কোনও কিছুই উল্লেখ করে না।
এহসানুল

বহুভুজের জ্যামিতির উপর নির্ভর করে এটি আসলে একটি খুব জটিল সমস্যা, তবে সমস্ত 3 ডি ইঞ্জিন এটি করে, কারণ হার্ডওয়্যারটি সাধারণত বহুভুজ নয়, কেবল কোপ্লানার কোয়াড এবং ত্রিভুজ রেন্ডার করতে পারে।
স্প্লিনটারলেলিটি

1
@ehsanul: en.wikipedia.org/wiki/Polygon_triangulation দুয়েক জনপ্রিয় পন্থা বর্ণনা করা হয়েছে।

0

আমি যা করি তা এখানে।

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