বড় ব-দ্বীপ সময়ের জন্য পদার্থবিজ্ঞানের সিমুলেশন পদ্ধতি?


9

কোন বড় পদার্থবিজ্ঞানের সিমুলেশন পদ্ধতিগুলি সত্যই বড় ব-দ্বীপ সময়ের জন্য (ঘন্টা থেকে কয়েক সপ্তাহ) উপযুক্ত?

তদতিরিক্ত, বড় এবং ছোট ব-দ্বীনের জন্য বিভিন্ন পদ্ধতির সংমিশ্রণে আমি কি কোনও সমস্যার মুখোমুখি হব?


1
এটি মূলত আপনার লক্ষ্য অঞ্চলের উপর নির্ভর করে। সেখানে আপনার আসল লক্ষ্য সম্পর্কে আরও কিছু না জেনে কিছু বলা শক্ত। খুব বিস্তৃত.
ক্রোমস্টার

এই প্রশ্ন সম্পর্কিত।
আনকো

নীতিগতভাবে, সঠিক টাইমস্কেল নির্ভর করে প্লেয়ারের অভিজ্ঞতা কী তার উপর। আপনি কি চান যে এটি সপ্তাহের টাইমসেকলে সঠিক হওয়া এবং প্লেয়ারটি এটির সাথে রিয়েল-টাইমে ইন্টারঅ্যাক্ট করতে পারে? খেলোয়াড় অনেকবার রিয়েল-টাইমে অভিজ্ঞতার ( যেমন প্লেয়ারের অভিজ্ঞতার এক সেকেন্ড রিয়েল-টাইমের এক সপ্তাহ) অভিজ্ঞতার সাথে সপ্তাহের সময়সীমার উপর কাজ করা পাওয়ার চেয়ে অনেক বেশি কঠিন ।
mklingen

যদি আপনি মেঘের গতিগুলি বা 10 মিটার প্রস্থের দশ মিটার প্রস্থের কোষগুলিতে থার্মোডাইনামিক ভেরিয়েবলগুলি অনুকরণ করে থাকেন তবে এটি যুক্তিসঙ্গত। তবে স্বাভাবিক স্কেলগুলিতে অনমনীয় শরীর, খুব বেশি নয়। আবেদন কি?
v.oddou

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

উত্তর:


5

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

সময়ের সাথে সামান্য এই সংহতকরণ আপনার প্রয়োজনীয় সমীকরণ সরবরাহ করে।

a = a
v = at + v0
s = .5at^2 + v0*t + s0

যেখানে: a = ত্বরণ, v = বেগ, v0 = প্রাথমিক বেগ, s = অবস্থান, s0 = প্রাথমিক অবস্থান, t = সময়

আপনি চাইলে এই কৌশলটি ব্যবহার করে আপনি মিলিসেকেন্ড থেকে কয়েক সপ্তাহ পর্যন্ত স্প্যান ব্যবহার করতে পারেন। তাদের মিশ্রন মধ্যে যত্ন গ্রহণ করা হবে v0এবং s0সমীকরণের প্যারামিটার।

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


সংঘর্ষ সম্পর্কে কি?
fread2281

সংঘর্ষগুলি পরিচালনা করার কৌশলগুলি অন্তর্ভুক্ত করার জন্য আমি উত্তরটি আপডেট করেছি।
মাইকেলহাউস

এটা মিথ্যা। অয়লার ইন্টিগ্রেশন ধ্রুবক সংহতকরণের জন্য বিচ্যুত হিসাবে পরিচিত, যখন ভারলেট (বা আরকে 2, আরকে 4) না করে।
v.oddou

@ v.oddou এই অনুকরণগুলি গেমসের জন্য বিবেচনা করে, আমি মনে করি না যে আপনার যথাযথতার প্রয়োজন হবে তা প্রয়োজনীয়। ভার্টেলের জন্য সংঘর্ষগুলি যুক্ত করার অতিরিক্ত জটিলতা এবং অসুবিধা অয়লার সংহতিকে একটি সেরা পছন্দ করে তোলে।
MichaelHouse

2

মহাকর্ষ সহ একটি উদাহরণ নিতে দিন।

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

void update( float dt )
{
   acceleration = G * m / r^2;
   velocity = velocity + acceleration * dt;
   position = position + velocity * dt;
}

হিসাবে dtছোট এবং ছোট পায়, আমাদের সিমুলেশন (যদিও যদি আরো এবং আরো সঠিক পায় dtখুবই ছোট পায় তারপর আমরা যখন বড় নম্বরে ক্ষুদ্র সংখ্যার যোগ করার স্পষ্টতা ত্রুটি সম্মুখীন করতে পারেন)।

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

void update( float dt )
{
   acceleration = G * m / r^2;
   velocity = velocity + acceleration * dt;
   position = position + velocity * dt;
}

// this is the function we call. The above function is a helper to this function.
void updateLargeDt( float dt )
{
    const float timeStep = 0.1;
    while( dt > timeStep   )
    {
        update( timeStep  );
        dt -= timeStep ;
    }

    update( dt );  // update with whatever dt is left over from above
}

সুতরাং এই কৌশলটির সাহায্যে timeStep আপনি যা প্রয়োজন খাঁটিতার সাথে সামঞ্জস্য করতে পারেন (এটিকে দ্বিতীয়, মিনিট, ঘন্টা বা পদার্থবিদ্যার একটি সঠিক প্রতিনিধিত্ব পেতে যা প্রয়োজন তা তৈরি করুন।


1

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

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

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

তবে, আরকে 4 এ সংঘর্ষগুলি বাস্তবায়ন করা খুব চ্যালেঞ্জিং হতে পারে ...

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