Herman Taniwan
Herman Taniwan

Reputation: 111

Away 3D Face Link

I'm recently playing with Away3D Library 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 ?

Upvotes: 0

Views: 256

Answers (1)

richardolsson
richardolsson

Reputation: 4071

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.

Upvotes: 1

Related Questions