2

現在、私はC#でベクトルクラスに取り組んでおり、2つのベクトル間の補間のための関数をどのように実装したいかを理解しなければならないところに来ています。最初は、関数をベクトル クラスに直接実装することを思いつきました...

public class Vector3D
{
    public static Vector3D LinearInterpolate(Vector3D vector1,
        Vector3D vector2, double factor) { ... }

    public Vector3D LinearInterpolate(Vector3D other, double factor { ... }
}

(私は常に両方を提供しています: パラメーターとして 2 つのベクトルを持つ静的メソッドと、パラメーターとして 1 つのベクトルのみを持つ非静的メソッド)

...しかし、補間は実際にはベクトルでのみ使用できるものではないため、拡張メソッド (たとえば、「補間」と呼ばれる別のクラスで定義) を使用するという考えが浮かびました。したがって、これは別の解決策になる可能性があります。

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
}

だから、どちらのデザインがいいのか、よくわからない……あと、こういうものに決定的なルールがあるのか​​、それとも個人的にどちらが好きかということなのか……でも、どうしても聞きたい。あなたの意見、より良いものは何ですか(そして可能であればその理由;))。

4

1 に答える 1