দুটি কর্নার সহ দৃষ্টান্তের তির্যক রেখা


9

এখনই আমি দৃষ্টির রেখার জন্য ব্রেনহ্যামের লাইন অ্যালগরিদম ব্যবহার করছি। সমস্যাটি হ'ল আমি এমন একটি প্রান্তের সন্ধান পেয়েছি যেখানে প্লেয়াররা দেয়াল দিয়ে দেখতে পারে। যখন খেলোয়াড় নির্দিষ্ট কোণে অন্যদিকে ফাঁক দিয়ে দেয়ালের দুটি কোণের মাঝে দেখতে পায় তখনই ঘটে।

দৃষ্টিশক্তি প্রান্ত কেস লাইন

আমি যে ফলাফলটি চাই তা হ'ল দুটি দেয়ালের মধ্যবর্তী টালিটিকে অবৈধ হিসাবে চিহ্নিত করা উচিত।

কাঙ্ক্ষিত ফলাফল

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

সম্পাদনা: আমার সহজ সমাধানটি হ'ল কোনও লাইনের এক্স এবং ওয়াই স্থানাঙ্ক পরিবর্তন হলে উভয় কোণ বন্ধ রয়েছে কিনা তা পরীক্ষা করা। কাজের উত্স কোড এবং সম্পূর্ণ পণ্যটির একটি ইন্টারেক্টিভ ডেমো জন্য দয়া করে দেখুন http://ashblue.github.io/javascript-pathfinding/


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

1
যে কোনও উপায়ে, 4-5-এ এই দুটি ব্লক ব্লকের তির্যকটি প্রথম স্থানে কোনও প্রাচীরের সাথে সংযুক্ত নয় এবং আমি এটি বলছি কারণ আপনি স্পষ্টতই তির্যক চলাচলের অনুমতি দিচ্ছেন। এটিকে একটি স্বতন্ত্র প্রাচীর হিসাবে তৈরি করার জন্য আপনাকে অবশ্যই সেই ত্রিভুজটি বর্গাকার করতে হবে বা আপনার লাইন ওয়াকারকে 2-3 এবং 4-5 এর মতো খাঁটি তির্যক হয়ে যাওয়ার পরিবর্তে এর তির্যক চলনগুলি বন্ধ করে দিতে হবে।
প্যাট্রিক হিউজেস

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

5
"ব্যয়বহুল বলে মনে হচ্ছে" কিছু চেষ্টা না করার ন্যায়সঙ্গত কখনই যথেষ্ট নয়। "খুব ব্যয়বহুল হবে" সাধারণত এটি ধরে নেওয়া হয় যে আপনি প্রমাণ করতে পারবেন যে কোনও কিছু খুব ধীর হবে।
মোকোশা

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

উত্তর:


7

এরিক লিপার্ট একটি আয়তক্ষেত্রাকার পরিকল্পনাকারী গ্রিডে শ্যাডো কাস্টিংয়ের সাথে সি # তে লাইন অফ দ্য ভিউ তৈরির জন্য একটি দুর্দান্ত সিরিজ লিখেছিলেন ..

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

আমি এরিকের অ্যালগরিদমটিকে এখানে একটি ষড়জাগরীয় গ্রিডের সাথে মানিয়ে নিয়েছি এবং এটি সফলভাবে বিশাল দৃশ্যমানতার ব্যাসার্ধ (> 60 হেক্সস) সহ বৃহত ষড়জাগরীয় গ্রিডগুলিতে (> 400 x 700) এ ব্যবহার করেছি। এই বাস্তবায়নটি একক আই 7 সিপিইউ ব্যবহার করে আমি যত দ্রুত পলক করতে পারি তত দ্রুত ফিল্ড-অফ-ভিউ গণনা করে এবং প্রদর্শন করে। আমি অবশ্যই এটি ব্যবহার করার জন্য আশা করি কোনও ব্যবহারের জন্য এটি যথেষ্ট দ্রুত।

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


আমি সত্যিই ছায়া কাস্টিং খনন করছি, তবে আমি একটি সমস্যার মধ্যে চলে এসেছি। জেড-অক্ষ দিয়ে কাজ করতে অ্যালগরিদমকে স্কেল করার কোনও তথ্য খুঁজে পেতে সমস্যা হচ্ছে। এটি উল্লেখ করার জন্য দুঃখিত, তবে এটি 3 ডি তে কাজ করার জন্য আপনার কাছে কোনও প্রস্তাবিত সংস্থান আছে?
অ্যাশ ব্লু

@ অ্যাশ ব্লু: উপরের সংযোজনটি দেখুন
পিটার জেরকেনস

আমি আপনার কোডবেস তাকিয়ে আছি এটিতে দুর্দান্ত স্টাফ রয়েছে, তবে আমি হেক্সেসের সাথে মানিয়ে নেওয়া কোনও ব্রেসেনহমের মতো লাইনের অঙ্কন অ্যালগরিদম খুঁজে পাচ্ছি বলে মনে হয় না। আপনি কি এটি লস দিয়ে করেন?
এমএলপ্রোগ্রামার-সিআইএম

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

@ পিটারজির্কেন্স আপনি এখানে প্রশ্নটি
প্রশ্নস /

1

LOS গণনার জন্য যদি আপনার কোণে ফাঁক হয় তবে একটি পৃথক "উচ্চতর রেজোলিউশন" গ্রিড থাকে। আমি এই জাতীয় কিছু ভাবছিলাম:

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

বামটি 4 স্কোয়ারের মূল ব্লক বিভাগ।

ডানটি "উচ্চ রেজোলিউশন" সংস্করণ, আপনি দেখতে পাচ্ছেন যে প্রতিটি আসল বর্গক্ষেত্রকে কোয়ার্টারে বিভক্ত করা হয়েছিল এবং একটি কোণ পূরণ করা হয়েছে that বর্তমান মানচিত্র থেকে

এর অর্থ এই নয় যে স্থানাঙ্ক স্থানটি চারগুণ হয় তবে আমি ভাবা করি না যে এটি একটি উল্লেখযোগ্য পারফরম্যান্স সমস্যা।


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

@ বাইট 56 সঠিক, আমি বোঝাতে চাইছিলাম যে অনুলিপিটিকে অনুলিপি করার পরে সেই অনুলিপিটিতে অতিরিক্ত ব্লক যুক্ত করার জন্য অতিরিক্ত যুক্তি প্রয়োগ করা হবে। এটি করার যুক্তি হ'ল পাঠকের জন্য অনুশীলন।
ডেভি 8

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