MathHelper.Lerp C#(线性插值)

本文关键字:插值 线性 Lerp MathHelper | 更新日期: 2023-09-27 18:25:30

这个函数MathHelper.Lerp(float f1, float f2, float amount)有个小问题。我试图实现的是:我的程序中有一个DataTable,其中包含角度和与该角度值相对应的值。当您选择一个不在表中的角度时,我想使用"线性插值"来管理它。我想要一些东西来取代我的第一个实现,它看起来像这样:

else if(angle >= 50 && marklast < 65)
        {
            DataRow row1 = table.Rows.Find(50);
            DataRow row2 = table.Rows.Find(65);
            someVariable = SomeMethod(row1, row2);
        }

所以现在我有很多这样的If语句,我想用MathHelper.Lerp的另一种方法来做这件事,问题是我很难得到函数,量是多少?对于我的实现,你会以一种好的方式修改它吗?

MathHelper.Lerp C#(线性插值)

Amount是0..1范围内的值。

if it is 0 lerp return source value, 
if it is 1 lerp return target value, 
if it is a value between 0..1 lerp will return a linear interpolated value between the source and the target values. 

我不确定你想做什么…我想是这样的:

Amount = (angle - 50)/(65-50);
InterpolatedValue = MathHelper.Lerp(row1.Value, row2.Value, Amount);