/* # --------------------------------------------------------------------- # # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image # pour la Sante) # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton # Previous Authors : Laurent Guigues, Jean-Pierre Roux # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil # # This software is governed by the CeCILL-B license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL-B # license as circulated by CEA, CNRS and INRIA at the following URL # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html # or in the file LICENSE.txt. # # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited # liability. # # The fact that you are presently reading this means that you have had # knowledge of the CeCILL-B license and that you accept its terms. # ------------------------------------------------------------------------ */ #include "vtkImageDataStrucPoints.h" #include "vtkStructuredPointsWriter.h" vtkImageDataStrucPoints::vtkImageDataStrucPoints() { } vtkImageDataStrucPoints::~vtkImageDataStrucPoints() { } void vtkImageDataStrucPoints::joinComponents(vtkImageData* imageX, vtkImageData* imageY, vtkImageData* imageZ) { imageY->Modified(); imageY->Update(); int ext[6]; imageY->GetWholeExtent(ext); int dim[3]; double spc[3];; dim[0]=ext[1]-ext[0]+1; dim[1]=ext[3]-ext[2]+1; dim[2]=ext[5]-ext[4]+1; std::cout<<"dim "<< dim[0] <<" "<< dim[1] <<" "<< dim[2] <GetSpacing(spc); double *ptrUCharX = (double *)imageX->GetScalarPointer(); double *ptrUCharY = (double *)imageY->GetScalarPointer(); double *ptrUCharZ = (double *)imageZ->GetScalarPointer(); long int sizeimage = dim[0]*dim[1]*dim[2]; vtkDoubleArray *array = vtkDoubleArray::New(); array->SetNumberOfTuples(sizeimage); array->SetNumberOfComponents(3); array->Allocate(sizeimage*3, 100 ); // ??? array->SetName("velocity"); double vx; double vy; double vz; int i; printf("EED vtkImageDataStrucPoints::joinComponents sizeimage%d\n", sizeimage ); for( i = 0 ; i < sizeimage ; i++ ) { vx = *ptrUCharX; vy = *ptrUCharY; vz = *ptrUCharZ; ptrUCharX++; ptrUCharY++; ptrUCharZ++; array->SetTuple3(i,vx, vy , vz ); } // for i _structuredPoints = vtkStructuredPoints::New(); _structuredPoints->SetDimensions(dim[0], dim[1], dim[2]); _structuredPoints->SetSpacing(spc); _structuredPoints->SetScalarTypeToDouble(); _structuredPoints->SetNumberOfScalarComponents(3); _structuredPoints->GetPointData()->SetVectors(array); _structuredPoints->GetPointData()->SetNumberOfTuples(sizeimage); _structuredPoints->Modified(); _structuredPoints->Update(); /* _structuredPoints->Print(cout); vtkStructuredPointsWriter *writer2 = vtkStructuredPointsWriter::New(); writer2->SetFileName("/home/davila/tmp/VectorfromCal_EED_ups.vtk"); //writer->SetFileTypeToBinary(); writer2->SetFileTypeToASCII(); writer2->SetTensorsName("VectorfromCal"); writer2->SetFieldDataName("GlyphVector"); writer2->SetScalarsName("Scalar"); writer2->SetInput(_structuredPoints); writer2->Write(); */ } vtkStructuredPoints* vtkImageDataStrucPoints::getStructuredPoints() { return _structuredPoints; }