একটি বহুভুজ যদি স্বেচ্ছাচারী লাইনের প্রতি সম্মানযুক্ত একঘেয়ে থাকে তবে আমি কীভাবে পরীক্ষা করব?


16

সংজ্ঞা : একটি বহুভুজ সমতলে একটা সরল রেখা থেকে সম্মান সঙ্গে একঘেয়েমি বলা হয় , যদি প্রত্যেক লাইনে লম্ব ছেদ করে পি সর্বাধিক দুইবার।এল এল পিPLLP

বহুভুজ P , এটি কি কোনও লাইন এল এর উপস্থিতি রয়েছে কিনা তা নির্ধারণ করা সম্ভব Lযে বহুভুজ পি এল এরP সম্মানের সাথে একঘেয়ে আছে ? যদি হ্যাঁ, কিভাবে?L

পূর্বে, আমি জিজ্ঞাসা সংশ্লিষ্ট প্রশ্ন (যেখানে আমি একটি বহুভুজ একটি নির্দিষ্ট লাইন থেকে সম্মান সঙ্গে একঘেয়েমি হয় তা নির্ধারণ করতে কিভাবে জিজ্ঞাসা), কিন্তু যখন এখন আমি যদি আগ্রহী L করা হয় না দেওয়া বা আগাম নির্দিষ্ট করা হয়েছে।


কেন শুধু স্থানাঙ্ক সিস্টেমটি ঘোরানো / শিফট করা হবে না যে এল এক্স- এক্সিস Lহয়ে যায় এবং তারপরে আবার পুরানো অ্যালগরিদমটি চালান? অতিরিক্ত কাজটি \ mathcal {O} (1) এ পরিচালনাযোগ্য হওয়া উচিত । xO(1)
— এইচডিএম

4
@ এইচডিএম: লাইন এল ইনপুট অংশ হিসাবে দেওয়া হয় না।
— সোসোশি ইতো

উত্তর:


16

এটা সম্ভব.

আপনি বহুভুজ বিবেচনা করুন এবং "অবতল" শীর্ষকে বিবেচনা করুন। তারা ঠিক করে দেয় কোন লাইনগুলি বহুভুজকে দ্বিগুণের বেশি ছেদ করবে। নিম্নলিখিত চিত্রটিতে আমি নিষিদ্ধ কোণগুলির বিরতি (লাল) চিহ্নিত করেছি। যদি আপনি এগুলি একসাথে রাখেন এবং লাল ডিস্কে একটি গর্ত দেখতে পান তবে অনুমোদিত কোণগুলি রয়েছে (নীল রঙে)। বহুভুজটি তখন opeাল -1 / \ ট্যান any (সবুজ রঙের) কোনও লাইনের সাথে সম্মিলিতভাবে একঘেয়ে হয়ে থাকে । - 1 / ট্যান δδ−1/tan⁡δ

গ্রহাণু

এখন অ্যালগরিদম।

যাক বহুভুজের তম হতে । প্রথমে প্রান্তের পরম কোণ এবং এর অভ্যন্তরের কোণ । সমস্ত ভাল প্রোগ্রামিং ভাষায় উপলব্ধ ফাংশনটি ব্যবহার করুন ।i α i ( v i v i + 1 ) β i v ivi=(xi,yi)iαi(vivi+1)βiviatan2

β আমি = α আমি + + 1 - α আমি + + { 0  যদি  α আমি + + 1 ≥ α আমি 2 π  যদি  α আমি + + 1 < α আমি

αi=atan2(yi+1−yi,xi+1−xi)
βi=αi+1−αi+{0 if αi+1≥αi2π if αi+1<αi

উল্লম্ব দিকের ক্রম না থাকলে উল্লম্ব ক্রমের বিপরীত করুন, যদি নেতিবাচক না হয়। ( : ঘড়ির কাঁটার বিপরীতে, : ঘড়ির কাঁটা)। s = - 2 π s = 2 π πs=∑iβi−nπs=−2πs=2π

নিম্নলিখিত শুধুমাত্র জন্য ভেতরের কোণ চেয়ে বড় যে, । আমার ছবিতে লালগুলি। লক্ষ্য একটি কোণের খুঁজে পেতে যে নেই মডিউল । যেমন যেমন যে সব জন্য যেমন যে :π β জ > π δ ∪ জ [ α জে + ১ , α জ ] π জে β জ > πmπβj>πδ∪j[αj+1,αj]πjβj>π

( α জে < δ < α জে + 1 )  যদি  α জে < α জে + 1

(δ<αj+1∨αj<δ) if αj+1<αj
(αj<δ<αj+1) if αj<αj+1

যেখানে এখান থেকে সাধারণ মান মধ্যে । একটি বিরতি যে ছাড়াইয়া যায় দ্বিতীয় ক্ষেত্রে মিলা (তাই এই সময় "ভিতরে" হতে হবে)।α জ [0, π ) π δ δαjαj[0,π)πδ

বোধহয় এই কিন্তু এক করতে একটি দ্রুত উপায় মান বাছাই করতে হয় মধ্যে এবং জন্য পরীক্ষা ।O(n2)αj mod πγ1,…γmδ∈{γ12,γ1+γ22,…,γm−1+γm2,γm+π2}

আপনি কিছু খুঁজে যদি তারপর বিদ্যমান এবং ঢাল হল । অন্যথায় একঘেয়ে নয়।δL−1/tan⁡δP


এই চিত্রণটি তৈরি করতে আপনি কোন সফ্টওয়্যার ব্যবহার করেছেন?
— জোজম্যান

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