আমি কীভাবে ডিআইওয়াই পদার্থবিজ্ঞান শিখতে শুরু করছি এবং সবচেয়ে বেসিক স্তরে ইন্টিগ্রেশন বাস্তবায়ন সম্পর্কে আমার একটি প্রশ্ন রয়েছে (উদাহরণস্বরূপ এটি কোনও ইউরার বনাম আর কে 4 প্রশ্ন নয়)।
আমি প্রায় প্রতিটি উদাহরণে এসেছি এমন কিছু integrate()ফাংশন রয়েছে যা শেষ আপডেটের পরে টাইমস্টেপ পায় এবং শেষ আপডেটের পরে ত্বরণ (এবং / বা বেগ এবং / বা অবস্থান) আপডেট করে।
সরল আকারে: position += velocity * deltaTime
যাইহোক, আমি বুঝতে পারি না কেন এটি কেন এমনভাবে জমে থাকে যখন কোনও ফাংশন পরিবর্তন করে এটি সহজেই অর্জিত হতে পারে । উদাহরণস্বরূপ: getPosition = makeNewFunction()যা স্বাক্ষরযুক্ত এমন কোনও কিছু ফিরিয়ে দিতে পারে Time -> Positionএবং সেই ফাংশনের অভ্যন্তরীণ কাজগুলি উপযুক্ত গাণিতিক সূত্রের মাধ্যমে উত্পন্ন হয়।
এইভাবে, কোনও জমে থাকা নেই ... যখনই পজিশনটি অর্জন করা দরকার, এটি বর্তমান সময়ের সাথে সেই ফাংশনটিকে কল করে।
আমার নবাগত বোঝাপড়াটি হ'ল এটিও ত্রুটিগুলি এড়াতে পারে যা জমা হতে পারে ... সুতরাং এটি কেন কাজ করে না, আমি কী মিস করছি?
(fwiw আমি হয়নি একসাথে এই idea- ধারণার মৌলিক প্রমাণ করা এটি একই সময়ে কয়েক অন্যান্য বিষয় পরীক্ষা যদিও তাই এটি পরিষ্কার উদাহরণ নয়: https://github.com/dakom/ball-bounce-frp )
সম্পাদনা 1: মন্তব্যগুলিতে উল্লিখিত হিসাবে, সম্ভবত এটি উল্লেখ করা গুরুত্বপূর্ণ যে আমি এখনও ত্বরণ পরিবর্তন করার বিষয়ে, বা জার্ক এবং অন্যান্য জিনিসগুলির সাথে ডিল করতে শিখিনি যেগুলি ধ্রুবক ত্বরণের চেয়ে উচ্চতর অর্ডার ইন্টিগ্রেশন প্রয়োজন।
সম্পাদনা 2: এখানে ধারণা কিছু মৌলিক নমুনা কোড, এবং ছদ্ম জাভাস্ক্রিপ্ট সিনট্যাক্স - দয়া করে মনে রাখবেন getKinematicPositionহয় আংশিকভাবে প্রয়োগ তাই এটি ঠিক সময়ে একটি নতুন ফাংশন ফিরে আসছে -> অবস্থান:
আমি এখানে অবস্থানের জন্য আঁকড়ে আছি তবে এটি অন্য কিছু হতে পারে, যেমন getVelocityআমার ধারণা ...
getKinematicPosition = initialVelocity => acceleration => time =>
((.5 *acceleration) * (time * time)) + (initialVelocity * time);
getPosition = getKinematicPosition ([0,0,0]) (GRAVITY);
onTick = totalTime => {
position = getPosition (totalTime);
onCollision = () => {
getPosition = changeTheFunction(totalTime);
//changeTheFunction uses totalTime to base updates from 0
//it could use getKinematicPosition or something else entirely
}
}
