【问题标题】:MathHelper.Lerp C# (Linear Interpolation)MathHelper.Lerp C#(线性插值)
【发布时间】:2012-02-21 14:31:54
【问题描述】:

我在使用这个函数时遇到了一个小问题,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 执行此操作的另一种方法,问题是我很难获得函数,数量是多少?你会为我的实现以一种好的方式修改它吗?

【问题讨论】:

  • 假设你的桌子上没有超自然生物,我已经编辑了你的问题:)

标签: c# xna linear-interpolation


【解决方案1】:

金额是 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2014-02-03
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多