git-svn-id: svn://db.shs.com.ru/libs@631 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -310,20 +310,33 @@ uint Mesh::hash() const {
|
||||
|
||||
|
||||
void Mesh::translatePoints(const QVector3D & dp) {
|
||||
if (vertices_.isEmpty()) return;
|
||||
int vcnt = vertices_.size();
|
||||
for (int i = 0; i < vcnt; ++i) {
|
||||
vertices_[i] += dp;
|
||||
}
|
||||
changed = hash_changed = true;
|
||||
QMatrix4x4 m;
|
||||
m.translate(dp);
|
||||
transformPoints(m);
|
||||
}
|
||||
|
||||
|
||||
void Mesh::scalePoints(const QVector3D & dp) {
|
||||
QMatrix4x4 m;
|
||||
m.scale(dp);
|
||||
transformPoints(m);
|
||||
}
|
||||
|
||||
|
||||
void Mesh::rotatePoints(const double & angle, const QVector3D & a) {
|
||||
QMatrix4x4 m;
|
||||
m.rotate(angle, a);
|
||||
transformPoints(m);
|
||||
}
|
||||
|
||||
|
||||
void Mesh::transformPoints(const QMatrix4x4 & mat) {
|
||||
if (vertices_.isEmpty()) return;
|
||||
int vcnt = vertices_.size();
|
||||
int vcnt = vertices_.size(), ncnt = normals_.size();
|
||||
for (int i = 0; i < vcnt; ++i) {
|
||||
vertices_[i] *= dp;
|
||||
vertices_[i] = (mat * QVector4D(vertices_[i], 1)).toVector3D();
|
||||
if (i < ncnt)
|
||||
normals_[i] = (mat * QVector4D(normals_[i], 0)).toVector3D();
|
||||
}
|
||||
changed = hash_changed = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user