void vtkSlicer::RectilinearGridExecute(void) { vtkRectilinearGrid *rg = (vtkRectilinearGrid *) GetInput(); int pt_dims[3]; rg->GetDimensions(pt_dims); if (pt_dims[0] <= 1 || pt_dims[1] <= 1 || pt_dims[2] <= 1) { GeneralExecute(); return; } vtkIdType nCells = rg->GetNumberOfCells(); vtkCellData *inCD = rg->GetCellData(); vtkPointData *inPD = rg->GetPointData(); vtkPolyData *output = GetOutput(); vtkIdType ptSizeGuess = (this->CellList == NULL ? (int) pow(float(nCells), 0.6667f) * 5 + 100 : CellListSize*5 + 100); vtkSurfaceFromVolume sfv(ptSizeGuess); int tx = rg->GetXCoordinates()->GetDataType(); int ty = rg->GetYCoordinates()->GetDataType(); int tz = rg->GetZCoordinates()->GetDataType(); bool same = tx == ty && ty == tz; if(same && tx == VTK_FLOAT) { vtkStructuredCreateTriangles<float, RectSliceFunction<float> >( sfv, this->CellList, this->CellListSize, nCells, pt_dims, RectSliceFunction<float>( rg->GetXCoordinates(), rg->GetYCoordinates(), rg->GetZCoordinates(), this->Origin, this->Normal) ); } else if(same && tx == VTK_DOUBLE) { vtkStructuredCreateTriangles<double, RectSliceFunction<double> >( sfv, this->CellList, this->CellListSize, nCells, pt_dims, RectSliceFunction<double>( rg->GetXCoordinates(), rg->GetYCoordinates(), rg->GetZCoordinates(), this->Origin, this->Normal) ); } else { vtkStructuredCreateTriangles<double, GeneralRectSliceFunction >( sfv, this->CellList, this->CellListSize, nCells, pt_dims, GeneralRectSliceFunction( rg->GetXCoordinates(), rg->GetYCoordinates(), rg->GetZCoordinates(), this->Origin, this->Normal) ); } sfv.ConstructPolyData(inPD, inCD, output, pt_dims, rg->GetXCoordinates(), rg->GetYCoordinates(), rg->GetZCoordinates()); }
void vtkSlicer::StructuredGridExecute(void) { vtkStructuredGrid *sg = (vtkStructuredGrid *) GetInput(); int pt_dims[3]; sg->GetDimensions(pt_dims); if (pt_dims[0] <= 1 || pt_dims[1] <= 1 || pt_dims[2] <= 1) { GeneralExecute(); return; } vtkIdType nCells = sg->GetNumberOfCells(); vtkPoints *inPts = sg->GetPoints(); vtkCellData *inCD = sg->GetCellData(); vtkPointData *inPD = sg->GetPointData(); vtkPolyData *output = GetOutput(); vtkIdType ptSizeGuess = (this->CellList == NULL ? (int) pow(float(nCells), 0.6667f) * 5 + 100 : CellListSize*5 + 100); vtkSurfaceFromVolume sfv(ptSizeGuess); if(inPts->GetDataType() == VTK_FLOAT) { vtkStructuredCreateTriangles<float, SliceFunction<float> >( sfv, this->CellList, this->CellListSize, nCells, pt_dims, SliceFunction<float>(pt_dims, inPts, this->Origin, this->Normal) ); } else if(inPts->GetDataType() == VTK_DOUBLE) { vtkStructuredCreateTriangles<double, SliceFunction<double> >( sfv, this->CellList, this->CellListSize, nCells, pt_dims, SliceFunction<double>(pt_dims, inPts, this->Origin, this->Normal) ); } else { vtkStructuredCreateTriangles<double, GeneralSliceFunction >( sfv, this->CellList, this->CellListSize, nCells, pt_dims, GeneralSliceFunction(pt_dims, inPts, this->Origin, this->Normal) ); } sfv.ConstructPolyData(inPD, inCD, output, inPts); }
int vtkVisItContourFilter::RequestData( vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) { vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); vtkDataSet *input = vtkDataSet::SafeDownCast( inInfo->Get(vtkDataObject::DATA_OBJECT())); if (!input) { return 0; } vtkInformation *outInfo = outputVector->GetInformationObject(0); vtkPolyData *output = vtkPolyData::SafeDownCast( outInfo->Get(vtkDataObject::DATA_OBJECT())); if (!output) { return 0; } int do_type = input->GetDataObjectType(); if (do_type == VTK_RECTILINEAR_GRID) { return RectilinearGridExecute(input, output); } else if (do_type == VTK_STRUCTURED_GRID) { return StructuredGridExecute(input, output); } else if (do_type == VTK_UNSTRUCTURED_GRID) { return UnstructuredGridExecute(input, output); } else { return GeneralExecute(input, output); } }
void vtkSlicer::Execute() { vtkDataSet *input = GetInput(); int do_type = input->GetDataObjectType(); if (do_type == VTK_RECTILINEAR_GRID) { RectilinearGridExecute(); } else if (do_type == VTK_STRUCTURED_GRID) { StructuredGridExecute(); } else if (do_type == VTK_UNSTRUCTURED_GRID) { UnstructuredGridExecute(); } else { GeneralExecute(); } }