আমি উত্তল বহুভুজগুলি কীভাবে যুক্ত এবং বিয়োগ করতে পারি?


12

আমার দুটি 2 ডি উত্তল বহুভুজ একে অপরকে ওভারল্যাপ করে । আমি তাদের বিয়োগ করতে এবং যুক্ত করতে একটি অ্যালগরিদমের সন্ধান করছি । ফলাফলটি অবশ্যই একটি একক অবতল বহুভুজ বা (আরও ভাল) অবতল ফলাফল গঠনের ক্ষেত্রে সবচেয়ে বড় উত্তলগুলির একটি সেট হতে পারে (যেমন ত্রিভুজগুলি)।

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

( বাকি আছে: । প্রাথমিক বহুভুজ ওভারল্যাপিং মধ্য: । যোগ করার পরে ফলে অবতল বহুভুজ রাইট: । অবতল ফলাফলের বিরচন উত্তল বহুভুজ একটি সেট এখানে এটা ভালো হতে কর্মক্ষমতা কারণে একটি ত্রিভুজ চেয়ে বড় উত্তল বহুভুজ পেতে হবে একটি বিয়োগ। দুটি ওভারল্যাপিং বহুভুজ বাম দিকে একই চিত্রের দিকে নিয়ে যাবে তবে ওভারল্যাপিং অঞ্চলটি ফলক বহুভুজের অংশ না হয়ে))

কিভাবে আমি এটি করতে পারব?


আমরা কি এখানে 2 ডি সম্পর্কে কথা বলছি? কারণ থ্রিডি-তে বহুভুজগুলির সংমিশ্রণ সত্যিকার অর্থে প্রচুর পরিমাণে বোঝা যায় না।
ধারণাগুলি

হ্যাঁ, সরি, আমি 2 ডি সম্পর্কে কথা বলছি! যদিও আমি দেখতে পাচ্ছি না কেন এটি 2 ডি-র তুলনায় 3 ডি-তে কম বোঝায় না।
সেবাস্তিয়ান বার্থ

2
3 ডি তে দুটি বহুভুজ যুক্ত করুন, যদি তারা সমতল হয় তবে এটি একই সমতলে না থাকলে এগুলি বেশি বোঝা যায় না, যদি তাদের ভলিউম (সলিড) থাকে তবে এটি আলাদা গল্প।
ধারণায়

ঠিক আছে, আমি পেয়েছি। আমি গ্রাফিক্স সম্পর্কে চিন্তা করছিলাম না, তবে সংঘর্ষের বিষয়গুলি। সুস্পষ্ট করার জন্য ধন্যবাদ.
সেবাস্তিয়ান বার্থ

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

উত্তর:


9

টিএল; ডিআর আপনাকে বাসপ গাছ ব্যবহার করে বুলিয়ান ক্রিয়াকলাপ প্রয়োগ করতে হবে।

ঠিক আছে, মনে হচ্ছে আমরা এখানে কনস্ট্রাকটিভ সলিড জ্যামিতির কথা বলছি । আমি বাণিজ্যিক পর্যায়ে সিএসজি বাস্তবায়ন করেছি তাই আমি এটি সম্পর্কে একটি বা দুটি জিনিস জানি।

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

কিন্তু অপেক্ষা করো! সেই কাগজটি মূলত বহুভুজীয় মেস এবং 3 ডি প্লেন সম্পর্কে কথা বলছে, না?

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

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

সংখ্যাগত দৃust়তা সম্পর্কে। এটি লক্ষ্য করা ভাল যে এখানে দুটি ধরণের জ্যামিতিক গণনা রয়েছে,

  • ঐ যে নির্মাণ উপর ভিত্তি করে, আপনি গঠন করা একটি আকৃতি আগের অপারেশন ফলাফলের উপর ভিত্তি করে। উদাহরণস্বরূপ y = sqrt(x)এবং তারপরে yএকটি নতুন অপারেশনে ব্যবহার করুন । একে বলা হয় নির্মাণ; সমস্যাটি হ'ল সংখ্যাসূচক ত্রুটিগুলি দ্রুত জমা হবে।
  • বিকল্পভাবে অপারেশনগুলি রয়েছে যা পূর্বাভাসের পরিবর্তে ব্যবহার করে, মূলত নির্মাণ ব্যবহার না করে আপনি কেবল কোনও শর্তটি সত্য / মিথ্যা কিনা তা জিজ্ঞাসা করুন এবং বিভিন্ন ক্রিয়ায় একই মান ব্যবহার করেন। ক্লাসিক পরীক্ষাগুলি অন্তর্ভুক্ত এবং ওরিয়েন্টেশন পরীক্ষা অন্তর্ভুক্ত; এটি সংখ্যাসূচক ত্রুটিগুলির জন্যও সন্দেহযুক্ত, বিশেষত যদি আপনি একক বা দ্বিগুণ নির্ভুলতা ব্যবহার করেন তবে সাধারণত আরও ভাল ফলাফল দেবেন। অন্যান্য সমাধান যা গতি এবং যথার্থতার সাথে পৃথক থাকে exist এখানে সাম্প্রতিক একটি কাগজপত্র যা সঠিক ফলাফল দেওয়ার জন্য বিমান ভিত্তিক জ্যামিতি ব্যবহার করে নির্মাণ এড়ায়। আমি কাগজ থেকে উদ্ধৃতি দেবেন:

