X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FTransformer.cxx;h=c901362cb8d3bdd50701014a36b314480b1a06aa;hb=1a574b510e27eb5b5f00bd37bf451cedd1b0a8d4;hp=8c34e09933102e2fc91fe74560ab54d84326fd10;hpb=ee36cca663d9492ba5582b3621c696db9fb2d803;p=creaRigidRegistration.git diff --git a/lib/Transformer.cxx b/lib/Transformer.cxx index 8c34e09..c901362 100644 --- a/lib/Transformer.cxx +++ b/lib/Transformer.cxx @@ -15,10 +15,9 @@ Transformer::Transformer() //If the transform already exists, we delete it before we create a new transform //and set the matrix with the identity matrix _transform= vtkTransform::New(); - vtkMatrix4x4 *_matrix = vtkMatrix4x4::New(); + _matrix = vtkMatrix4x4::New(); _matrix->Identity(); - _transform->SetMatrix(_matrix); - + _transform->SetMatrix(_matrix); } /* @@ -28,6 +27,7 @@ Transformer::~Transformer() { //We delete the existing transform if (_transform != NULL ) { _transform->Delete(); } + if (_matrix != NULL ) { _matrix->Delete(); } } /* @@ -92,12 +92,33 @@ vtkTransform *Transformer::GetResult() MAKES THE TRANSFORMATIONS */ void Transformer::Run() -{ +{ _transform->Identity(); - _transform->Translate(_centerPoint[0], _centerPoint[1], _centerPoint[2]); + _transform->PostMultiply(); + if(_centerPoint.size() < 3) + { + _transform->Translate(-_centerPoint[0], -_centerPoint[1], 0); + std::cout << "NTU Transformer2D Center Points: " << _centerPoint[0] << " " << _centerPoint[1] << std::endl; + } + else + { + _transform->Translate(-_centerPoint[0], -_centerPoint[1], -_centerPoint[2]); + std::cout << "NTU Transformer2D Center Points: " << _centerPoint[0] << " " << _centerPoint[1] << " " << _centerPoint[2] << std::endl; + } - _transform->Scale(_scaleX, _scaleY,_scaleZ); _transform->RotateWXYZ(_angle, 0, 0, 1); - + //std::cout << "NTU Transformer2D Angle: " << _angle << std::endl; + + if(_scaleX < 0 || _scaleY < 0 || _scaleZ < 0) + { + _transform->Scale(100, 100, 100); + //std::cout << "NTU Transformer2D Scale: " << _scaleX << " " << _scaleY << " " << _scaleZ << std::endl; + } + else + { + _transform->Scale(_scaleX, _scaleY,_scaleZ); + //std::cout << "NTU Transformer2D Scale: " << _scaleX << " " << _scaleY << " " << _scaleZ << std::endl; + } + _transform->Inverse(); _transform->Update(); }