/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: SGrid.cxx,v $ Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ // This example shows how to manually create a structured grid. // The basic idea is to instantiate vtkStructuredGrid, set its dimensions, // and then assign points defining the grid coordinate. The number of // points must equal the number of points implicit in the dimensions // (i.e., dimX*dimY*dimZ). Also, data attributes (either point or cell) // can be added to the dataset. // // #include "vtkActor.h" #include "vtkCamera.h" #include "vtkFloatArray.h" #include "vtkHedgeHog.h" #include "vtkMath.h" #include "vtkPointData.h" #include "vtkPoints.h" #include "vtkPolyDataMapper.h" #include "vtkProperty.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkStructuredGrid.h" int main() { int i, j, k, kOffset, jOffset, offset; float x[3], v[3], rMin=0.5, rMax=1.0, deltaRad, deltaZ; float radius, theta; static int dims[3]={13,11,11}; // Create the structured grid. vtkStructuredGrid *sgrid = vtkStructuredGrid::New(); sgrid->SetDimensions(dims); // We also create the points and vectors. The points // form a hemi-cylinder of data. vtkFloatArray *vectors = vtkFloatArray::New(); vectors->SetNumberOfComponents(3); vectors->SetNumberOfTuples(dims[0]*dims[1]*dims[2]); vtkPoints *points = vtkPoints::New(); points->Allocate(dims[0]*dims[1]*dims[2]); deltaZ = 2.0 / (dims[2]-1); deltaRad = (rMax-rMin) / (dims[1]-1); v[2]=0.0; for ( k=0; kInsertPoint(offset,x); vectors->InsertTuple(offset,v); } } } sgrid->SetPoints(points); points->Delete(); sgrid->GetPointData()->SetVectors(vectors); vectors->Delete(); // We create a simple pipeline to display the data. vtkHedgeHog *hedgehog = vtkHedgeHog::New(); hedgehog->SetInput(sgrid); hedgehog->SetScaleFactor(0.1); vtkPolyDataMapper *sgridMapper = vtkPolyDataMapper::New(); sgridMapper->SetInputConnection(hedgehog->GetOutputPort()); vtkActor *sgridActor = vtkActor::New(); sgridActor->SetMapper(sgridMapper); sgridActor->GetProperty()->SetColor(0,0,0); // Create the usual rendering stuff vtkRenderer *renderer = vtkRenderer::New(); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer(renderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); renderer->AddActor(sgridActor); renderer->SetBackground(1,1,1); renderer->ResetCamera(); renderer->GetActiveCamera()->Elevation(60.0); renderer->GetActiveCamera()->Azimuth(30.0); renderer->GetActiveCamera()->Zoom(1.25); renWin->SetSize(300,300); // interact with data renWin->Render(); iren->Start(); renderer->Delete(); renWin->Delete(); iren->Delete(); sgrid->Delete(); hedgehog->Delete(); sgridMapper->Delete(); sgridActor->Delete(); return 0; }