void Mesh::normalize()
{
using namespace std;
unsigned int i;
Vec3 oSize(0,0,0);
// calculate center point
for (i = 0; i < mVertices.size(); i++) {
oSize += mVertices.at(i)->getLocal();
}
Vec3 oCenter(0,0,0);
oCenter = (oSize / (mVertices.size()));
mCenterPoint.setLocal(oCenter);
Vec3 oVec3;
float fMaxDeviation = 0;
// calculate bounds
for (i = 0; i < mVertices.size(); i++)
{
oVec3 = mVertices.at(i)->getLocal();
// get max
fMaxDeviation = max(fMaxDeviation, oVec3.getX());
fMaxDeviation = max(fMaxDeviation, oVec3.getY());
fMaxDeviation = max(fMaxDeviation, oVec3.getZ());
// move to average position
mVertices.at(i)->setLocal(oVec3 - oCenter);
}
// normalize scale (0 - 1.0)
for (i = 0; i < mVertices.size(); i++)
{
oVec3 = mVertices.at(i)->getLocal();
mVertices.at(i)->setLocal(oVec3 /= fMaxDeviation);
}
}