目前我正在研究 C# 中的向量类,现在我要说到点子上了,我必须弄清楚,我想如何实现两个向量之间的插值函数。起初我想将这些函数直接实现到向量类中......
public class Vector3D
{
public static Vector3D LinearInterpolate(Vector3D vector1,
Vector3D vector2, double factor) { ... }
public Vector3D LinearInterpolate(Vector3D other, double factor { ... }
}
(我总是同时提供:一个静态方法,两个向量作为参数,一个非静态方法,只有一个向量作为参数)
...但后来我有了使用扩展方法的想法(例如,在一个名为“插值”的单独类中定义),因为插值实际上并不是仅可用于向量的东西。所以这可能是另一种解决方案:
public class Vector3D { ... }
public static class Interpolation
{
public static Vector3D LinearInterpolate(this Vector3D vector,
Vector3D other, double factor) { ... }
}
因此,这里有一个示例,您将如何使用不同的可能性:
{
var vec1 = new Vector3D(5, 3, 1);
var vec2 = new Vector3D(4, 2, 0);
Vector3D vec3;
vec3 = vec1.LinearInterpolate(vec2, 0.5); //1
vec3 = Vector3D.LinearInterpolate(vec1, vec2, 0.5); //2
//or with extension-methods
vec3 = vec1.LinearInterpolate(vec2, 0.5); //3 (same as 1)
vec3 = Interpolation.LinearInterpolation(vec1, vec2,
0.5); //4
}
所以我真的不知道哪个设计更好......我也不知道这样的事情是否有最终的规则,或者它是否只是个人更喜欢的东西......但我真的很想听听你的意见,什么更好(如果可能的话,为什么;))。