বহুভুজীয় মেসের সমতল ভিত্তিক উপস্থাপনের ধারণাটি প্রথমে সুগিহার এবং ইরি [এসআই 89] দ্বারা বর্ণিত হয়েছিল। বুলিয়ান এক্সপ্রেশন মূল্যায়নের মতো জাল দ্বারা টপোলজি পরিবর্তনের সাথে জড়িত কাজগুলির ক্ষেত্রে এই ধরণের প্রতিনিধিত্ব একটি গুরুত্বপূর্ণ সুবিধা প্রদান করে: ফলস্বরূপ পলিহিড্রন প্রাপ্ত করার জন্য কোনও নতুন প্রাথমিক জ্যামিতির তথ্য তৈরি করতে হবে না

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

এবং পরিশেষে আমি যুক্ত করতে চাই, আপনি যদি আপনার বিএসপি সিএসজি বাস্তবায়ন শুরু করতে চান তবে আমি বিএসপি ফ্যাক্স থেকে শুরু করার পরামর্শ দেব


উত্তেজক, তবে পাল্টা স্বজ্ঞাত, বিবেচনা করে যে উত্তল বহুভুজ বা পলিহেড্রনের একটি বিএসপি একটি তালিকা। দুর্দান্ত কাগজ।
ডিভে

@ ডেভিডলাইভলি হ্যাঁ, তবে মুখগুলি অবিচ্ছিন্ন হওয়ার জন্য রুট প্লেনটি বেছে নিয়ে এটি একটি ভারসাম্য গাছ তৈরি করতে পারেন। প্রকৃতপক্ষে এটি সেই চ্যালেঞ্জের অংশ যা তারা কথা বলে না
ধারণাগত 3

আহ, এটা বোঝা যায়। হাইব্রিড বিএসপি বাছাই করুন, তারপরে।
ডিভে

@ ডেভিডলাইভলি এছাড়াও বিএসপি রেন্ডার করা সত্যিই সহজ নয়, যদিও মিলিয়ন বহুভুজের জ্যামিতির আরও জটিল ক্ষেত্রে ওপির প্রশ্নটি একটি সাধারণ ক্ষেত্রে, একবার আপনি যখন গাছের কাজ শেষ করে ফেলেছেন তখন আপনার কাজ শেষ নয়।
ধারণাগুলি

@ ধারণা3d আমি আশা করি এটি 5 বছরের পুরানো উত্তর হওয়ায় এটি খুব বিরক্তিকর হবে না তবে দুটি জিনিস আমি সত্যিই বুঝতে পারি না: যখন কোনও বিন্দু বিমান / লাইনের বাম বা ডানদিকে থাকে কিনা তা নির্ধারণ করার চেষ্টা করার সময়, প্লেন / লাইনটি একটি তুচ্ছ বিমান / লাইনের সাথে সামঞ্জস্য করে এবং কেবল ঘোরানো বিন্দুর স্থানাঙ্কগুলি বিবেচনা করে কেবল পুরো জিনিসটি ঘোরানো কি সহজ হবে না? বিএসপি গাছের পরিবর্তে সুদারল্যান্ড od হডম্যান অ্যালগোরিদম ব্যবহার সম্পর্কে কীভাবে? এই পদ্ধতির সাথে বেশ মিল রয়েছে বলে মনে হচ্ছে।
জন পি

1

আপনার উদাহরণ অনুসারে:

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

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

গুরুত্বপূর্ণ: আপনি যে শিরোনামটি শুরু করেছেন তা অন্য বহুভুজের অভ্যন্তরে নয় তা নিশ্চিত করুন ( বহুভুজ পরীক্ষার পয়েন্টের জন্য এই নিবন্ধটি দেখুন )।

প্রতিটি চৌরাস্তা ধরে চিহ্নিত করা, একটি ছেদটি পরীক্ষা করার জন্য একটি ও (এন ^ 2) অ্যালগরিদম হবে। আপনি অন্যান্য বহুভুজের অভ্যন্তরে যে শিখর রয়েছে তার সন্ধান করে আপনি এটির গতি বাড়িয়ে তুলতে পারেন, কারণ those উল্লম্বগুলির সাথে সংযুক্ত প্রান্তগুলি ছেদকারী দুটি হবে।


