我需要在C#中进行三线性插值,我一直在搜索并在C ++中找到了示例。
示例在这里:http://www.siafoo.net/snippet/33,但它是在C ++中。
我需要c#或Someboy中的例子,他们可以将代码翻译成C#,因为我已经尝试过但我不知道。
答案 0 :(得分:3)
这是一个密切的音译,所以你可以理解,但显然不是好的C#代码。
public static class Interpolator
{
public static double Linear(double target, params double[] values)
{
return target * values[0] + (1.0 - target) * values[1];
}
public static double Bilinear(double[] target, params double[] values)
{
var prime = new[]
{
Linear(target[1], values),
Linear(target[1], values.Skip(2).Take(2).ToArray())
};
return Linear(target[0], prime);
}
public static double Trilinear(double[] target, params double[] values)
{
var prime = new[]
{
Bilinear(target, values),
Bilinear(target.Skip(1).ToArray(), values.Skip(4).ToArray())
};
return Linear(target[2], prime);
}
}
注意:由于C#具有泛型而不是模板,因此无法将此代码概括为T类型.C ++编译器可以在运行时检查类型T实现了所需的运算符,但是没有C#类型约束可以让您只将数字类型替换为T.由于编译器无法解析运算符,因此无法使用泛型。