মানচিত্র মূল্য ফাংশন:
float mapValue( float inVal, float inFrom, float inTo, float outFrom, float outTo )
{
float inScale = (inFrom != inTo)
? ( ( inVal - inFrom ) / ( inTo - inFrom ) )
: 0.0f;
float outVal = outFrom + ( inScale * ( outTo - outFrom ) );
outVal = (outFrom < outTo )
? clamp( outVal, outFrom, outTo )
: clamp( outVal, outTo, outFrom );
return outVal;
}
এটি একটি মান নেয়, এটিকে একটি পরিসরের মধ্যে অনুপাতে রূপান্তর করে এবং তারপরে অন্য ব্যাপ্তির সাথে তুলনামূলকভাবে স্কেল করে। ডাবল-লার্পের মতো।
আপনি জিনিসটি স্বাভাবিক করতে এটি ব্যবহার করতে পারেন:
float minDamage = 0.0f; float maxDamage = 300.0f;
float normalisedDamage = mapValue(damange, minDamage, maxDamage, 0.0f, 1.0f);
অথবা আপনি এক ব্যাপ্তি থেকে অন্য রেঞ্জে রূপান্তর করতে পারেন:
float brakeStrength = mapValue(timeToCollision,
0.0f, 10.0f, // seconds
1.0f, 0.2f // brake values
);
দ্বিতীয় উদাহরণে লক্ষ্য করুন যে আউট রেঞ্জটি ইন-রেঞ্জের আলাদা অর্ডার।
এটি দেখতে অনেকটা ভাল লাগে না তবে আমি এই জায়গাটি জুড়ে এই ছোট্ট ফেলা ব্যবহার করি।