rts_vtkFunctions.h
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "vtkImageData.h"
#include "rtsVolume.h"
#include "rtsImplicit3D.h"
/*vtkImageData* rtsVolume2vtkImageData(rtsVolume* inputVolume, int data_type)
{
vtkImageData* outputImageData = vtkImageData::New();
outputImageData->SetScalarType(data_type);
outputImageData->SetDimensions(inputVolume->get_dimx(), inputVolume->get_dimy(), inputVolume->get_dimz());
unsigned char* scalar_pointer = (unsigned char*)outputImageData->GetScalarPointer();
unsigned char* volume_pointer = inputVolume->get_bits();
unsigned int vol_size = inputVolume->get_dimx()*inputVolume->get_dimy()*inputVolume->get_dimz();
for(int i=0; i<vol_size; i++)
{
scalar_pointer[i] = volume_pointer[i];
}
return outputImageData;
}*/
template <class T>
vtkImageData* rtsImplicit3D2vtkImageData(rtsImplicit3D<T>* in_function, int data_type)
{
//create the vtkImageData class for storing a uniform grid
vtkImageData* outputImageData = vtkImageData::New();
//set the data type of the scalar field
outputImageData->SetScalarType(data_type);
//set the dimensions of the image data based on the function resolution
outputImageData->SetDimensions(in_function->DimX(), in_function->DimY(), in_function->DimZ());
//get a pointer to the scalar field data and the function data
unsigned char* scalar_pointer = (unsigned char*)outputImageData->GetScalarPointer();
unsigned char* volume_pointer = (unsigned char*)in_function->GetBits();
unsigned int vol_size;
switch(data_type)
{
case VTK_UNSIGNED_CHAR:
vol_size = sizeof(char)*in_function->DimX()*in_function->DimY()*in_function->DimZ();
break;
case VTK_DOUBLE:
vol_size = sizeof(double)*in_function->DimX()*in_function->DimY()*in_function->DimZ();
break;
default:
exit(1);
}
memcpy(scalar_pointer, volume_pointer, vol_size);
//for(int i=0; i<vol_size; i++)
//{
// scalar_pointer[i] = volume_pointer[i];
//}
return outputImageData;
}