2012-02-21 3 views
0

J'ai un petit problème avec cette fonction, MathHelper.Lerp(float f1, float f2, float amount). Ce que j'essaye d'accomplir est ceci: J'ai un DataTable dans mon programme avec des angles et une valeur correspondant à cette valeur d'angle. Lorsque vous choisissez un angle non présent dans le tableau, je veux utiliser l'interpolation linéaire pour gérer cela. Je veux quelque chose pour remplacer ma première mise en œuvre de ce qui ressemblait à ceci:MathHelper.Lerp C# (Interpolation linéaire)

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

Alors maintenant, j'ai beaucoup de ces cas statments et voudrais une autre façon de le faire avec le MathHelper.Lerp, problème est que je suis avoir du mal à obtenir la fonction, quelle est la quantité? Et voulez-vous modifier cela dans le bon sens pour ma mise en œuvre?

+0

En supposant qu'il n'y a pas des êtres surnaturels dans votre table, je l'ai modifié votre question :) – phoog

Répondre

0

La valeur est une valeur dans la plage 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. 

Je ne suis pas sûr de vouloir le faire ... Je pense est quelque chose comme ceci:

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