void CTiglTransformation::AddScaling(double sx, double sy, double sz) { // Matrix is: // // ( sx 0 0 0 ) // ( 0 sy 0 0 ) // ( 0 0 sz 0 ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(0, 0, sx); trans.SetValue(1, 1, sy); trans.SetValue(2, 2, sz); PreMultiply(trans); }
// Adds a translation to this transformation. Translation part // is stored in the last column of the transformation matrix. void CTiglTransformation::AddTranslation(double tx, double ty, double tz) { // Matrix is: // // ( 1 0 0 tx ) // ( 0 1 0 ty ) // ( 0 0 1 tz ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(0, 3, tx); trans.SetValue(1, 3, ty); trans.SetValue(2, 3, tz); PreMultiply(trans); }
void CTiglTransformation::AddRotationZ(double degreeZ) { double radianZ = DegreeToRadian(degreeZ); double sinVal = sin(radianZ); double cosVal = cos(radianZ); // Matrix is: // // ( cosVal -sinVal 0 0 ) // ( sinVal cosVal 0 0 ) // ( 0 0 1 0 ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(0, 0, cosVal); trans.SetValue(0, 1, -sinVal); trans.SetValue(1, 0, sinVal); trans.SetValue(1, 1, cosVal); PreMultiply(trans); }
void CTiglTransformation::AddRotationY(double degreeY) { double radianY = DegreeToRadian(degreeY); double sinVal = sin(radianY); double cosVal = cos(radianY); // Matrix is: // // ( cosVal 0 sinVal 0 ) // ( 0 1 0 0 ) // (-sinVal 0 cosVal 0 ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(0, 0, cosVal); trans.SetValue(0, 2, sinVal); trans.SetValue(2, 0, -sinVal); trans.SetValue(2, 2, cosVal); PreMultiply(trans); }
void CTiglTransformation::AddRotationX(double degreeX) { double radianX = DegreeToRadian(degreeX); double sinVal = sin(radianX); double cosVal = cos(radianX); // Matrix is: // // ( 1 0 0 0 ) // ( 0 cosVal -sinVal 0 ) // ( 0 sinVal cosVal 0 ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(1, 1, cosVal); trans.SetValue(1, 2, -sinVal); trans.SetValue(2, 1, sinVal); trans.SetValue(2, 2, cosVal); PreMultiply(trans); }
// Adds mirroring at yz plane void CTiglTransformation::AddMirroringAtYZPlane(void) { // Matrix is: // // ( -1 0 0 0 ) // ( 0 1 0 0 ) // ( 0 0 1 0 ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(0, 0, -1.0); PreMultiply(trans); }
// Adds projection an yz plane by setting the x coordinate to 0 void CTiglTransformation::AddProjectionOnYZPlane(void) { // Matrix is: // // ( 0 0 0 0 ) // ( 0 1 0 0 ) // ( 0 0 1 0 ) // ( 0 0 0 1 ) CTiglTransformation trans; trans.SetValue(0, 0, 0.0); PreMultiply(trans); }