- transform->PostMultiply();
- transform->Translate(-origin[0],-origin[1],-origin[2]);
- transform->RotateZ(zvalue);
- transform->Translate(origin[0],origin[1],origin[2]);
- mVtkImageReslice->Update();
+ int dim = this->GetNumberOfDimensions();
+ vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
+ transform->Identity();
+ for (int i = 0; i < mTransform.size(); i++)
+ transform->Concatenate(this->mTransform[i]);
+
+ vtkSmartPointer<vtkMatrix4x4> matrix = transform->GetMatrix();
+ matrix->Invert();
+ std::vector<std::vector<double> > direction0;
+ for (int i = 0; i < dim; i++) {
+ if (i != 3) {
+ std::vector<double> direction1;
+ for (int j = 0; j < dim; j++) {
+ if (j != 3)
+#if VTK_MAJOR_VERSION <= 6
+ direction1.push_back((*matrix)[i][j]);
+#else
+ direction1.push_back((*matrix).GetElement(i,j));
+#endif
+ }
+ direction0.push_back(direction1);
+ }
+ }
+ return direction0;