0

この関数には小さな問題があり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必要です。問題は、関数を取得するのに苦労していることです。金額とは何ですか? そして、私の実装のためにこれを良い方法で修正してくれませんか?

4

1 に答える 1

0

Amount is a value in 0..1 range.

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. 

I'm not sure you want to do... I think is something like this:

Amount = (angle - 50)/(65-50);
InterpolatedValue = MathHelper.Lerp(row1.Value, row2.Value, Amount);
于 2012-02-21T14:41:56.453 に答える