درون یابی خطی یا Lerp چیست unity c#

بسم الله الرحمن الرحیم

درون یابی خطی Vector3.Lerp

لرپ"lerp" مخفف "Linearly interpolates" است که به معنی درون یابی خطی معنا می شود .

Vector3. Lerp(Vector3 a, Vector3 b, float t)
Vector2. Lerp(Vector3 a, Vector3 b, float t)  

همانطور که در کد بالا می بینید lerp یک وکتور است که میتواند دو بعدی یا سه بعدی باشد .

برای کار با lerp باید دو vector به آن بدهید a به عنوان نقطه شروع و b به عنوان پایان خط و در نهایت یک float که باید عددی بین 0 و 1 باشد .

کاری که lerp می کند این است که یک خط فرضی بین دو وکتور ورودیa و b می کشد و نفطه t را در این خط برای شما پیدا میکند . اگر متغیر T مساوی یک باشد اخر خط را نشان می دهد اگر متغیر T صفر باشد ابتدای خط را نشان میدهد و اگر 0.5 باشد وسط خط را نشان می دهد و بقیه اعداد نیز به همین صورت. برای فهم بهتر به عکس زیر دقت کنید.


لرپ نامحدود -Vector3.LerpUnclamped

همانطور که در بالا گفتم عددی که به lerp میدهیم تا در نقط پیدا کند باید چیزی بین صفر ویک باشد اما اگر بخواهیم فراتر از آن برویم باید از دستور زیر استفاده کنیم .در صورت استفاده از دستور زیر اگر t بیشتر از یک باشد یک نقطه در راستای همان خط بین aوb اما فراتر را بر میگرداند.

Vector3 LerpUnclamped(Vector3 a, Vector3 b, float t);

لرپ رنگ ها -Color.Lerp

این فانکشن درواقع دو رنگ دریافت می کند و با توجه به عددی که به آن میدهید رنگ آن نقطه به خصوص بین این دو رنگ را به شما بر می گرداند.

Color.Lerp(Color a, Color b, float t);

فرمول Mathf.Lerp

فانکشنی دریگر در یونتی برای لرپ کردن بین دو عدد وجود دارد که جای مناسبی که نحوه کار کردن lerp را شرح بدهم.

 Lerp = A+(B-A)*T

همانطور که در فرمول بالا می بینید لرپ فقط یک عملیات ریاضی ساده را انجام میدهد عدد اول را منهای عدد دوم می کنید و ضرب درT که باید عددی بین صفر و یک باشد و در نهایت حاصل را با A جمع می کند .

در کد زیر هم فانکش لرپ برای استفاده ی اعداد تک بعدی را مشاهده می کنید که همانند قبلی ها نقطه شروع و پایان را میگرید و نقطه انتخابی شما "T" را برمیگرداند.

Mathf.Lerp(A, B, t)