git-svn-id: svn://db.shs.com.ru/libs@73 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2015-12-15 10:35:51 +00:00
parent 0ae2fbfa6f
commit e40db20368
4 changed files with 34 additions and 19 deletions

View File

@@ -281,3 +281,33 @@ bool GLVBO::loadFromFile(const QString & filename) {
}
return false;
}
Box3D GLVBO::boundingBox() const {
if (vertices_.size() < 3) return Box3D();
int vcnt = vertices_.size() / 3;
//qDebug() << "calculateBinormals" << vcnt << tcnt << vertices_.size() << texcoords_.size() << "...";
GLfloat mix, miy, miz, max, may, maz;
Vector3d v0(vertices_[0], vertices_[1], vertices_[2]);
mix = max = v0.x;
miy = may = v0.y;
miz = maz = v0.z;
Box3D bound;
for (int t = 1; t < vcnt; ++t) {
int vi = t*3;
Vector3d v(vertices_[vi + 0], vertices_[vi + 1], vertices_[vi + 2]);
if (mix > v.x) mix = v.x;
if (max < v.x) max = v.x;
if (miy > v.y) miy = v.y;
if (may < v.y) may = v.y;
if (miz > v.z) miz = v.z;
if (maz < v.z) maz = v.z;
}
bound.x = (mix + max) / 2.;
bound.y = (miy + may) / 2.;
bound.z = (miz + maz) / 2.;
bound.length = max - mix;
bound.width = may - miy;
bound.height = maz - miz;
return bound;
}