void Mesh::normalizeBoundingBox() { int i; vector<Vector3> positions; for(i = 0; i < (int)vertices.size(); ++i) { positions.push_back(vertices[i].pos); } Rect3 boundingBox = Rect3(positions.begin(), positions.end()); double cscale = .9 / boundingBox.getSize().accumulate(ident<double>(), maximum<double>()); Vector3 ctoAdd = Vector3(0.5, 0.5, 0.5) - boundingBox.getCenter() * cscale; for(i = 0; i < (int)vertices.size(); ++i) { vertices[i].pos = ctoAdd + vertices[i].pos * cscale; } toAdd = ctoAdd + cscale * toAdd; scale *= cscale; }