0

私は学校で重心座標について少し学んでいます。ポイントが三角形にあるかどうかを計算する以下のコードを見つけました。しかし、標準入力からポイントの値を入力できるように、コードを変更する方法がわかりません。私は何をすべきか?

public static bool PointInTriangle(ref Vector3 A, ref Vector3 B, ref Vector3 C, ref Vector3 P)
{
    // Prepare our barycentric variables
    Vector3 u = B - A;
    Vector3 v = C - A;
    Vector3 w = P - A;

    Vector3 vCrossW = Vector3.Cross(v, w);
    Vector3 vCrossU = Vector3.Cross(v, u);
    // Test sign of r
    if (Vector3.Dot(vCrossW, vCrossU) < 0)
         return false;

    Vector3 uCrossW = Vector3.Cross(u, w);
    Vector3 uCrossV = Vector3.Cross(u, v);

    // Test sign of t
    if (Vector3.Dot(uCrossW, uCrossV) < 0)
        return false;

    // At this piont, we know that r and t and both > 0
    float denom = uCrossV.Length;
    float r = vCrossW.Length / denom;
    float t = uCrossW.Length / denom;

    return (r <= 1 && t <= 1 && r + t <= 1);
}
4

1 に答える 1

0

簡単なアプリケーションを作成する方法については、このウォークスルーを参照してください。その後、パラメーターのプロンプトを表示する方法を説明するこれを見ることができます。これが完了したら、次を使用して関数を呼び出すことができます。

bool isInTrigangle = MyClass.PointInTriangle(a, b, c, p);

MyClassこの静的メソッドを持つクラスの名前がわからないので書きました。ref関数の署名を次のように変更したと思われるため、パラメーターも入れませんでした。

public static bool PointInTriangle(Vector3 A, Vector3 B, Vector3 C, Vector3 P)
于 2013-04-02T17:02:28.807 に答える