অবিচ্ছিন্ন পদার্থবিজ্ঞানের ইঞ্জিনের সংঘর্ষ সনাক্তকরণ কৌশলগুলি


10

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

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

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

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

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


আমি আপনাকে এই বইগুলি পরীক্ষা করার পরামর্শ দিচ্ছি amazon.com/Real-Time-Collision-Dtetection-Intteractive-Techology/… amazon.com/…
ধারণা3d

আমি যোগ করার জন্য দুঃখিত, কিন্তু কেন বক্স 2 ডি ব্যবহার করবেন না? এটি প্রায় প্রতিটি ভাষায় পোর্ট করা হয়েছে। আপনি যদি এটি ব্যবহার করার পরিকল্পনা না করেন তবে কেন এটির উত্সটি ব্রাউজ করবেন না যাতে আপনি দেখতে পান যে এটি কীভাবে পরিচালনা করছে?
ডেরেক

উত্তর:


2

আমি সত্যিই এখানে প্রায় কাছাকাছি ধারণা ছোঁড়া করছি। ধরে নিচ্ছি আপনার currentঅবস্থান ( অবস্থান খুব কম) রয়েছে next; প্রতিটি ফ্রেমের জন্য।

আপনার সরু পর্যায়ে দুটি পৃথক বিস্তৃত পর্যায় প্রয়োজন হবে:

  • একটি যে সংঘর্ষ ঘটবে তা সনাক্ত করে।
  • সংঘর্ষটি আসলে যেখানে ঘটে সেখানে প্রায় একটিকে চিত্রিত করে (উদাহরণস্বরূপ একটি বিস্তৃত পর্যায় / ভুল এসএটি)
  • অবশেষে আপনার সংকীর্ণ পর্যায়ে দ্বিতীয় বিস্তৃত পর্যায়ের ফলাফলের উন্নতি হবে।

প্রাথমিক ব্রড ফেজ

আপনি প্রাথমিক বিস্তৃত পর্যায়ে স্থানিক হ্যাশিংয়ের ( nextঅবস্থান ব্যবহার করে নয় current) অনুসন্ধান করতে পারেন । এটি আপনার সমস্যার জায়গাটিকে সংঘাতের পরীক্ষার্থীদের গোষ্ঠীতে সুন্দরভাবে বিভক্ত করবে।

দ্বিতীয় ব্রড ফেজ

আপনি বর্ণিত বৃত্ত ছেদ পদ্ধতি ব্যবহার করে একটি বাইনারি একাধিক নমুনা করুন। অন্য কথায়:

left = current
right = next
midpoint = (left + right) / 2
loop a desired amount of times tweaked to the accuracy you want:
  is a collision occuring at midpoint?
    right = midpoint
  else?
    left = midpoint
  midpoint = (left + right) / 2
pointOfCollision = midpoint

এই নির্ভুলতার টুইটটি দূরত্বকে বিবেচনায় নিতে পারে - আমার মনে হয় এর 'দৈর্ঘ্য স্কোয়ার্ড' ব্যবহার করে next - currentপিক্সেল-নিখুঁত ফলাফল পাবেন।

সংকীর্ণ পর্যায়

পিএমস্কের মতো কিছু ব্যবহার করে একটি বাইনারি বহু-নমুনা করুন - যুক্তিটি ঠিক উপরের মতই হবে; কেবল একটি ভিন্ন সংঘর্ষের রুটিন ব্যবহার করে।

পরিশেষে

আপনি সময়ে অফ ছেদ কাজ করতে সক্ষম হবে pointOfCollision, currentআপনার বর্তমান এবং speedএবং acceleration(অভিমানী আপনি একটি যুক্তিসঙ্গত একত্রকারী থাকে)।


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

এছাড়াও, পামাস্ক ঠিক কী করে? সাইটটি সত্যই = = ব্যাখ্যা করে না।
গ্রিফিন

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

1

ঠিক আছে, আমি দেখেছি আপনি আপনার প্রশ্ন আপডেট করেছেন যাতে আরও সুনির্দিষ্ট হয়। আমি চেষ্টা করব এবং আপনাকে আরও কিছু সাহায্য করব।

