আমি কীভাবে দোলের দুলটি অনুকরণ করব?


9

আমি দোলের মতো পেছনে দুলতে ওজন নিয়ে একটি দড়ি অনুকরণ করতে চাই। যে কোনও প্রকৃত পদার্থবিজ্ঞান ওভারকিল; এটি কেবল অবিরাম একই গতির পুনরাবৃত্তি করছে।

আমি যা খুঁজছি তার অনুরূপ জিকিউরিয়ের একটি "সুইং" স্বাচ্ছন্দ্য রয়েছে। এটা কিভাবে কাজ করে?

আমি একটি কোণ থেকে অন্য কোণে ঘোরার কথা ভাবছিলাম Math.easeOutExpo, তবে সত্যিকারের দুলটি আরও সহজভাবে ...


2
দুলের কৌণিক গতিতে একটি সাইন কার্ভ ফিড রাখুন, যেমন শূন্য-পয়েন্টটি শিখরে থাকে এবং সর্বাধিক বেগের মান নীচে থাকে।
শটগান নিনজা

উত্তর:


10

ঠিক আছে, আপনাকে কিছুটা পদার্থবিজ্ঞান ব্যবহার করতে হবে তবে আপনাকে কোনও পদার্থবিজ্ঞানের সিমুলেট করার দরকার নেই । দুলের গতির জন্য সূত্র রয়েছে যা আপনি সহজেই আপনার দুলের ঘূর্ণন সেট করতে ব্যবহার করতে পারেন। ছোট দোলের জন্য, মোশনটি সাধারণ সুরেলা গতির সাথে প্রায় করা যায় ।

একটি নির্দিষ্ট সময়ে কৌণিক স্থানচ্যুতি এর সাথে প্রায় অনুমান করা যায়:

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

এটি একটি সর্বনিম্ন সর্বোচ্চ θ এর জন্য সবচেয়ে নির্ভুল, তবে সম্ভবত আপনার উদ্দেশ্যগুলির জন্য যথেষ্ট সঠিক হবে। বর্তমান সময় লাগে এমন একটি ফাংশন তৈরি করুন এবং আপনার দুলটি ঘোরানো উচিত এমন কোণটি আউটপুট করে এবং সেই পরিমাণে আপনার স্প্রিটটি ঘোরান।


4

সোজা-ফরোয়ার্ড গ্রেড 11 ট্রিগ এবং পদার্থবিজ্ঞান থেকে প্রাপ্ত এখানে একটি নো ট্রিগ্যাল গণনা দেওয়া হচ্ছে। এটি ধরে নিয়েছে যে উত্সটিটি দুলের ঝাঁকের সাসপেনশনের সর্বনিম্ন বিন্দু, এল এল দুলের দৈর্ঘ্য এবং y এর স্বাভাবিক গ্রাফিক্স কনভেনশনটি নীচে বৃদ্ধি পাচ্ছে এবং x ডানদিকে বৃদ্ধি পেয়েছে:

আপডেট: আমি প্রাথমিকভাবে yAcceleration জগাখিচুড়ি করেছি; এটি সহজ।
আপডেট # 2 : সুস্পষ্ট সময় নিয়ন্ত্রণ যুক্ত করা হয়েছে এবং পরিমাপের একক যুক্ত করা হয়েছে।

const float gravity = 9.8;     // units of metres/sec/sec
const float deltaT  = 0.001;   // equals 0.001 sec or 1 millisecond

var xVelocity = 0.010;         // units metres/sec equals 10 cm/sec 
var x = 0.0;                   // units metres
var y = 0.0;                   // units metres

while (true) {
  var xAcceleration = -gravity * (x/L) * (L-y)/L;

  x += (xVelocity + (xAcceleration/2 * deltaT)) * deltaT;
  y  = Math.SQRT(L*L - x*x) - L; 

  xVelocity += xAcceleration * deltaT;
}

2
সমীকরণে সময় নিখোঁজ।
মাইক সেমদার

@ মাইকসেমদার: সময়ের এককটি অ্যানিমেশন চক্র হিসাবে নির্ধারিত হয়, যাই হোক না কেন। কেন কেউ অন্যভাবে এটি করবে?
পিটার জেরকেন্স

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

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

2
ভাল :) গতিবেগ থেকে "স্থানচ্যুতি" পাওয়ার জন্য বেগটি অবশ্যই "ডেল্টাটি" দিয়ে গুণিত করতে হবে, সুতরাং এটি "এক্স"
-তে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.