2012-02-21 284 views
0

我遇到一个小函数的问题,MathHelper.Lerp(float f1, float f2, float amount)。我试图完成的是这样的:我在我的程序中有一个DataTable,角度和值对应于这个角度值。当您选择表中不存在的角度时,我想使用线性插值来管理这一点。我想要的东西来代替我的第一个执行本该是这样的:MathHelper.Lerp C#(线性插值)

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

所以现在我有很多这样的。如果statments并愿与​​这样做的其他方式,问题是我很难获得功能,金额是多少?你会修改这个在我的实现一个很好的方式吗?

+0

在假设有在你的表中没有超自然的东西,我已经修改了你的问题:) – phoog 2012-02-21 14:39:32

回答

0

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