এলইআরপি - লিনিয়ার ইন্টারপোলেশন
আমি এই উত্তরটি কিছুদিন আগে একই ধরণের সমস্যার জন্য দিয়েছিলাম তবে এখানে আমরা যাচ্ছি:
লিনিয়ার ইন্টারপোলেশন একটি ফাংশন যা আপনাকে অগ্রগতির ভিত্তিতে দুটি সংখ্যার মধ্যে একটি সংখ্যা দেয়। আপনি আসলে দুটি পয়েন্টের মধ্যে একটি পয়েন্ট পেতে পারেন।
দুর্দান্ত সূত্র - এটি কীভাবে গণনা করা যায়
সাধারণ এলইআরপি সূত্রটি দেওয়া হয় pu = p0 + (p1 - p0) * u
। কোথায়:
- পু: ফলাফল সংখ্যা
- p0: প্রাথমিক সংখ্যা
- p1: চূড়ান্ত সংখ্যা
- u: অগ্রগতি এটি শতাংশে দেওয়া হয়, 0 এবং 1 এর মধ্যে।
শতাংশ কীভাবে পাবেন
আপনি ভাবতে পারেন, "আমি এই শতাংশটি কীভাবে পেতে পারি !?" চিন্তা করবেন না। এটি এর মতো: শুরু ভেক্টরটি শেষ করতে পয়েন্টটি কত সময় লাগবে? ঠিক আছে, ইতিমধ্যে কেটে গেছে এমন সময় দ্বারা এটি ভাগ করুন। এটি আপনাকে শতাংশ দেবে।
দেখুন, এরকম কিছু: percentage = currentTime / finalTime;
ভেক্টর গণনা করা হচ্ছে
ফলস্বরূপ ভেক্টর পেতে, আপনাকে কেবল সূত্রটি দুটি বার প্রয়োগ করতে হবে, একটি এক্স উপাদানগুলির জন্য এবং একটি ওয়াই উপাদানটির জন্য। এটার মতো কিছু:
point.x = start.x + (final.x - start.x) * progress;
point.y = start.y + (final.y - start.y) * progress;
ভেরিয়েটের সময় গণনা করা হচ্ছে
আপনি আপনার পয়েন্টগুলি 0.5 পয়েন্টের গতিতে ভ্রমণ করতে চান, তাই না? সুতরাং যাক, একটি দীর্ঘ দূরত্ব একটি দীর্ঘ সময় ভ্রমণ করা হবে।
আপনি নিম্নলিখিত হিসাবে এটি করতে পারেন:
দূরত্বের দৈর্ঘ্য পান এর জন্য আপনার দুটি জিনিস প্রয়োজন। দূরত্বের ভেক্টর পান, তারপরে এটি একটি দৈর্ঘ্যের মানে রূপান্তর করুন।
distancevec = final - start;
distance = distancevec.length();
আমি আশা করি আপনি ভেক্টর গণিত জানেন। আপনি যদি না করেন তবে আপনি এই সূত্র ধরে একটি ভেক্টর দৈর্ঘ্য গণনা করতে পারেন d = sqrt(pow(v.x, 2) + pow(v.y, 2));
।
সময় লাগবে এবং চূড়ান্ত সময় আপডেট করবে। এই এক সহজ। আপনি প্রতিটি টিকটি করতে চান হিসাবে আপনি একটি 0.5 দৈর্ঘ্য পাবেন, আমাদের কেবল বিভক্ত করতে হবে এবং আমরা কত টিক্স পেয়েছি তা পেতে হবে।
finalTime = distance / 0.5f;
সম্পন্ন.
বিজ্ঞপ্তি: হতে পারে, এটি আপনার জন্য লক্ষ্যযুক্ত গতি নাও হতে পারে তবে এটি সঠিক। সুতরাং আপনার একটি লিনিয়ার চলাচল, এমনকি তির্যক চলগুলি। আপনি যদি x + = 0.5f, y + = 0.5f করতে চান তবে কোনও ভেক্টর গণিতের বইটি পড়ুন এবং আপনার পরিকল্পনাগুলি আবার পরীক্ষা করুন।
goal_dist
আপনারif
অবস্থা বলতে চাইছেন ?