একটি ক্ষেপণাস্ত্র এবং একটি বিটম্যাপ ভূখণ্ডের ছেদ বিন্দু সর্বাধিক দক্ষ উপায় কি?


10

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

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


যে ঘটনাটি আপনি বর্ণনা করছেন তাকে সাধারণত "টানেলিং" বলা হয় এবং এর সাথে মোকাবিলা করার সর্বোত্তম উপায় হ'ল সুইপ পরীক্ষা চালু করা - যেমন টেট্র্যাড এবং জেসনডি উভয়ই নীচে উল্লেখ করেছেন।
jpaver

শুধু "সুইপ টেস্ট" বললে আমার আসলে সহায়তা হয় না। আমি কীভাবে এটি একটি বিটম্যাপ ভূখণ্ড দিয়ে করব?
আয়ান

জেসনের পরামর্শটি আমার কাছে সেরা বলে মনে হচ্ছে: একবারে এক পিক্সেল।
japver

উত্তর:


3

সংঘর্ষ পরীক্ষার জন্য আপনি টিক-বাই-টিক স্ট্যাটিক টেস্টিং করবেন না, আপনার ট্রেস / সুইপ পরীক্ষা করা উচিত।

বিভিন্ন ধরণের আদিমদের জন্য এখানে বিভিন্ন সূত্রের একটি বিস্তৃত তালিকা রয়েছে: http://www.realtimerendering.com/intersections.html

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

এই প্রশ্নটিও দেখুন (কেবলমাত্র সামান্য সম্পর্কিত): চলমান গোলকের মধ্যে সংঘর্ষ সনাক্ত করার জন্য একটি ভাল অ্যালগরিদম কী?


আমি কৃমির মতো একটি ধ্বংসাত্মক বিটম্যাপ অঞ্চল সম্পর্কে ভাবছিলাম। আপনি কি বিটম্যাপ থেকে আঞ্চলিকভাবে আদিম উত্স তৈরি করতে পারবেন বা এটি কি খুব উন্মাদ হবে?
আয়ান

1
আমি নিশ্চিত যে আপনি পারতেন তবে স্বেচ্ছাসেবী বিটম্যাপের জন্য পিক্সেল পরীক্ষার মাধ্যমে পিক্সেল করা সহজ / দ্রুততর হতে পারে।
টেট্রাড

এক চতুর্থাংশের সাথে !! (যাতে এটি চিরদিনের জন্য লাগে না)
বোবোবো

3

বাইনারি অনুসন্ধানের সাহায্যে যদি আপনার দৃশ্যের পাতলা বিট এবং দ্রুত গতিশীল প্রজেক্টলেস থাকে - আপনি সেগুলি মিস করতে পারেন help

আমি মনে করি আপনার সেরা বিকল্পটি হ'ল পথটি যে একবারে পিক্সেল লাগে তার সাথে প্রক্ষিপ্ত সামনের দিকে একটি লাইন ঝাড়িয়ে দেওয়া। প্রতিটি পদক্ষেপ না এড়াতে আপনি পুরো ভলিউমে প্রথমে একটি বাউন্ডিং চেক করতে পারেন।


বাইনারি অনুসন্ধান কি?
আয়ান

1
দুঃখিত - বাইনারি অনুসন্ধান আপনি যে প্রশ্নে বলছিলেন তা কমবেশি। আপনি মাঝখানে শুরু করুন, এবং উত্তরটিতে রূপান্তর না করা পর্যন্ত অনুসন্ধানের জায়গাগুলিকে দুটি দ্বারা ভাগ করুন। এটি অনেক ক্ষেত্রেই অনুকূল, তবে আপনার ক্ষেত্রে এটি কার্যকর হবে না (আপনি সঠিক উত্তরটি পুরোপুরি এড়িয়ে যেতে পারেন)।
জেসনডি

3

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


হ্যাঁ আমি কৃমির মতো অঞ্চলটি ভাবছিলাম। আপনি এটিকে গতিশীলভাবে টাইলগুলিতে বিভক্ত করতে পারেন, তবে খালি টাইলগুলি পরীক্ষা না করে চিহ্নিত করুন? যদি একবারে প্রচুর ক্ষেপণাস্ত্র থাকত তবে হয়তো কিছুটা গতিবেগ হবে?
আয়ান

সুতরাং আপনি কি মনে করেন যে আমি পিছন দিকে পা বাড়ানোর চেয়ে পিক্সেল দ্বারা পিক্সেল, চৌরাস্তা পরীক্ষা করে এগিয়ে চলেছি?
আয়ান

আমি মনে করি তিনটি উত্তরই একটি সামনের অনুসন্ধানের পরামর্শ দিয়েছে। পিছনের দিকে চেক করা কাজ করছে না যদি সামনের পদক্ষেপ এটি কিছু দৃশ্যের উপর থেকে যায়।
জেসনডি

হ্যাঁ, অবশ্যই এগিয়ে।
কাজ

1

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

শেষ পর্যন্ত, সর্বোত্তম পদ্ধতিটি সম্ভবত "প্রতিটি ভূখণ্ডের কলামের উচ্চতা সঞ্চারিত" হতে চলেছে এবং তারপথের প্রতিটি ধাপে মিসাইলের উচ্চতা গণনা করবে height আমি আরও আধুনিক গেমগুলির সাথে কথা বলতে পারি না, তবে আমি বিশ্বাস করি যে আপনি যখন ঝলসানো পৃথিবীতে একটি "গুহা" তৈরি করেছিলেন, তখন cave গুহার উপরের অঞ্চলটি সোজাভাবে নেমে পড়েছিল, কোনও ওভারহ্যাং ছাড়েনি। আপনি যদি ওভারহ্যাং চান তবে কাজটি কিছুটা বড় হবে, তবে এটি এই প্রাথমিক ধারণাটির একটি এক্সটেনশন হবে। (ইঙ্গিত: প্রথমে কাজ করার প্রাথমিক ধারণাটি পান!)

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

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