2012-02-21 5 views
0

У меня небольшая проблема с этой функцией, MathHelper.Lerp(float f1, float f2, float amount). То, что я пытаюсь выполнить, заключается в следующем: у меня есть DataTable в моей программе с углами и значение, соответствующее этому значению угла. Когда вы выбираете угол, отсутствующий в таблице, я хочу использовать Linear Interpolation для управления этим. Я хочу что-то, чтобы заменить мою первую реализацию этого, который выглядел так: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 и хотел бы получить другой способ сделать это с MathHelper.Lerp, проблема в том, что я с трудом получая функцию, какая сумма? И бы вы изменили это в хорошем смысле для моей реализации?

+0

В предположении, что не существует ни одного сверхъестественных существ в вашей таблице, я редактировал свой вопрос :) – phoog

ответ

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); 
Смежные вопросы