- vtkPoints* surfacePoints = vtkPoints::New();
- vtkCellArray* surfaceCells = vtkCellArray::New();
- int counter=0;
-
- if(imageType == VTK_CHAR)
- {
- // pointers to get into the image
- char* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(char*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(char*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_CHAR_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
- }
- else if(imageType == VTK_SIGNED_CHAR)
- {
- // pointers to get into the image
- signed char* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(signed char*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(signed char*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_SIGNED_CHAR_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
-
- }
- else if(imageType == VTK_UNSIGNED_CHAR)
- {
- // pointers to get into the image
- unsigned char* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(unsigned char*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(unsigned char*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_UNSIGNED_CHAR_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
- }
- else if(imageType == VTK_SHORT)
- {
- // pointers to get into the image
- short* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(short*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(short*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_SHORT_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
-
- }
- else if(imageType == VTK_UNSIGNED_SHORT)
- {
- // pointers to get into the image
- unsigned short* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(unsigned short*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(unsigned short*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_UNSIGNED_SHORT_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
-
- }
- else if(imageType == VTK_INT)
- {
- // pointers to get into the image
- int* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(int*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(int*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_INT_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
-
- }
- else if(imageType == VTK_UNSIGNED_INT)
- {
- // pointers to get into the image
- unsigned int* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(unsigned int*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)
- {
- for(j=0;j<sy;j++)
- {
- for(k=0;k<sz;k++)
- {
-
- // we get the pointer to the position (i,j,k)y that way we can get the position of the point in the surface
- dataImagePointer=(unsigned int*)imageData->GetScalarPointer(i,j,k);
-
- sum1=(int)(dataImagePointer[0]) + (int)(dataImagePointer[1]) + (int)(dataImagePointer[2]);
- sum1=sum1/(3*VTK_UNSIGNED_INT_MAX);
-
- surfacePoints->InsertPoint(counter, i, j, sum1*height);
-
- counter ++;
- }
- }
- }
-
- //This cycle creates the cells of the surface
- int n =0;
- for(i=0;i<sx-1;i++)
- {
- for(j=0;j<sy-1;j++)
- {
- for(k=0;k<sz;k++)
- {
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+1);
- surfaceCells->InsertCellPoint(n+sy+1);
-
- surfaceCells->InsertNextCell(3);
- surfaceCells->InsertCellPoint(n);
- surfaceCells->InsertCellPoint(n+sy+1);
- surfaceCells->InsertCellPoint(n+sy);
-
- if(j<sy-2)
- {
- n++;
- }
- else
- {
- n=n+2;
- }
-
- }
- }
- }
-
- }
- else if(imageType == VTK_LONG)
- {
- // pointers to get into the image
- long* dataImagePointer=NULL;
-
- // we start where the image starts
- dataImagePointer=(long*)imageData->GetScalarPointer(0,0,0);
-
- /*
- Image Size
- */
- int ext[6];
- imageData->GetExtent(ext);
- int sx,sy,sz;
- sx=ext[1]-ext[0]+1;
- sy=ext[3]-ext[2]+1;
- sz=ext[5]-ext[4]+1;
-
- //-----------------
- //A3
- //-----------------
- //walking in the image
- int i=0,j=0,k=0;
- double sum1=0,sum2=0,sum3=0,sum4=0;
- for(i=0;i<sx;i++)