void Mesh::Translate(Vector d) { Triangle *tri = tris; for(int i = 0; i < numTris; i++, tri++) { tri->Translate(d); } centroidChanged = true; }
void Mesh::Translate(float dx, float dy, float dz) { Triangle *tri = tris; for(int i = 0; i < numTris; i++, tri++) { tri->Translate(dx, dy, dz); } centroidChanged = true; }
void Mesh::SetRotation(Vector r) { Triangle *tri = tris, *ot = originalTris; Vector c = ComputeCentroid(); Vector o; for(int i = 0; i < numTris; i++, tri++, ot++) { *tri = *ot; tri->RotateAboutPoint(rotation + r, o); tri->Translate(c); tri->RecalcNormal(); } }
void Mesh::MoveTo(float x, float y, float z) { Triangle *tri = tris, *ot = originalTris; Vector c; for(int i = 0; i < numTris; i++, tri++, ot++) { *tri = *ot; tri->RotateAboutPoint(rotation, c); tri->Translate(x, y, z); tri->RecalcNormal(); } centroidChanged = true; }
void Mesh::Explode(float dist, float variance) { Vector c = ComputeCentroid(); Vector d; Triangle *tri = tris; float rand; variance *= 2; for(int i = 0; i < numTris; i++, tri++) { tri->ComputeCentroid(); d = tri->centroid - c; rand = (Random::randf() - 0.5f) * variance; d = d.Normalize() * (dist + rand); tri->Translate(d); } }