X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FTransformer.cxx;h=c901362cb8d3bdd50701014a36b314480b1a06aa;hb=6ab99c126654ed05ed2bea23b70ef9d73e90d784;hp=de53958696118363be844d93da39017921e52f88;hpb=aa1b23f7a0b103bc3fd8989c0e60b97697adbbc3;p=creaRigidRegistration.git diff --git a/lib/Transformer.cxx b/lib/Transformer.cxx index de53958..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,10 +92,33 @@ vtkTransform *Transformer::GetResult() MAKES THE TRANSFORMATIONS */ void Transformer::Run() -{ +{ _transform->Identity(); - _transform->Translate(_centerPoint[0], _centerPoint[1], _centerPoint[2]); - _transform->Scale(_scaleX, _scaleY,_scaleZ); + _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->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(); }