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