আপনার প্রথম ব্রড-ফেজ চেকের জন্য, আমি দৃ strongly ়ভাবে স্থানিক হ্যাশিংয়ের সুপারিশ করব ।

মূলত, আপনি আপনার স্ক্রিনকে সমান আকারের গ্রিডগুলিতে ভাগ করুন। তারপরে, যদি কোনও গ্রিডের মধ্যে কোনও অবজেক্ট থাকে তবে আপনি এটি 1 ডি হ্যাশ টেবিলের একটি "বালতি" এ যুক্ত করুন।

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

এটি চালিয়ে যাওয়ার সাথে সাথে আপনার কাছে এখন বস্তুগুলির সাথে বালতিগুলির একটি তালিকা রয়েছে (সম্ভাব্য)) আপনি এখানে অন্য একটি ব্রড-ফেজ চেক করতে পারেন:

উ।) এই বালতিটি আরও 4 টি বালতিতে ভাগ করা এবং ফলাফল 1D হ্যাশ টেবিলটি পরীক্ষা করা। যদি তারা একই বালতিতে না থাকে তবে কোনও সংঘর্ষ নেই।

বা:

খ) নির্ভুলতা নিশ্চিত করার জন্য একটি সাধারণ দূরত্ব যাচাই করা এবং অবজেক্টের প্রস্থ এবং / অথবা উচ্চতা মাথায় রেখে।

কিন্তু যখন আপনার সম্ভাব্য সংঘর্ষ হবে তখন কী হবে?

তারপর আমি লাইন বরাবর কিছু সুপারিশ করবে এই । এটি বহুবিধ সংঘর্ষের (জটিল আকারের জন্য) বা কম জটিল আকারের জন্য আয়তক্ষেত্র / বৃত্তের মধ্যে মূলত এক ধরণের মিশ্রণ।

এছাড়াও, যদি আপনি সত্যিই "সংঘর্ষের ঘটনা ঘটার আগে তাদের ধরে রাখতে এবং সেগুলি সঞ্চয় করতে চান" চান তবে আপনি সর্বদা এরকম কিছু করতে পারেন:

দুটি বস্তু যদি একই বালতিতে থাকে তবে তাদের সংঘর্ষ হতে পারে।

তদ্ব্যতীত, অবজেক্টগুলি কি এতটা নিকটবর্তী যে তারা শীঘ্রই সংঘর্ষে পড়তে পারে? (অ্যাকাউন্টে বেগ, বস্তুর আকার এবং দূরত্ব গ্রহণ করা)

যদি উভয়ের উত্তর হ্যাঁ হয়, তবে এগিয়ে যান এবং পরে ছেদ পরীক্ষা করার জন্য এটি সঞ্চয় করুন।


" পুরানো উত্তর

হ্যাঁ, দুর্ভাগ্যক্রমে আমি আমার "সমস্ত সংঘর্ষের প্রকারগুলি এবং কীসের জন্য তারা ব্যবহৃত হয়" হ্যান্ডবুকের ট্র্যাক হারিয়ে ফেলেছি। :)

তবে এটি অত্যন্ত বিস্তৃত অনুসন্ধানের পরেও আমি আপনাকে শুরু করব।

এই জাতীয় কিছু সম্পর্কিত একটি ভাল (উত্তর) প্রশ্ন এখানে আছে

পাশাপাশি এখানে এন এবং এন + তৈরি করা লোকদের একটি নিবন্ধ ।

উল্লেখ করার মতো নয়, আপনি ভাল ওল 'ফলব্যাক প্রতি পিক্সেল সংঘর্ষ পেয়েছেন

আমি আন্তরিকভাবে সন্দেহ করি যে কারও কাছে প্রতিটি এবং প্রতিটি ধরণের সংঘর্ষের তালিকা রয়েছে তবে এটি আপনাকে শুরু করতে সহায়তা করবে।

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


আমি আমার সংঘাতের ভিত্তিতে যে পদ্ধতিটি যুক্ত করতে ভুলেছি (হুল ডিজাইন ব্যবহার করে প্রতি-পিক্সেল) সংরক্ষণাগারটি ক্ষমা করুন, মূল সাইটটি ওয়েবসাইট স্বর্গে গেছে। web.archive.org/web/20090126230334/http://www.ziggyware.com/…
ইলেক্ট্রোফ্লেমে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.