0

最近、Away3D ライブラリで遊んでいますが、Away3D でフェイス センターを見つけるのに問題があります。Away3D にはないのに、Away3DLite には face.center 機能があるのはなぜですか? これに対する代替ソリューションは何ですか?

4

1 に答える 1

1

面の中心を見つけたい場合、それは単にその面を構成するすべての頂点の平均位置です。

function getFaceCenter(f : Face) : Vector3D
{
    var vert : Vertex;
    var ret : Vector3D = new Vector3D;

    for each (vert in f.vertices) {
        ret.x += vert.x;
        ret.y += vert.y;
        ret.z += vert.z;
    }

    ret.x /= f.vertices.length;
    ret.y /= f.vertices.length;
    ret.z /= f.vertices.length;

    return ret;
}

上記は平均を計算するための非常に単純な関数ですが、単純なスカラー数ではなく 3D ベクトルを使用しています。その平均は、顔のすべての頂点の中心です。

これを何度も行う必要がある場合は、メソッドがベクトルを割り当てないようにして (戻り値が書き込まれるベクトルを渡すことによって) メソッドを最適化し、頂点リストの長さの一時変数を作成します。 min (fおよびvertices) のようなオブジェクト参照は、不必要に重いものです。

于 2011-08-27T08:45:52.337 に答える