0

যদি আপনি অবতল বহুভুজ চান , কেবলমাত্র দুটি ইনপুট বহুভুজগুলির মধ্যে নিকটতম প্রান্তটি চয়ন করুন এবং দুটি নতুন প্রান্ত যুক্ত করুন:

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

উত্তল কিছুটা জটিল হয়ে পড়ে:

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

একটি পদ্ধতির পুনরাবৃত্তি হয় যে এটি দ্বিতীয় বহুভুজ থেকে প্রথমটিতে শীর্ষে যোগ করে, একবারে একবারে প্রথম বহুভুজকে একটি ধারক হিসাবে বিকশিত করে যা সবকিছুকে ঘিরে রাখে।

মূলত:

  • দ্বিতীয় বহুভুজের শিখুনের মধ্য দিয়ে ইটারেট করুন।
  • প্রতিটি ভার্টেক্স ভি এর জন্য প্রথম বহুভুজটির প্রান্ত দিয়ে পুনরাবৃত্তি করুন:
  • প্রান্তের এমন একটি "পরিসীমা" সন্ধান করুন যা প্রত্যেকে ভার্টেক্সের মুখোমুখি হয়
  • বহির্মুখের জোড়াটি নিন যা এই ব্যাপ্তিটিকে সংজ্ঞায়িত করে এবং যে সংযোগগুলি করে তাদের মধ্যে প্রান্তের সমস্ত প্রান্তগুলি সরিয়ে দেয়
  • নতুন প্রান্তটি সঠিক দিকের মুখোমুখি হয়েছে কিনা তা নিশ্চিত করে those বাহ্যিক শীর্ষগুলি থেকে নতুন ভার্টেক্সে (দ্বিতীয় বহুভুজ থেকে) দুটি নতুন বিভাগ আঁকুন।
  • দ্বিতীয় বহুভুজ থেকে পরবর্তী শীর্ষে এগিয়ে যান

এখানে প্রথম চিত্রের প্রক্রিয়াটি চিত্রিত করে একটি চিত্র রয়েছে:

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

একটি দ্রুত পদ্ধতি হ'ল প্রতিটি বহুভুজের যে প্রান্তগুলি অন্য বহুভুজের মুখের মুখোমুখি হয় না, সমস্ত কিছু সরিয়ে দেয় এবং অবশিষ্ট রেখার স্ট্রিপগুলির একে অপরের সাথে সংযোগ স্থাপন করে এমন প্রান্তগুলির তালিকা খুঁজে পাওয়া।

সম্ভবত অন্য কেউ কিছু বিয়োগের পরামর্শ দিয়ে চিমটি দিতে পারে।


এটি কেবলমাত্র অর্ধেক সমস্যা (সংযোজন) সমাধান করবে বলে মনে হচ্ছে। বহুভুজ ওভারল্যাপ হলে অ্যালগরিদমগুলি কীভাবে কাজ করে বা অনুকূলিত হতে পারে তা উল্লেখ করা ভাল।

অ্যালগোরিদম স্পষ্টতই লক্ষ্য বহুভুজের "অভ্যন্তরীণ" শীর্ষকোণগুলি উপেক্ষা করে, এটি দ্বিতীয় বহুভুজ থেকে একটি প্রান্তটি প্রথমটি অতিক্রম করে এমন সমস্যার জন্যও ক্ষতিপূরণ দেয়।
ডিভে

এটি প্রায় মার্জ পর্বের সমান ( মার্জ হোল অ্যালগোরিদমের ৪ পয়েন্ট । আমার ক্ষেত্রে বহুভুজগুলির সংমিশ্রণের পরে আরও ক্ষেত্রটি আবদ্ধ করা সঠিক সমাধান নয় The উভয় বহুভুজকে তারা যেমন রাখে না কেন সঠিক সমাধান হ'ল ' টি ওভারল্যাপিং বা স্পর্শ নয়।
সেবাস্তিয়ান বার্থ

@ বেল্টজয়েডরাইন্ডিয়ানার আহ - হ্যাঁ, এটি একটি বড় পার্থক্য করে। সম্ভবত আমি প্রশ্নটি ভুল বুঝেছি। ফলাফলটি উত্তল বা অবতল কিনা তা নিয়ে চিন্তা না করে আপনি কি বহুভুজ একসাথে যুক্ত করতে খুঁজছেন? বা ছেদটির উপর ভিত্তি করে উত্তল সেট তৈরি করুন? (মুহুর্তের জন্য বিয়োগফল উপেক্ষা করা))
ডিভে

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