git-svn-id: svn://db.shs.com.ru/libs@73 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user