3 #include"CreaImageComplement.h"
5 //-------------------------------------------------------------------------------------------
6 CreaImageComplement::CreaImageComplement()
9 complementcreaimage = NULL;
10 transformToComplementCreaImage = vtkTransform::New();
11 transformToComplementCreaImage->Identity();
14 //-------------------------------------------------------------------------------------------
15 CreaImageComplement::~CreaImageComplement()
17 transformToComplementCreaImage->Delete();
20 //-------------------------------------------------------------------------------------------
21 void CreaImageComplement::SetBaseCreaImage(CreaImage* creaimage)
23 basecreaimage = creaimage;
26 //-------------------------------------------------------------------------------------------
27 void CreaImageComplement::SetComplementCreaImage(CreaImage* creaimage)
29 complementcreaimage = creaimage;
32 //-------------------------------------------------------------------------------------------
33 vtkTransform *CreaImageComplement::GetvtkTransformToComplementImage()
35 return transformToComplementCreaImage;
39 //-------------------------------------------------------------------------------------------
40 double CreaImageComplement::GetVoxelFromComplementImage_In_BaseCreaImage_Universe(double x,double y, double z)
50 transformToComplementCreaImage->TransformPoint( pIn , pOut );
52 complementcreaimage->GetImage()->GetExtent(ext);
53 int px = round(pOut[0]);
54 int py = round(pOut[1]);
55 int pz = round(pOut[2]);
56 if ( (px>=ext[0]) && (px<=ext[1]) &&
57 (py>=ext[2]) && (py<=ext[3]) &&
58 (pz>=ext[4]) && (pz<=ext[5]) )
60 unsigned short *p = (unsigned short*) complementcreaimage->GetImage()->GetScalarPointer( px , py ,pz );
67 //-------------------------------------------------------------------------------------------
68 void CreaImageComplement::Update()
70 if (basecreaimage!=NULL)
72 vtkTransform *transform;
73 vtkMatrix4x4 *inversTransformComplementImage = vtkMatrix4x4::New();
74 vtkTransform* tmpTransformComplementCreaImage = vtkTransform::New();
76 basecreaimage -> Update();
77 complementcreaimage -> Update();
79 transform = basecreaimage -> GetvtkTransform();
80 tmpTransformComplementCreaImage = complementcreaimage -> GetvtkTransform();
82 tmpTransformComplementCreaImage -> GetInverse( inversTransformComplementImage );
84 transformToComplementCreaImage -> PostMultiply();
85 transformToComplementCreaImage -> Identity();
87 transformToComplementCreaImage -> Concatenate( transform );
88 transformToComplementCreaImage -> Concatenate( inversTransformComplementImage );
89 transformToComplementCreaImage -> Update();
91 inversTransformComplementImage -> Delete();
92 tmpTransformComplementCreaImage -> Delete();
95 transformToComplementCreaImage->Identity();