开发者

Away 3D Face Link

I'm recently playing with Away3D Li开发者_开发技巧brary and have a problem in finding Face center in Away3D. Why Away3DLite has a face.center feature while Away3D doesn't have it ? and what is the alternative solution for this ?


If you want to find the center of a face, it's simply the average position of all the vertices making up that face:

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;
}

The above is a very simple function to calculate an average, although on a 3D vector instead of a simple scalar number. That average is the center of all the vertices in the face.

If you need to do this a lot, optimize the method by preventing it from allocating a vector (by passing in a vector to which the return values should be written) and create a temporary variable for the vertex list length instead of dereferencing it through two object references like min (f and vertices), which is unnecessarily heavy.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